给所有初学编程的人的干货

2018-07-24 16:46:33 浏览数 (1)

现在IT新技术日新月异。就常用编程语言而言,有C/C 、汇编、Java,C#、Python等;

操作系统平台有unix /linux,windows系列;

开发工具有VC、visualStudio2008、 Eclipse、NetBeans等;

每个大平台下,还有很多的的方向:如网络、数据库、脚本、HTML、动态网站、游戏开发等;有人还在学Dreamweaver做网页、Flash做动画、Photoshop做美 工、3DMax做三维动画…………是的,我们什么都想学。恨不得把所有的知识统统都塞到肚子里去。看到什么,就想学什么!

今天看VC的书,明天又看Java,后天又看C#,东搞西搞!看到别人做网页。自己兴趣了来了。好,学html语言,我也做网页,听说做网页要会“网页三剑客”,所以又想学Dreamweaver、Flash。后来开始知道有JSP、PHP、ASP.NET做动态网站这玩意儿。也想去学, 学学学……

这是几乎所有初学者的通病。但是,这不是坏事,甚至可以说是好事。说明了你“求知欲”高!总比那些,生活没有激情,整天知道泡妞、上网、打游戏、混日子的强。

但是如果你今天想学这个,明天又想学那个。这样你就能永远徘徊在技术的门外。

很多人都有过或者正在经历这样的苦闷日子:总觉得有“太多东西”要学了,然而人的精力是有限的,总有永远学不完的感觉,所以心理特别急,整天惶惶不可终日,不知道先要学哪个,一会儿拿起这本书,一会拿起那本书,折腾了几个月,突然发现自己什么都没有学到……

每一个大方向如果没有上几年的学习,很难能学习出什么来。但程序设计的最根本的东西是相同的。所以我们学习要抓根本。俗话说:通一理,融百里。

学程序设计就像习武一样,如果内功学的好,其他功夫就很容易上手。君不见《倚天屠龙记》中的张无忌练了“九阳神功”8年,练“乾坤大挪移”只需12个时辰吗?

古人历经千辛万苦才能找到这些“武功秘籍”。我们现在这些后辈,比起古人来说:简直太幸运了。

去书店,各种各样的心功心法,剑法,拳法,应 有尽有,看得你眼花缭乱…你选什么呢?今天练“六脉神剑”几式,明天去学“降龙十八掌”几招,后天又去练“发暗器”,这样何时才有个尽头呢?你说,你什么武功都会,但是“形似而神不似”,不得要领,不够火候。一上擂台,就被别人一掌打趴了。试问哪个软件公司敢要一个号称任何编程语言都会,而是每种语言只能写出个“helloworld!”的程序员,你不被人家扫地出门才怪。

学XX还是学XX更有前途?

看了上面的话,有的小伙伴已经开始烦了,“知道了知道了,不止一个像你这样的所谓的‘老前辈’跟我说过‘学什么都一样,思想才是最重要’的大 道理,可是你们站着说话不嫌腰疼呀,现实是有很多技术需要学,比如做Web开发就有JSP、PHP、ASP.NET等好多方向,我总得选一个吧!到底学哪个有前途呢?我必须要选择一个有前途的,选错了就麻烦了。”

其实像“学XX还是学XX更有前途”的话没意义,因为“选择JSP还是选择PHP”的前途的差别不像“选择英语还是选择日语”的前途差别那样大,不存在“选错方向”的问题,因为都是相通的,你也不能保证你毕业以后搞的就是你学的那个方向,更不能保证你靠你学的这点东西就能吃一辈子。

不过就像上边说的“做Web开发就有JSP、PHP、ASP.NET等好多方向,我总得选一个吧!”这个问题是非常实际的,因为只有先学一个才能深入这个方向,把这个方向学通了才能想以后“一通百通”。

因此我的建议就是学校教过什么语言,你就继续深入学习这门语言,而不要去问“这门语言有没有前途”这样的傻问题。尽量不要去学一门所谓“有前途”的新语言,因为你去学一门新语言就要把很多精力耗费在语言、语法本身,而耽误了编程的实战,而以一个已经学过的语言来学习的话,起码语法本身不用再去学、开发工具本身不用再去熟悉,只要研究怎么使用这门语言开发有用的程序就ok了。

不要管“哪门语言好就业、有前途”,因为那些“好就业、有前途”都是纸老虎。尽量不要学新语言,从自己最熟悉的语言入手,深入研究,出山后你就是被用人单位争抢的红人。

企业里都需要什么方面的才能?

这个要视用人单位的要求而定了。你现在还没有毕业,也不知道未来要面对什么样的岗位。因此建议大家在上学期间不要偏科,所以的课程都要好好学,学好专业课,培养自己的“内功心法”,然后进入一个大公司,那么大公司自然会为你安排一个人才培养计划,在工作的环境中学习就更有目的性。

