关于计算机专业的人如何学好编程

  这篇文章是写给低年级的人的,已经工作的就不用来看我废话浪费时间了。

  最近总是有人问如何确定自己方向的问题,说是看到有的人在搞手机,有的人在搞网页,有的人在搞游戏,还有其他的什么的,然后说自己只懂得这么一点东西不知道该怎么办之类的事情。我一直在一些做软件开发的群里面混,里面有很多学生,也有很多从业者。那些人对于人们在基础不够扎实的情况下就“做各种各样具体的项目”有两种说法,一种说是浮躁,另一种说是这样开阔眼界是好的。

  大学就四年。学校通常安排前两年学数学英语,然后大一学语言大二学数据结构。到了大三有很多比较具体而且复杂的课程,然后就要找实习,大四其实就是在找工作,课也没有,卫生也不检查了,等于在租学校的宿舍住。

  于是在这短短的三年里面想在计算机那么多领域里面找到自己喜欢的,然后钻研下去,最后还有所成就的话,还是比较难的。因此很多人经常会看到自己周围突然有两三个人就干了点什么很有成就感的事情了,一问,以前学过的。这种人我也接触了几个。我有一个同学说是高中的时候被称为代码狂人,给emule写了点代码,然后还自己做了个即时通讯工具卖了出去。到了大学就一直在重写这个东西,最后实习就到腾讯去了。前几天还遇到个人,说是小学就在折腾flash里面的action script了,后来投靠perl,说是一直到了大一才写了一个超过2000行的程序。我也没去求证,只是觉得比较不可思议。

  于是我想,就照着那些传统的路子先搞定一门语言(《C++Primer》),然后学数据结构(《算法导论》),再去学点库(《STL源代码分析》《深入浅出MFC》),之后弄点设计模式(《设计模式》),最后写个某某管理系统(笑)什么的,也是无聊了点。竟然要学了那么多东西,才能弄出一个看得见摸得着的程序,也太考验人的意志力了吧。几乎是个人都是从拖控件开始的。那些一开始就摸着黑白屏幕狂搞算法的人,要么是NOI出身,要么是ACM出身,然后对着几道算法题乐此不疲。但是最后有所成就的,很少。我在学校认识了那么多个ACM出身的,最后也就一个去了google。感觉风险还是有点大啊。

  但是反过来也是有问题的。要是一开始就从界面开始弄,人也是很容易浮躁的。很多人因此就陷入了对花花世界的追求了(根据对群里面的人的统计),譬如说特别关心怎么在ListView前面画棵树什么的。这种人里面,其中一些有追求的,最后都会沿着Windows SDK,再走到DDK,最后写驱动,一脚踏进泥坑,从此不能自拔,当然这些人也是少数。每当有少数人对着剩下的多数人说跟“我今天实现了让Word不能打开某某文件”差不多的这些事情的时候,他们两眼大放光芒,然后就开始跪求源码,狂问用了什么API,最后当代码终于到手的时候,就放进之前精心准备好的一个文件夹里面,封存万世,从此再也不去看了。当然也有其他的版本,譬如说老是下载书,而且还是rar,然后从不解压一样。曾经有这么一个人就在群上炫耀说自己有多少多少G的电子书。我让他上截图,结果全是rar。根本就没看嘛,他自己也承认了。

  于是怎么看两条路都是很有危险的,这就是为了什么到了大四的时候,能学成的人总是不多的缘故。 太容易陷进去了 。这是什么意思呢?人总是只对自己做得好的事情感兴趣。对自己还没做的事情感兴趣那种是好奇,需要严肃对待。当人终于做好了一件事情之后,就会一直不断的钻研下去,这当然是好事。但是,从此只见树木不见森林,以为全天下的编程就那一件事情,那当然是要吃亏的。

  所以首先要开阔眼界,知道世界上原来还有这么多的东西可以做。 在差不多知道编程是什么东西的时候,需要这个玩一玩,那个玩一玩 。不然就会看到旁边的同学这个用Java在手机上跑一个能告诉你1+1=2的东西,那个人用PHP+MYSQL弄了个留言版,看得唾液直流,心里发慌,说自己对着C++的黑白屏幕弄了这么久居然连那点小玩意都做不出来,自尊心很容易受到打击的。

