回 帖 发 新 帖 刷新版面

主题:程序员的四个境界


国学大师王国维先生认为古今成大事业、大学问者,必经过三种境界,第一种境界:“昨夜西风凋碧树。独上高楼,望尽天涯路”;第二种境界:“衣带渐宽终不悔,为伊消得人憔悴”,第三种境界:“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”。一代宗师真是体察入微,寥寥数语,道尽了求道者的心路历程,将一个人由浅尝、迷茫到彻悟的过程尽数概括,可谓入木三分。

IT行业可谓现在的热门行业,程序员也是很多人羡慕的工作。薪水高,不用东跑西颠,敲敲键盘,看看屏幕,一切工作全都搞定,轻松而方便。果真如此吗?不尽然,实际上,程序员的职业生涯也是一个求道的过程,需要不断的提高和学习,IT行业知识更新之快,常让程序员们有随时掉队的危险,无一日不战战兢兢,不敢稍有懈怠。

程序员的职业生涯也可分为四个阶段,初级程序员(菜鸟)、高级程序员(熟练工)、系统程序员(高手)、软件大师(大师),其作品也经历四种境界:

· 可以运行的程序

· 健壮、高效的程序

· 结构优美的程序

· 思想深邃的程序

程序员的必经第一个阶段都是编写可以运行的程序。很多人的编程生涯是从“Hello World”开始,当第一次按照教科书上的步骤,将源文件编辑完后,编译、连接、运行,在屏幕上显示出“Hello World”时,心中的激动一点也不亚于阿里巴巴打开了宝库的大门。初级程序员的目标一般是让程序能运行起来,他们迷惑于库函数的众多,不知道该用那一个,他们还要学习基本的语法,以使程序编译通过。初级程序员一般不会考虑设计模式、软件结构等问题。记得本人编写的第一个较大的程序是本人的本科毕业论文题目——一个计算机辅助实验系统,开发工具为Turbo C,在DOS下开发(那个时候Windows还不太流行,怎么样,年代够久远吧),整个软件大约7000行代码,在当时已经能干不少事,在DOS下也能显示不少花里胡哨的图形界面,支持中文,支持鼠标操作(那时候在DOS下需要自己处理鼠标事件中断),当时还颇受好评。可是今天再重新温习过去的作品,真有点掺不忍睹,整个软件毫无结构可言,一共分成两个源文件还是由于编译器不支持一个太大的源文件而被迫分开,整个系统就是源代码的简单堆砌。相信每个程序员都需要经历这个阶段,它是程序员职业生涯的开始,没有捷径可以跨越,只有不断的实践、学习和总结。

第二阶段的程序员已积累了不少的编程经验,语法和库函数不再是障碍,他们已不再满足于程序正确运行、功能实现无误。他们需要了解程序背后发生的事情,需要了解操作系统的原理和调度机制,内存管理,文件系统组织等;了解开发工具的细节,如C的函数调用机制,参数的传送机制、堆栈的建立过程等;了解C++的封装、继承和多态性背后的机制,虚函数实现机理等。他们不仅知道程序应该如何运行,还知道它为什么这样运行,能编写高效、鲁棒的程序。

第三阶段的程序员能构建结构优美的软件系统,软件系统结构的合理性、可扩展性、可维护性、可测试性是系统程序员考虑的重点,结构优美的软件系统同一栋完美的建筑群一样,每个部分各司其职,搭配合理。本人一直认为,一个好的软件系统应当具有美学特征,如简洁、和谐、层次感等,一个好的软件系统应当是简洁的,易于理解的;应当是和谐的,每个部分高内聚、低耦合,既分工又合作;应当是层次分明,易于维护和移植。所以,本人建议那些进行软件系统设计的程序员,当你设计完一个系统后,需要问问自己:"它美吗?",如果答案是否定的,那么我建议你需要重新考虑系统的设计,如果答案是肯定的,那么,恭喜你,你已经达到一个相当高的水平。

最后一级也许是每个程序员梦想达到的顶峰,程序设计不再是简单的工具,而是大师们改变世界的魔杖,从C到C++,再到COM和COBRA,再到XML和WEB SERVICES,每次改变,不是软件语法和开发工具的升级,而是用软件构建现实世界模型的改变,是一种软件思想的革命,软件具有了灵魂和智能。如果没有理解这一点,认为C++只是更好的C,COM只是更好的C++话,你就没有了解它们的精髓和思想性。