学什么最容易?

由于现在的快速开发工具的不断推出,使得软件开发越来越容易,进入软件开发的门槛也越来越低。

很多人在IDE工具的诱骗之下,快的十天,慢的半个月就可以进入所谓“程序员”的领域,成了一个所谓的“程序员”。这对于IDE提供商来说是乐得合不拢嘴的事情,但是对于软件来说却是一个无形的打击。

由于快速工具的盛行,很多人把开发看作小菜一碟,特别是很多在校的大学生,都认为现在教的内容一旦出了学校都已经是落伍,无形中产生了厌学的心理。

今后的软件开发逐渐趋于两极化,一方面有越来越多的人将从事简单的重复性开发,而且这部分的开发难度会逐渐降低;另外一方面核心部分的开发会越来越复杂,这部分的入门所涉及的知识内容会逐步增加。

所以对于今后希望从事软件开发的同学们,需要好好的努力学习,学校的东西会有他们的用处,只要现在把基础打扎实了,即后你们在软件的领域会有很好的机会,不要盲目的放弃学习的机会。

有什么速成的办法没有?

一个人学一门技术的速成方法就是不学那些所谓“没用”的东西,直接告诉他最终结论和操作方式。但是很多东西是在探索中、学习中才能领悟的,很多人在钻研一个技术难题的过程中查资料、看书、求证,在这过程中不仅锻炼了自己思考问题的能力,而且夯实了基础知识, 最重要的是在探索过程中收获了很多意想不到的新东西,有很多朋友在钻研一个问题的时候经常能无意中的学会很多新东西。

上山的“速成”方法是直接坐缆车上去,可是你会比那些登山者少看到很多路边的风景。那么你是愿意做一个掌握“速成”方法的人,还是愿意有机会看看路边的风景呢?

最后一句话:切务浮沙筑高台,练从难处练,用从易处用!无速成,唯有坚持!

另外,初学编程的人大多都有这些错误认识,今天老九君就这些错误认识给小伙伴们解惑。

1

C/C 太老了,过时了,平时用得很少,现在流行都Java、C#等等。

解惑:不要动不动觉得什么东西过时了,COBOL还有OO版本面世,还有FORTRAN,LISP,好古老的语言吧,现在还用得很广呢。“一切语言都是纸老虎,一通百通”,学校已经开了编程语言的课,并且想继续深入学习编程,那么就继续使用学过的语言来学习,不要再去学一门新的语言。

2

入门要从OO开始,培养用OO方式思考的习惯。

解惑:初学者一入门便摆弄Java、C 等很容易形成误解,似乎OO=Java,C …。一切编程语言的根本都是面向过程的,Java、C 等语言也是支持面向对象特性的面向过程的语言。

面向过程就是if……else……、while、for这些东西,Java、C 等语言中难道就没有这些语句了吗?

过程式语言(或者说结构化方法)的精髓不会消亡,OO里面也不可能摆脱掉一条条的语句、函数调用,结构化方法。

OO方法不是那么容易学会的(OO语言的语法弄得很熟练不代表你懂OO),而结构化那套方法,自个写个千把行的程序就很能体会了,我是说写个实用点的东西,比如试着自个实现一些数据结构和算法,写几个小游戏等。写个一千行Helloworld等于没写。

我觉得方法是实践中体会出来的,不是看看书就能学会的。过程式语言的代码一般比较简练,我们编程序最终的目的是要解决问题,是要计算,是要获取信息,不要被OO、设计模式等迷糊了。

3

过程式语言弄久了,很难转入OO的思维模式

解惑:我以前也没有深想过这个理由,不过时间久了,发觉自己不过是把数据和方法集中在一起而已,看着方便,其实有很多不合理的东西,这里头就需要 OO的理论指导了,还是需要时间来体会。

我相信有很多用OO语言的人也不过是在框架里头添添代码,调用来调用去而已,把人类当作数据和操作的打包器。

个人觉得只有在用过程式方法做了十来年,编码上十万行后才有思维定势,难以习惯用OO的眼光看待系统,然而这个转变,我仍觉得比改变一个人的恶习容易许多。OO方法不是学了个Java,C 等就能掌握的,需要实践,需要时间。

过程式语言也容易培养一个人严谨的做事态度,比如用汇编,C等写代码,没有命名空间、没有一大堆类库,没有模板、没有异常,你要花很多心思处理一些细节,比如警惕数组索引越界、悬挂指针、野指针等等,请不要觉得麻烦,这个就是计算机啊,底层就是这样的啊。

4

C好难啊,我入门还是从Python,C#开始吧

解惑:语言只是表达思想的工具,不要只局限于一种语言,不要狂热于某一门语言。

0 人点赞