学编程,你去哪找捷径?
发布时间:2013-08-16 21:54:05作者:知识屋
摘自:龙族联盟论坛 作者:北极乞丐
QQ上经常有人在问我如何尽快学习编程的路子,我只能做摊手状。尽快的路子我还真没有,唯一的建议就是找准路子,建立良好的心态,学好编程。 所以针对他们的问题做了下总结,做个备忘吧,也权且勉励下自己。
注:很多东西我都是谈不完,谈不来的,这只是一些我所遇见的提问的回答,而不是指导如何入门文章。我还没能力指导别人
1:我们学的是编程而不是语言
就像我们去学武术,不管是从太祖长拳,少林罗汉拳,咏春拳还是太极拳入手,最终我们的目的是为了学会武术。不用去在意什么拳术最好,乔峰用10岁小孩子都会打的太祖长拳照样打得少林高僧灰头土脸。其实世间万物几乎是相通的,武术到了最后,不会在乎什么招式,举手投足,就是杀人的妙招。编程也是一样,随便选择什么语言入门,到了自己编程学到精深之时,什么语言都可以信手拈来。python这样现在风靡全球的语言,最初不过是某个程序员为了打发无聊的圣诞节的杰作。当然,我也在为了能编写一个自己的编译器,语言而继续努力着。
2:某种语言是不是过时了
这个过时我们说了不算,老板说了也不算,客户说了才算。昨天我准备开动的一个新的项目,进销存+CRM的一个系统,选择了半天,最终选择了VB+Access。在某些人眼里,似乎很过时吧。可是我自己一个人用,用着很舒服,数据量又不是很大,开发进度又会很快。我为什么不选择它。就算现在有人去学Basic。也许将来不会用在工作中用到它,不过你不是用它入门了不是。 基础的语法,哪种语言不是一样的呢。我个人的学历路线就很曲折,从QBasic到Foxpro到c到vb到asp到java到c++,最终我发觉我好像什么都没学会,不过我还是用着这些东西做着像模像样的东西,忽悠着老板和客户。我不指望自己能在这行做到怎么样怎么样,那不是我能达到的,我又不是那些名人传记里写的一个暑假就学会了汇编,半年就精通了c语言。我想大多数人不过都是普普通通的程序员而已。
编程是一门艺术,但某种语言绝对不是艺术。 持不同观点的我抱着欣赏态度。
3:书籍
我学编程最初2个年头买了很多书,南下深圳带了两个背包,一个包是衣服,一个包全是书,压得我腰酸背疼。然而我发觉自己看书的时间很少。工作通常都很忙,忙到根本没多余的时间去看书。即使有了一点闲暇时间,我愿意睡睡觉或是出去玩玩。现在依旧看得比较少。当然,书同样会买,在书城看着合适的书就买回去,结果扔在那就是大半年没看。 通常我更愿意买手册性质的书。 网络上有些东西,临时要去找的时候,找遍了都没有有价值的,一篇错误的文章都会被转载几十次。看得我火冒三丈。结果翻翻手册,上面早就有了正确的答案。
现在国内有些书挺有意思,大篇大篇的现成代码往纸张上一贴,弄个书名《XXXX开发全接触》仿佛那就是一本《九阴真经》买到他的就可以参加华山论剑了似的。我的建议是拿书当工具,没事的时候翻翻,不能指望这玩意就能让自己学会编程。
4:跟着微软跑
我记得有人说过,跟着微软跑就不怕被饿死。有同感,具体的体现在于我06年准备换工作时,网络上大部分都是招.net开发的。可怜我.net根本就没有了解过,自然不敢跑去忽悠面试官。 直到现在,我依旧不会用.net平台的任何一种技术。 不过我目前仍旧活得还行,不存在每个月都掰着手指计算下个发薪日是多久。
微软让我最喜欢的就是它的文档,太齐全了,一个MSDN,就足以满足很多想要入门的程序员,即使有经验的程序员同样会通过MSDN获得很多有益的资料。 而我现在工作中所要用到的东西,有时候连英文文档都不齐全。 开源的,没有办法,人家连源代码都给你开放出来了,文档不齐全有什么办法,遇到问题就查源代码呗,虽然开发进度就因此慢了下来,但是这也是一个学习的方式不是。
阅读别人优秀的代码是对自己学习最大的帮助。当然,跟着微软产品体系跑步,也是一件好事,这样学习曲线会降低很多,难度小了,才会有兴趣,有了兴趣,才会去深研究嘛。
5:实践
我这里有个例子,我一个朋友,小学同学,中学同学,到现在,我们仍然在一个城市,3年前他准备学编程。每天抱着一本书看,后来买了一台笔记本,上面下满了教程,文字的,图片的,视频的,从HTML到C++,覆盖面积之广让我都眼馋,丫哪来的时间下这么多资料。 然而他现在依旧在看资料,就是不动手。上次我碰见他,正在捧着本子玩VisualStdio,我说:"这么久了没见你做什么东西,你用这玩意给我做一个数据库读取吧。" 他磨蹭了很久 :"这个,我现在还没学到那里去。" 感情哥们学了三年,还是在停留在看资料上,真是理论知识学习健将啊。
编程最初的学习没多少捷径可走,无非是多实践,书上的例子,网上的例子,先别管人家写得怎么样,先别去琢磨,敲到编辑器里编译运行通过了再看人家写得是怎么回事。 连手都不动,看都能看会么? 编译成功了,再学习一下调试能力,软件开发中调试的时间永远比编程的时间长得多。 改一改人家代码的语句,数据,看看会得到其他什么结果。 最后再去考虑这是为什么。
6:思想
这个问题我也谈不来,我自己也没啥思想,只是在学会编程的基础上通常多考虑一些代码的封装,复用。至于设计模式,我觉得那个不是死记硬背最终用到项目上的,如果一个人,亲手主持正规的开发2,3年的时间,他心里自然有很多成熟的设计模式,如果什么开发经验都没有,一开始就学什么设计模式,什么设计思想,这说实话,不靠谱。
7:项目
一个项目选择用什么语言,什么平台,什么额外的开发包,语言的扩展性好不好,学习难度高不高。这些在我现在每进行一个新的项目时,都花去很长的时间考虑和测试分析。因为一旦开始了,就不好再回头,如果一开始用Python做了一个项目,做到一半,发觉对这个项目不适合,某些技术问题还没考虑好。想换成java,那不是扯淡么。
8:难得不跟风
现在搞技术的公司都跟搞娱乐的差不多了,某种新的技术一旦要出来,首先都要铺天盖地宣传一番,轰炸地自己坚决相信一旦不跟着这波新技术的潮流,自己就会落后,就输在人生的起跑线上了。然后朋友们,当我们追逐新的技术时,自己有没有想过,自己之前学到了什么东西,基础扎实吗? 如果一个编程基础扎实的。或者一个熟练的程序员去学一门新的技术,他很快就可以上手运用到工作中,而你呢?你编程学好没有?你基础都没学好,再去和那些本来就基础很好的人起跑。不仅仅是输在起跑线上,人家在向前面跑,你是在向后面跑。
9:耐得住寂寞,不怕失败
以前有人说过,如果你编写的一段代码,编译,一次性通过,运行正常,那真是太可惜了。你失去了查找错误的机会。 如果编写的代码一开始就有错误,我相信最终你找到问题所在,编译成功之后,那份成就感会更加强烈,更重要的是你比别人多了一次学习的机会。 然而调试代码总是很辛苦的,也许1,2次就OK了,也许会很长时间。
我记得上一次我遇到一个问题,C/S模式用户在线注册时如果本机硬盘数量或网卡超过两个就会导致程序崩溃的问题。花费了我3个晚上额外的休息时间,最终发觉是一个不算太复杂的字符串问题。 然而花了这么长时间,我最后学到了一个新的东西,而且得到了更多的成就感。
10:现在开始行动,而不是等待明天
不管怎样,勤奋的人最终会跑在前面的。(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)