发信人: xyb (凤凰涅磐), 信区: Computer
标 题: 程序人生 --- 引导篇 --- 一些废话
发信站: 哈工大紫丁香 (Sun Apr 23 14:33:34 2006), 转信
一些废话
金蝶中间件公司CTO 袁红岗 1995年
每个人在成长的道路上都会遇到这样那样的困难,关键就是看你怎样看待和克服它们。有人说从事IT行业是世界上最痛苦的行业,特别是从事开发工作的。因为这个行业的技术更新特别的快,三天两头就有新技术新思想新信息,这是你不得不接受的实事。不过我从一个软件开发者(程序员)的角度来纠正一下,计算机这东西从发明发展至今,体系结构的实质上没有什么变化,至少革命性的变化现在还没有发生。只是速度快了些,价格便宜了些,容量大了些而已。现在不断推出的新软件新系统新语言不过是在以前基础上的增强而已,它们统统都是建立在传统体系结构和基础上的。计算机还是CPU+MEMORY+IO,内存里放数据和程序,CPU用于指令运行,程序还是数据结构+算法。我说了这么多废话无非就是想说明这样一个道理,电脑这东西万变不离其中,掌握了基础就掌握了它的大方向,为什么70年代大学里学的计算机教程和现在的教程大多差不多,应为这就是基础,电脑就是这样的,教材没什么革命性的变化。计算机专业的学生还是学那些“数据结构”,“算法原理”,“操作系统原理”,“计算机组成原理”,“数字逻辑”,“编译原理”...... 当然还有基础的高数,线数,外语等等。
一些电脑的初学者总爱追逐一些新技术,什么C#,.NET,EJB等等,学了半天,还是没有掌握计算机学习的实质,基础的薄弱导致后劲不足,这些东西还是同样从基础的东西发展起来的,“数据结构”,“算法原理”仍旧是精髓。还有些爱好者总问学什么语言好,其实语言只是编程思想的表达,头脑里数据结构有了,算法有了,逻辑关系有了,语言只是写出来实施而已。各种计算机语言和开发工具现在都趋于大同,什么Delphi,VC,C Builder,java 都差不多太多,怎样根据实际情况,用合理的高可用性方案实施一个具体项目才是关键,语言的选择是次要的。为什么有些人学什么语言都快,就是因为他基础扎实,看破了语言这个表面。语言不会是一个程序员的障碍,障碍只是思维方式。我用过不少语言,不过我都觉得差不多,再学新的也会很快,是否采用新的语言,这要根据实际情况而定。
初学者应该怎样学习电脑呢,我推荐一个读书方案,其实都是些大学教材,我觉得基础很重要,从基础开始是绝对唯一的一条路,当然毅力也很重要,这关系到你是否能够自始至终,循序渐进。
1.很多人不知道计算机是怎样的东西,里面的部件是怎样的运作的,你可以在“计算机组成原理”中找到答案,如果其中一些数字逻辑电路的知识你不太明白,可以参阅“数字逻辑”或者“数字电路”。
2.汇编语言的学习建立在搞懂“计算机组成原理”的基础上。
3.任何计算机都有个操作系统,当然操作系统也是一些软件的运行环境,不论是UNIX, LINUX,DOS,WINx,都有很多基础的,共通的理论,你可以在“操作系统原理”中得到。
4.看到这里,你可以开始编制高级语言的程序了。程序就是数据结构+算法,当然“数据结构”,“算法原理”就成了你这个阶段的主攻方向。
5.以上的东西就是我提到的基础,其他方面的知识也是很多很多的,可以自行根据需要选择学习。
要提醒的几点是,以上介绍都是有一定逻辑层次,一步一步来,否则要走不少弯路。其次就是基础的学习是枯燥乏味的,可能有些人经受不起太多太多的新东西新软件的诱惑,放弃基础的学习,这样到头来结果还是一样,基础薄弱,学什么东西都是走马观花,不得实质。然后就是根据实际情况选择学习,有些东西并非要搞个透彻,了解即可,不过得要记在心中,具体应用的时候要知道选择,然后在具体研究。最后就是要注重实践,注重个人专研,不要什么东西一不懂就问人。高手都是喜欢自己专研实践,亲自弄懂一个问题会给你自己留下深刻的印象,理解也会更加的透彻。
一些书目的介绍
学习的过程就是读书+实践的过程。可以说选择书籍也是学习计算机的关键,有些好书就是能相伴一生,对自己的成长道路产生重大的影响。以下书籍都是我成长道路上的良师益友,伴随我度过了很多很多踌躇的时光。很多书都是反反复复看了一遍一遍,对我产生莫大的影响:
《Windows内核剖析》黄朝明、陈国栋。学苑出版社,94年6月 国内高人编写的Windows3.1 的内核分析,高水平
《未公开的Windows核心技术(Undocumented Windows英文原名)》Andrew Schulman, David Maxey and Matt Pierek,清华出版,97.4 老外名人名书,主要讲Windows3.1的东东。
《Windows 95开发技术(Unauthorized Windows 95英文原名)》Andrew Schulman,电子工业部出版社,95.1 又是这个老外,沿袭上一本的风格,讲述Windows 95的秘密。
《NetWare 3.x深入剖析--服务器内核篇》清华出版,97.4 国内高人研究NetWare的服务器相当的透彻,全部汇编级,这种牛人不知现在在作什么
《PC系列机系统开发与应用(上)》张戴鸿,北京科海,91.6 一般的书籍,相当于“计算机组成原理”,不过现在来看有些过时了。
《深入Windows编程》雷军 现在金山的老总,当年的写书风采简直是经典,主要讲Win3.1的东西。这本书曾经是我的最爱,我的Win31的病毒,很多程序,以及毕业设计便是参考此书。 这些书籍在当年的书店都是计算机书中相当贵的,我当时为了买这些书都是狠了几下心的
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,
因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些
基本原则是可以遵循的。
1. 扎实的基础。
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难
写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。
程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来
学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候
可能也会束手无策。
2. 丰富的想象力。
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没
想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,
比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。
这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一
个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护.
遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天.
当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑
细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时
候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值
得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最
后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。
三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网
,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如
何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使
你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释
和代码不一致,那就更加糟糕。
8. 韧性和毅力。
这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1
ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的
喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄
下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.236.219]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.423毫秒