为什么你永远是菜鸟
On 1/18/07, Silent Reader <[email protected]> wrote:
- 虽然说的是摄影, 但我觉得他山之石可以攻玉, 可是文中的道理对编程也同样的适用.
http://www.pconline.com.cn/digital/photo/college/jiqiao/0501/548235.html
为什么俺永远是菜鸟
---写给所有的新人的一封信(没有任何意义的口水文)
ZoomQuiet 仿作 出处:lispchina group
- 这几年一直在Python-cn邮件列表中混,看了很多的代码,有"菜鸟"的,有"高手"的,还有一些"专业"的。特别是"菜鸟"的,经常是一些什么首次接触,刚用Python第一次成功……之类的,我突然想说,难道编程真的就这么简单吗?
- 我记得我刚开始学习编程的时候,我的老师也是从基础课开始,交给我一些基本的概念和常识,然后就叫我拿着习题去练,怎么练呢?先在纸上写,然后就让我去走测--用人眼!,首先给定一个初始值,锁定一个循环的准出,用不同的条件去"走",一"走"就是一个上午,然后才轮到真正的上机,自己跑,在真实的运行环境中体验:"相同的代码为什么会有不同的结果?"
- 通过这种对比可以非常深刻的了解到程序各种令人迷惑之处(不断强化编程不是人干的活儿的理解);然后终于教到IDE,唉呀呀!Turbo
C 居然可以设定断点!动态修改内存值…更加多的惊奇和挫折…后来又是 VC2.0,要我们不断的学习不同的IDE环境的菜单命令……自个儿也非常上进的主动学习JAVA,都是把最最基本的语法规则刻在脑子里才算成。记得刚开始的时候大概在几百次调试后才可以正常运行一回,后来是在50多次调试后就可以正常运行了,再后来基本上就直接抄别人的了。
- 书上的死题学习告一个段落后,才开始进行简单的任务实现。实际任务就不像书本的死题,她是有情感的——或无聊、或冷僻,或疯狂,你怎么样把这种任务的真实需求通过软件表达出来,这些是之前哪些死题产生的代码片段所没有办法体会到的,因为透过死题体现的是固定条件下自己的处理,随便你怎么弄它都没有任何意见,任务就不一样了,你要尊重她——因为不应该把一个数值处理的任务写成图片处理地。实际任务的实现其实并不好写,因为问题领域是你没有办法去完全掌握的,进而用户的需要也全部是自个儿臆想的,而往往是实际到后期发现的特性必须改变,对应的你需要做太多的变化——流程、函式、变量、……所有的一切都要随之改变。小工程任务的实现是对书本习题的又一次颠覆和否决(重新置疑,毕业后可以靠这过活嘛?)。
- 这些基础的学习完成了就开始训练自己的想象力--因为实在不敢想象真实社会里的程序工作就是折腾排序之类,所以下载各种软件进行体验。软件的题材、范围非常的广,没有人能说他可以开发所有的软件,桌面、服务、网站、嵌入……等等,就算是程序大师也会有一个偏重点。这个训练也是很重要的。Orz
- 然后,我想说说关于语言的一点想法。很多菜鸟往往一看见别人写得比较好的软件就问"什么语言写的啊",其实并不是说有了好的语言就一定能写起好软件(当然要写出顶级的软件没有好语言(OO、数据类型、类库……)也不行),不好的语言就一定写出差的软件。我多经看过高手们使用极原始的语言写出的非常实用的软件。作者这样给解释的:**语言并不是差语言,只是说它不具备可调性,数据类型啊、类啊、全局变量啊,这些它都已经被设定好了而已。那么我们能不能找到一个合适的流程、一个合适的算法、一个恰好的代码——让它的处理速度刚刚好、让它的容错程度正好合适、让它的操作响应准确呢?余下的就是人的创造——布局、结构、意境,说白了这个考量的不是语言,是人。
- 当你看见了这段话有什么想法。语言,我觉得这个时候你该拿起你的语言说明文档来好好看看了,你真正的了解它吗?武侠小说中讲高手到了至高境界就是什么"人剑合一","剑成为人(身体)的一部分",这要表达就是一个意思,你要完全的了解你的"兵器",你现在了解你的"兵器"吗?很多人一看见别人使用的语言就开始看商业的统计——支持开发商多少,每年市场份额多少……这些真的对你有意义吗?如果你有条件你可以去试一试,把两个不同设计理念的语言放在同一个位置,设置相同的需求,完成同一个软件,然后放在同一部电脑中使用,我敢说肯定不一样。
- 每个语言都有它自己不同的"特长",有的语言适合处理文本,有的语言适合架构服务,有的语言适合完成动态网页……没有那个高手说可以给自己的 JAVA配一个Eclipse就全部搞定一切的(当然也有一些适应性比较广的语言),不同的情况他也会选择不同的语言,道理是一样的。
- 同样的一个任务,别人的系统设计配上他的语言、开发进度刚刚好,你也用人家的系统结构开发进度就是受阻,别人的运行快捷平稳,你的磕磕碰碰,为什么?原因在于你们的语言是不一样的、开发思想件也不一样啊!你怎么办?还是照抄别人的系统结构吗?
- 随着类似PHP的快速开发语言的普及越来越多的人加入到程序员的队伍中来,有的人拿起了IDE,按下快钮,OK!一个作品就出来了,随便找个论坛放上去——大家来评吧!这样子你永远只会是一个菜鸟。编程永远只是你的一个很简单的兴趣、爱好。当然如果你本身就是抱着这种思想的,也无可厚非。
- 文章写到这,我突然想笑,其实我也是个菜鸟,PHP也没有玩多久,研究得也不深,特别是大型网站的后期开发,我简直就是个文盲,就又好高骛远的跳到了Python,号称使用Python了5年,但是没有任何超过万行的正式项目成功交付的,现在同时又禁不住诱惑开始看Lisp/Erlang。只希望大家在看完这篇文章之后不要打我就好了。