回复列表 (共31个回复)

21 楼

真了不起,把程序员一生的轨迹都给描摹出来了
小小虾,不太相信!
[em1]

22 楼

定格

23 楼

初学编程的难点在哪里
现在电子技术发展很快,很多硬件设计也基本要借助软件手段了,所以学编程的人也越来越多。现在谈两个最重要的问题,初学者不可不看。
首先,学习编程,应该从何着手呢?程序语言、开发环境,多如牛毛,真的不知道从那里下手啊。我想就个人的实践谈一下这个问题:
学习编程的着手点应该是因人而异的。
(1)如果你以前主要搞的硬件,而且对单片机编程已经熟悉的话,那么我建议你可以先学通C51编程,然后学VC,最后直接过渡到EVC的高级嵌入系统编程(EVC主要用于Windows CE操作系统下的开发,象高端的手机、PDA、电子词典等等,功能越来越强,就是一台小电脑了,Windows CE的特点是组件化的,最小的内核系统只有几十兆,所以适合小型的移动设备或工业控制系统的嵌入开发),EVC与VC几乎完全相同,不过帮助资源没有VC丰富,所以先学VC是明智的,否则在EVC碰到问题就不知道怎么办了。
(2)如果以前你没搞过单片机或任何编程,那么我建议你先学学VB,因为它容易学,对初学者来说,兴趣和毅力是最重要的,如果碰到太多挫折而看不到成果的话,往往会放弃。因此,从易到难是程序员的必经之路。而且,VB的功能也很强大,特别适合做数据库、界面设计等。然后在学VC,适合实时系统开发,如图象处理等,也适合对硬件的控制;JAVA,网络语言。循序渐进,很多知识是相通的、概念和逻辑是可以举一反三的。
其次,如果仅仅是一时的好奇或为利益驱动,是学不好编程的。
(1)不管从那里下手,一个好的程序员必须在求精的过程中,不断开拓自己的编程领域,甚至把兴趣发展到硬件领域,这样才大有作为。这就要求在学习的过程中不断实践,最好把学到的知识直接用于工作或作成一些实用程序,增强兴趣和动力,做的多了,就自然想要突破,延伸自己的领域。
(2)不管学什么,编程都是一件辛苦和不容易的事情,肯定有很多问题让你烦,笔者初学VC时,光是那些编译器错误就让我苦闷了三天,最后发现几百个错误都是由一个造成的。所以,一定要有强烈的兴趣,把编程作为象游戏一样吸引人的爱好,把困难看成是游戏练阶的过程,这样就不觉得枯燥了,特别是你看到最后辛苦努力的成果时,那种成就感是前所未有的快乐,你已经自信自己无所不能。现在网络发达,交流的机会多,但很多问题还是要靠我们自己在实战中摸索、体验的,所以自学能力是主要的。
有兴趣做进一步交流的朋友请加QQ:365035915,或群号:18916916

24 楼

在上海热线上看他们把程序员从农民到高人分为十等!

25 楼

· 可以运行的程序
· 健壮、高效的程序
· 结构优美的程序
· 思想深邃的程序


都在程序境界 不算高手(只到了下面的第二境界)

1  掌握语言的境界
2  任何语言都是一样的,唯有程序思想不同
3  思想都是相通的
4  创造新的思想

写代码的不过是民工而已
做架构的才是高手

Coder ----> Programmer ---->Designer --------> Architect
|             |              |                  |
|             |              |                  |
代码民工     程序员          设计师             架构师





26 楼

老是装自己是老手,你干了几年程序呀?你开发了几个操作系统呀?中国IT业的耻辱!就是你这种装老手的人太多!等你开发出XXP系统再说你是老手吧!

27 楼

老是装自己是老手,你开发了几个操作系统呀?中国IT业的悲哀!等你开发出XXP系统再发表你的高论吧!

28 楼

是啊   要多发些具体怎么干的东西哟,这些都是理论东西

29 楼



[fly]今天学到的不是一般的多[/fly]

30 楼


我支持

我来回复

您尚未登录,请登录后再回复。点此登录或注册