写给游戏编程⾃学者的⼊门指南
python入门教程(非常详细)书在IT⼯程师和培训机构多如⽜⽑的时代,拜师学艺并不难。但⾃学编程对于毫⽆基础的同学来说却可能是个问题,相信有过类似经历的朋友都有⼀把⾟酸泪和⼀肚不吐不快的体会。让我们从⼀个故事说起…
故事
某君在⼀个普通⼤学读着⾃⼰不喜欢的专业,以打游戏、刷段⼦和睡觉度⽇,突然有⼀天想学点什么。学编程好像挺酷,⽽且听说IT⾏业充满了机会,没准⼀不⼩⼼就和⼤佬⼀起“改变世界”了。
那么第⼀个问题来了,他该选择什么语⾔?
是世界上最好的语⾔PHP?还是语⾔之母的C?幸好还知道个编程语⾔排⾏榜,到⼀看、⼏⼗种不带重样,这要逼死天秤座的⼩朋友。选PHP吧?上⾮诚勿扰都要被灭灯,⽽且就只能做个⽹页。万般纠结之后我们选C吧,听起来既⾼级⼜底层,说不准还能考个计算机⼆级。
接下来得⼲正事⼉了。在这个便捷的⽹络时代,⾃学可选择的⽅式⾮常丰富。除了在⽹络上收集资料、阅读⼲货外,某君还向⼀些前辈咨询了⾃学的⽅法。
⽹络上流传的编程学习⽅式有:
·看书(这是最容易想到的⽅法)
·观看视频教程
·阅读官⽹⽂档
·读源码
·到⼤学蹭课或者报名培训(不知道还算不算⾃学,没交学费都算吧?)
某君⼜得纠结⼀番了,⼤学蹭课和培训并不⼀定有合适条件,且不符合⾃学的⽓质;观看视频教程,
前辈们觉得⽐较low;阅读官⽹⽂档和源码,这不适合初学者。总得来说看书算是⽐较中肯的⽅法,⾄于看什么书呢,前辈推荐了《CPrimerPlus》,据说是学习C语⾔的经典之作。
好吧,不再纠结,直接啃这本⼤部头,虽然有⼈说看原版好⼀些,但是实在能⼒有限、还是看中⽂版吧。⼀⼝⽓花了⼀周时间读完这本书,果然是经典,变量、语句、条件判断甚⾄指针都知道怎么回事了。
某君决定按照书中的说法实践⼀下了,于是打开了记事本,折腾很久装了GCC,把书上的第⼀个例⼦抄了下来,在控制台的⼩⿊窗输出
了“HelloWorld”,成就感满满。决定上⼿写点⾼级的的东西⼀试⾝⼿,合上书。咦,为什么会报错?哦,
原来少个分号。不禁陷⼊思考:为什么学了两个⽉还是只能在这个⿊窗⼝算算秋⽔仙数?⽹友还说要看官⽹⽂档、要读源码、要看英⽂原版,我⼀样都不能做到,我⼀定是能⼒不够,编程果然是天才做的事情……
正经话
上⾯的故事是我编的,但其中的纠结却是⾃学者或多或少都经历过的。实际上,IT从业者并不像传说中那样需要天才般的智商,要点在于能否到合适的⼊门途径,再加上⼀点点坚持和思考。⽐较可惜的情况是⼀些⼈没能到适合⾃⼰的学习⽅法,并在纠结和碰壁后失去信⼼,然后沮丧的认定⾃⼰并不适合⼲这⾏。学编程很多时候就是⼀个趟坑的过程,但不是每⼀个坑都有必要趟,写这篇⽂章的⽬的是希望能够帮助初学者尽量少趟⼀些坑。
ecshop搭建
IT世界的地图
初学者遇到的⼀个典型问题是对IT世界没有⼀个⼤的图景。⽐如⼤多数的Java书籍,教完你基础语法知识和秋⽔仙数的求法后就结束了,并没告诉你接下来能⼲什么。我曾经为此感到⾮常困惑,学完JavaSE后做了⼀个⾮常简陋的GUIdemo,就失去了后续的Java学习⽅向,带着对Java的偏见,这成为了我⼀段令⼈沮丧的学习经历。关于这个话题⼀本书可能都不够,简单来说,我尝试从计算机科学知识和技术实践两⽅⾯来聊聊成为⼀名IT⼯程师需要具备哪些东西。
计算机科学基础
⾸先初学者要具备⼀些⾮常基础的知识,这些知识在你踏上⼯作岗位后能被实际的⽤到,⽐如计算机运⾏原理、⽹络的传输、常⽤数据结构和算法等。这部分属于计算机科学,也是应该被计算机专业本科课程涵盖的,不要伤⼼错过了⼤学本科的相关课程,我会分享⼀些有⽤的资源。
这⾥我罗列了⼀些计算机专业的学⽣⼀般需要学习的课程,当然每个学校专业设计都不⼀样,甚⾄采⽤的教材名字也不⼀样,仅供参考。⼤学计算机科学课程往往包括:《⾼等数学》、《离线数学》、《电⼦电路》、《数据结构》、《程序设计》、《计算机组成原理》、《编译原理》、《计算机⽹络》、《软件⼯程》、《数据库原理》等。有些学校会有⼀些额外的课程,例如《通信原理》、《汇编语⾔》、《线性代数》、《C语⾔》、《Java语⾔》等。
图⽚来源于⽹易计算机专业的课程体系
尽管IT⾏业知识更迭⾮常快,但是基础知识并不容易过时,因此有⼤量的资料可以选择。可以选择从计算机经典丛书系列开始,⽐如佛罗赞和莫沙拉夫的《计算机科学导论》,甚⾄可以阅读⼀些计算机科普类读物例如《穿越计算机的迷雾》。另⼀种直观的⽅式是观看⼤学精品课和去跟慕课课程,⽐较推荐的有⼏个:
·中国⼤学精品开放课程,⾼等教育出版社的精品课程项⽬,有全国⼤量的名校授课视频和课件
·中国⼤学MOOC,这个是中国⼤学MOOC和⽹易合作的,提供了上⽂附图中计算机课程体系中所有课程
·果壳⽹的MOOC学院,主打翻译全球名校的优秀课程,⽐如斯坦福的《编译原理》和MIT的《Python》
从知识到实践
java arraylist和linkedlist区别除此之外,还需要了解实际应⽤于设计软件或者开发⽹站中的实践类知识,包括某个特定语⾔以及周边的库、框架和⼯具等。我们可以把特定需求中⽤到的语⾔、库和框架以及其他的⼯具称为技术栈,在技术选型上通常也是被这样考虑的,HR常常会根据技术栈来寻需要的⼯程师。⽐如需要学习SSH三⼤框架和Java的Java技术栈;为服务器web开发⽽⽣的PHP技术栈;在移动开发领域流⾏的IOS、安卓技术栈等。当然这⾥⾯有⼀些重合和共⽤的技术也需要学习,⽐如版本管理器Git、SVN就是每个合格的⼯程师需要去学习的。
换句话说,⼤学课程主要定位在上⾯说到的计算机科学基础知识,⽽市⾯上的培训机构主要是告诉你在怎么在实际⼯作中运⽤,所以⼤学和培训机构都有他们的价值。
想要更加详细的了解这部分内容,这⾥有⼀些开源的技能图谱可以参考:
如何挑选你的兵器?
replacement map下载
在介绍完计算机领域的⼤致图景后,就需要选择⼀门合适的编程语⾔,⼀个较为形象的例⼦是把编程语⾔⽐喻成兵器,因为我们深知编程语⾔对于⼯程师⽽⾔是实实在在的⼯具,我们不是为了学它⽽学,学编程不仅仅是学语⾔特性,⼀般来说我们也不⽤知道赋值语句像“茴⾹⾖蔻”的“茴”字有四种写法。
当然语⾔之争从来没有停⽌过,如果把编程语⾔⽐喻江湖武器的话⼗分有趣。
正则表达式怎么写sql校验规则
C语⾔是M1式加兰德步,很⽼但可靠。
C是双截棍,挥舞起来很强悍,很吸引⼈,但需要多年的磨练来掌握,很多⼈希望改⽤别的武器。
Perl语⾔是,曾经在战场上很有⽤,但现在很少⼈使⽤它。
Java是M240通⽤弹夹式⾃动机,有时它的弹夹是圆的,但有时候不是,如果不是,当你开⽕时,会遇到NullPointerException问题,会爆炸,你就会被炸死。
JavaScript是⼀把宝剑,但没有剑柄。
—来⾃⽹络
⽼实来讲IT⾏业的最终⽬的是交付可⽤的软件,编程语⾔也是适应市场的。这对于初学者或许有些残酷,在⼯作中我们发现最好的语⾔是⽤来处理⼯作任务或者构建合适的应⽤,并不是出于爱好或者某种Geek精神。
route add default gw network is unreachable
对于初学者⽽⾔,在选择合适的⼊门语⾔时⾄少需要考虑两点:
·是否能适⽤于构建你想要的应⽤。如果你的⽬标是创建⼀个运⾏在IPhone上的APP,那么最好选择ObjectC或者Swift,学习web开发可以选择PHP或者JAVA。实际上我们仍然可以⽤汇编做出⽹页,但是这样做成本⾼昂。
·是否容易学习,在满⾜第⼀点的条件下请尽量选择容易学习的语⾔。容易不仅仅指语法简单,包括环境搭建、部署等都需要考虑在内,以及能不能容易到好的学习资料,因此尽可能的选择主流语⾔。
别忘了⾮常重要的⼀点,学习编程语⾔还包括平台提供的API,⽐如Win32之于C/C#/VB,以及周边的
库和框架(这些库、框架和⼯具能在上⾯说的技术图谱中到)。IT历史上甚⾄出现框架和库引领编程语⾔⾛向的情况:JQuery和Angular改变了前端开发的思想;Rails抢⾛了Ruby的名⽓;⽽SSH三⼤框架⼀度代表了Java世界。
最后我为初学者整理了⼀个流⾏编程语⾔和⽤途的表:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。