于是在玩过了之后呢,要及时收手,就专门做一件事情好了 。因为这个时候自己已经大概知道自己看见的东西差不多就是那个样子,想做自己也做得出来,看着别人写那些花边的程序也就不会给自己施加太多压力了。专门做一件事情的意思就是,选定一个方向,然后找书,找人,看代码,写程序。 譬如说可以去弄图形做游戏,也可以去弄脚本引擎做做编译器,还可以跟着老师去搞什么数据挖掘啊嵌入式什么的 。对一个领域的深入研究最大的用处是可以让自己接触复杂的问题

  当然,当研究得深入了之后,程序就越写越大了,这个时候就会出现很多各种各样的问题了。譬如说效率太低啦,程序一出错就要全盘推倒重来啦(这个还是比较可悲的),代码太多很难组织函数啊类什么的啦,或者说名字给你用光啦等等。这个时候就需要各种各样的理论知识了,譬如说数据结构与算法,还有设计模式什么的。当然讲来讲去也就这几样,因为“这世界上没有银弹”,所以那些通用的东西必然不多,剩下的还是要靠在同各领域里面其他人的积累或者自己的研究才能最终解决的。

  上面所说的可以做的各种各样的事情还是偏向于理论化一点,其实有一个学术上的领域还是不够的,因为最终一个程序在跟计算机打交道的时候靠的是输入输出,也就是俗称IO的东西了。这究竟是什么呢?也就是说,知道那个地方放着你要的数据,你要把它拿过来。你自己算出了什么,知道要往哪里放,你要会放。这里面包含的东西很多,譬如说典型的,键盘和屏幕上的输入输出,网络要用的Socket啦Web Service啦,那些看得见的窗口啦控件啦,读写硬盘啦,还有其他什么的。这种在某一平台上的专用的API都是至少要熟悉一种的。不然你光学会这个算法那个算法有什么用啊,譬如说你想对一个图片进行压缩,专门学了那个知识,但是一个bmp放在硬盘上你却读不进来,那岂不没意义了么。

  于是说了这么多,无非就是刚开始的时候要去见识世面,然后挑一个来慢慢研究,最后研究着研究着程序搞大了,就自然会碰到很多高级的问题了。这个时候去解决了,其实本科需要你具备的水平其实也差不多达到了。

  所以很多人都洗心革面,终于开始努力研究一个领域的问题了。领域总是复杂的,这个时候会遇到很多编程上的问题,譬如说算法太复杂表达不出来啦,文件读着读着就挂啦,一不小心越界了之后造成了很多奇怪的问题啦(C++)等等。这种关于调试的问题,一般只能够靠自己错得多错得离谱了,最后就成才了。当然前人也总结出了经验,写了本叫《 Why Programs Fail 》的书,想看的话可以自己去下载。其次, 具体的库总是有很多书和文档的,没事也要多看点 ,譬如说用Visual Studio的人都得把MSDN给装了。

  话也差不多说完了,虽然我自己也觉得这篇文章比较虚,因为这也是“通用的东西”。具体自己该怎么办自己得好好想想。我就把这篇东西献给现在大一大二那些还在迷宫里转的弟弟妹妹了,要是有什么特殊的疑难杂症的话,就私底下联系我吧。

  总之,无论什么时候,手头上都要留有一个可以研究的问题才好。

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2016-11-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏斑斓

架构模式的圣经

在模式领域里,有一部伟大著作给予软件设计领域带来的影响非常大,那就是以德国人Frank Buschmann为主要贡献者的《面向模式的软件架构》(Pattern-...

41760
来自专栏飞总聊IT

大数据到底是什么

最近这段时间有很多人问我,大数据到底是什么。当然实际上问题没有那么直接。更多的问题是,飞总啊你看我亲戚家的那个企业是不是可以上个大数据啊,用起来就能发财了。或者...

369120
来自专栏大前端开发

如何成为一个Freelancer程序员?

挂断了和美国西岸客户的Skype会议,瞥了下电脑屏幕右上角的时间,6:50,还半早不早。伸了个大大的懒腰,我走进卫生间,开始了漫漫洗漱路......

24150
来自专栏大数据和云计算技术

速度比你想的重要

效率高的明显好处是:单位时间内能完成更多的工作。但这只是冰山一角,假如工作速度快,你就会倾向于低估做事的成本,因此乐于完成更多的工作。 举个例子,假设你每写一...

34980
来自专栏牛客网

【Vivo二面】新鲜出炉的面经~(Java开发)

【每日一语】我们大都走在一条相似的路上,却都误以为自己惊世骇俗。而所谓故乡,只不过是祖先流浪的最后一站罢了。──乔西

20630
来自专栏杨建荣的学习笔记

推荐几个不错的Python资源

周末翻了下书,突然想起一个问题,23个设计模式在Python中是如何体现的,虽然Python里面没有接口,但是设计模式不是重依赖于具体的语言。所以心血来潮,就速...

44870
来自专栏无原型不设计

看了这三个问题,你就知道UX设计师如何起步

如何成为一个合格的UX设计师,怎样才能从菜鸟转变为设计高手,每天都有无数的设计师思考着同样的问题。凡事要做好,必须得回答这三个问题:做什么?怎么做?用什么做?...

26740
来自专栏企鹅号快讯

论新手该如何学习java?

由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间,还有一个很重要的原因就是java这门语言更适合商业应用,所以高校里大部分博士老师们对此语言...

36870
来自专栏吾真本

架构操练Kata:干货大会

http://nealford.com/katas/list.html;译者:伍斌、王瑞鹏

12540
来自专栏牛客网

这可能不只是一篇面经!2万字干货分享校招备战、笔试、面试的详细经验(上)

5月份一个很偶然的机会,加了叶神的微信,还收到了祝福。一激动就承诺说写篇最详细的面经分享给大家,毕竟用了这么久的牛客网,收获真的很大。 校招真的是段劳心伤神的经...

798180

扫码关注云+社区

领取腾讯云代金券