给所有初学者的干货,自学编程的3点建议!
现在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个时辰吗?
古人历经千辛万苦才能找到这些“武功秘籍”。我们现在这些后辈,比起古人来说:简直太幸运了。
学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等写代码,没有命名空间、没有一大堆类库,没有模板、没有异常。
你要花很多心思处理一些细节,比如警惕数组索引越界、悬挂指针、野指针等等,请不要觉得麻烦,这个就是计算机啊,底层就是这样的啊。
|