十层楼Word文件下载.docx
《十层楼Word文件下载.docx》由会员分享,可在线阅读,更多相关《十层楼Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。
数量估计不会少多少,所以这层上仍然远领先于西方。
大虾们通常还是有些自知之明,知道自己只能实现一些简单的功能,做不了大的东西,有时候还会遇到一些疑难问题给卡住,所以他们对那些大牛级的人物通常是
非常崇拜的,国外的如RobertC.Martin、LinusTorvalds,国内的如求伯君、王志东等通常是他们崇拜的对象。
其中的有些人
希望有一天也能达到这些大牛级人物的水平,所以他们继续往楼上爬去。
第3层牛人
由于"
们经常被一些疑难问题给卡住,所以有了"
们只好继续学习,他们需要将原来所学的知识进一步熟练掌握,比如以熟练掌握C++编程语言为
例,除了学一些基础性的C++书籍如《C++Primer》,《EffectiveC++》,《ThinkinC++》,
《ExceptionC++》等之外,更重要的是需要了解C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和线程的管理机
2009-10-1018:
52回复
121.34.111.*2楼
制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种
设计方法有更好的理解等。
学习上面说的这些知识不是一挥而就的,不看个三五十本书并掌握它是做不到的。
以数据结构算法来说,至少要看个5~10本这方面的著作;
以软件设计来说,
光懂结构化设计、面向对象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使用的设计、面向数据结构算法的设计、情
感化设计等,否则是很难进到这个楼层的。
当然除了上面说的知识外,大虾们还需要去学习各种经验和技巧。
当然这点难不倒他们,现在出版的书籍众多,网络上的技术文章更是不胜数,然后再去各种专业
论坛里泡一泡,把这些书籍和文章中的各种经验、技能、技巧掌握下来,再去学习一些知名的开源项目如Apache或Linux操作系统的源代码实现等。
此
时对付一般的疑难问题通常都不在话下,菜鸟和大虾们会觉得你很"
牛"
,你也就爬到了第3层,晋升为"
牛人"
了。
看了上面所讲的要求,可能有些大虾要晕过去了,成为牛人要学这么多东西啊!
要求是不是太高了?
其实要求一点也不高,这么点东西都掌握不了的话,怎么能让
别人觉得你"
呢?
需要提一下的是,进入多核时代后,从第2层爬到第3层增加了一道多核编程的门槛。
当然要迈过这道门槛并不难,已经有很多前辈高人迈进了这道门槛,只要循
着他们的足迹前进就可以了。
想迈进这道门槛者不妨去学习一下TBB开源项目的源代码(链接:
http:
//
www.threadingbuildingblocks.org/),然后上Intel的博客(http:
//softwareblogs-
/IntelMulti-core/)去看看相
关文章,再买上几本相关的书籍学习一下。
在国内,一旦成为"
,通常可以到许多知名的公司里去,运气好者可以挂上一个架构师的头衔,甚至挂上一个"
首席架构师"
或者"
首席xx学家"
的头衔
也不足为奇。
有不少爬到这层的人就以为到了楼顶了,可以眼睛往天上看了,开始目空一切起来,以为自己什么都可以做了,什么都懂了,经常在网络上乱砸板砖
是这个群体的最好写照。
由此也看出,国内的牛人数量仍然众多,远多于西方的牛人数量,在这层上仍然是领先的。
也有不少谦虚的"
,知道自己现在还不到半桶水阶段。
他们深知爬楼的游戏就像猴子上树一样,往下看是笑脸,往上看是屁股。
为了多看笑脸,少看屁股,
他们并没有在此停步不前,而是继续寻找到更上一层的楼梯,以便继续往上爬。
第4层大牛
从第3层爬到第4层可不像上面说过的那几层一样容易,要成为大牛的话,你必须要能做牛人们做不了的事情,解决牛人们解决不了问题。
比如牛人们通常都不懂
写操作系统,不会写编译器,不懂得TCP/IP协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为"
大牛"
当然,由于各个专业领域的差别,这里举操作系统、编译器、TCP/IP协议只是作为例子,并不代表成为"
一定需要掌握这些知识,以时下热门的多核
编程来说,如果你能比牛人们更深入地掌握其中的各种思想原理,能更加自如的运用,并有能力去实现一个象开源项目TBB库一样的东西,也可以成为"
大
121.34.111.*3楼
,又或者你能写出一个类似Apache一样的服务器,或者写出一个数据库,都可以成为"
要成为"
并不是一件简单的事情,需要付出比牛人们多得多的努力,一般来说,至少要看过200~400本左右的专业书籍并好好掌握它,除此之外,还
得经常关注网络和期刊杂志上的各种最新信息。
当"
,让"
牛人们"
发现有比他们更牛的人时,对"
们的心灵的震撼是可想而知的。
由于牛人们的数量庞大,并且牛人对大虾和菜鸟
阶层有言传身教的影响,所以大牛们通常能获得非常高的社会知名度,几乎可以用"
引无数菜鸟、大虾、牛人竞折腰"
来形容,看看前面提过的Linus
Torvalds等大牛,应该知道此言不虚。
虽然成为"
的条件看起来似乎很高似的,但是这层楼并不是很难爬的一层,只要通过一定的努力,素质不是很差,还是有许多"
可以爬到这一层的。
由此可知,"
这个楼层的人数其实并不像想像的那么少,例如比尔·
盖茨之类的人好像也是属于这一层的。
这层的人数不少,所以也很难统计除到底是中国的"
数量多还是西方的大牛数量多?
我估计应该是个旗鼓相当的数量,或者中国的"
们
会更多一些。
看到这里,可能会有很多人会以为我在这里说瞎话,LinusTorvalds写出了著名的Linux操作系统,我国并没有人写出过类似的东西啊,我国
的"
怎么能和西方的比呢?
不知大家注意到没有,LinusTorvalds只是写出了一个"
象模象样"
的操作系统雏形,Linux后来真正发
展成闻名全球的开源操作系统期间,完全是因为许多支持开源的商业公司如IBM等,派出了许多比LinusTorvalds更高楼层的幕后英雄在里面
把它开发出来的。
可能有些菜鸟认为LinusTorvalds是程序员中的上帝,不妨说个小故事:
Linus,RichardStallman和DonKnuth(高德纳)一同参加一个会议。
Linus说:
"
上帝说我创造了世界上最优秀的操作系统。
RichardStallman自然不甘示弱地说:
上帝说我创造了世界上最好用的编译器。
DonKnuth一脸疑惑的说:
等等,等等,我什么时候说过这些话?
由此可以看出,LinusTorvalds的技术水平并不像想像中那么高,只是"
和"
觉得"
比他们更牛吧了。
在我国,有一些当时还
处于"
层的人物,也能写出介绍如何写操作系统的书,并且书写得非常出色,而且写出了一个有那么一点点象模象样的操作系统来。
我想中国的"
是不会比西方差的,之所以没有人写出类似的商业产品来,完全是社会环境的原因,并不是技术能力达不到的原因。
们之所以成为大牛,主要的原因是因为把"
给盖了下去,并不是他们自己觉得如何牛。
也许有很多菜鸟、大虾甚至牛人觉得"
这层已经到顶
了,但大多数"
估计应该是有自知之明的,他们知道自己现在还没有爬到半山腰,也就勉强能算个半桶水的水平,其中有些爬到这层没有累趴下,仍然能量
充沛,并且又有志者,还是会继续往更上一层楼爬的。
看到这里,也许有些菜鸟、大虾、牛人想不明白了,还有比"
们更高的楼层,那会是什么样的楼层?
下面就来看看第5层楼的奥妙。
121.34.111.*4楼
第5层专家
当大牛们真正动手做一个操作系统或者类似的其他软件时,他们就会发现自己的基本功仍然有很多的不足。
以内存管理为例,如果直接抄袭Linux或者其他开
源操作系统的内存管理算法,会被人看不起的,如果自动动手实现一个内存管理算法,他会发现现在有关内存管理方法的算法数量众多,自己并没有全部学过和实
践过,不知道到底该用那种内存管理算法。
看到这里,可能有些人已经明白第5层楼的奥妙了,那就是需要做基础研究,当然在计算机里,最重要的就是"
计算"
二字,程序员要做基础研究,主要的内容就
是研究非数值"
非数值计算可是一个非常庞大的领域,不仅时下热门的"
多核计算"
与"
云计算"
属于非数值计算范畴,就是软件需求、设计、测试、调试、评估、质量控制、软
件工程等本质上也属于非数值计算的范畴,甚至芯片硬件设计也同样牵涉到非数值计算。
如果你还没有真正领悟"
二字的含义,那么你就没有机会进到这层
楼来。
可能有人仍然没有明白为什么比尔·
盖茨被划在了大牛层,没有进到这层来。
虽然比尔·
盖茨大学未毕业,学历不够,但是家有藏书2万余册,进入软件这个行业
比绝大部分人都早,撇开他的商业才能不谈,即使只看他的技术水平,也可以算得上是学富五车,顶上几个普通的计算机软件博士之和是没有问题的,比起
LinusTorvalds之类的"
们应该技高一筹才对,怎么还进不了这层楼呢?
非常遗憾的是,从Windows操作系统的实现来看,其对计算的理解是很肤浅的,如果把Google对计算方面的理解比做大学生,比尔·
盖茨只能算做一
个初中生,所以比尔·
盖茨永远只能做个大牛人,成不了"
专家"
看到这里,也许国内的大牛们要高兴起来了,原来比尔·
盖茨也只和我等在同一个层次,只要再升一层就可以超越比尔·
盖茨了。
不过爬到这层可没有从"
牛
人"
升为"
那么简单,人家比尔·
盖茨都家有2万多册书,让你看个500~1000本以上的专业书籍并掌握好它应该要求不高吧。
当然,这并不是主要
的条件,更重要的是,需要到专业的学术站点去学习了,到ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下载论文应该
成为你的定期功课,使用Google搜索引擎中的学术搜索更是应该成为你的日常必修课。
此外,你还得经常关注是否有与你研究相关的开源项目冒出来,例如
当听到有TBB这样针对多核的开源项目时,你应该第一时间到Google里输入"
TBB"
搜索一下,将其源代码下载下来好好研究一番,这样也许你的一只
脚已经快迈进了这层楼的门槛。
当你象我上面说的那样去做了以后,随着时间的推移,总会有某天,你发现,在很多小的领域里,你已经学不到什么新东西了,所有最新出来的研究成果你几乎都
知道。
此时你会发现你比在做"
时的水平不知高出了多少,但是你一点也"
不起来,因为你学的知识和思想都是别人提出来的,你自己并没
有多少自己的知识和思想分享给别人,所以你还得继续往楼上爬才行。
我不知道国内的"
到底有多少,不过有一点可以肯定的是,如果把那些专门蒙大家的"
砖家"
也算上的话,我们的砖家比西方的要多得多。
第6层学者
们想继续往上一层楼爬时,他们几乎一眼就可以看到楼梯的入口,不过令他们吃惊的是,楼梯入口处竖了一道高高的门槛,上面写着"
创新"
二字。
不
121.34.111.*5楼
幸的是,大多数人在爬到第5层楼时已经体能消耗过度,无力翻过这道门槛。
有少数体能充足者,可以轻易翻越这道门槛,但是并不意味着体力消耗过度者就无法翻越,因为你只是暂时还没有掌握恢复体能的方法而已,当掌握了恢复体能的
方法,将体能恢复后,你就可以轻易地翻越这道门槛了。
怎么才能将体能恢复呢?
我们的老祖宗"
孔子"
早就教导过我们"
温故而知新"
,在英文里,研究的单词是"
research"
,其前缀"
re"
search"
分别是什么意思不用我解释吧。
或许有些人觉得"
有些抽象,不好理解,我再给打个简单的比方,比如
你在爬一座高山,爬了半天,中途体力不支,怎么恢复体力呢?
自然是休息一下,重新进食一些食物,体力很快就可以得到恢复。
由此可知,对体能消耗过度者,休息+重新进食通常是恢复体能的最佳选择。
可惜的是,国内的老板们并不懂得这点,他们的公司里不仅连正常国家规定的休息时
间都不给足,有些公司甚至有员工"
过劳死"
出现。
所以国内能翻越"
这道门槛的人是"
少之又少"
,和西方比起来估计是数量级的差别。
再说说重新进食的问题,这个重新进食是有讲究的,需要进食一些基础性易消化的简单食物,不能进食山珍海味级的复杂食物,否则很难快速吸收。
以查找为例,
并不是去天天盯着那些复杂的查找结构和算法进行研究,你需要做的是将二分查找、哈希查找、普通二叉树查找等基础性的知识好好地复习几遍。
以哈希查找为例,首先你需要去将各种冲突解决方法如链式结构、二次哈希等编写一遍,再试试不同种类的哈希函数,然后还需要试试在硬盘中如何实现哈希查
找,并考虑数据从硬盘读到内存后,如何组织硬盘中的数据才能快速地在内存中构建出哈希表来,...,这样你可能需要将一个哈希表写上十几个不同的版本,
并比较各个版本的性能、功能方面的区别和适用范围。
总之,对任何一种简单的东西,你需要考虑各种各样的需求,以需求来驱动研究。
最后你将各种最基础性的查找结构和算法都了然于胸后,或许某天你再看其他更
复杂的查找算法,或者你在散步时,脑袋里灵光一现,突然间就发现了更好的方法,也就从专家晋升为"
学者"
学者所做的事情,通常都是在前人的基础上,进行一些小的优化和改进,例如别人发明了链式基数排序的方法,你第1个发现使用一定的方法,可以用数组替代链
表进行基数排序,性能还能得到进一步提高。
由于学者需要的只是一些小的优化改进,因此中国还是有一定数量的学者。
不过和国外的数量比起来,估计少了一个数量级而已。
也许有人会觉得现在中国许多公司申请专利的数量达到甚至超过西方发达国家了,我们的学者数量应该不会比他们少多少。
因此,有必要把专利和这里说的创新的
区别解释一下。
所谓专利者,只要是以前没有的,新的东西,都可以申请专利;
甚至是以前有的东西,你把他用到了一个新的领域的产品里去,也可以申请专利。
比如你在房子里
造一个水泥柱子,只要以前没有人就这件事申请专利,那么你就可以申请专利,并且下次你把水泥柱子挪一个位置,又可以申请一个新的专利;
或者你在一个柜子
上打上几个孔,下次又把孔的位置改一改,...,均可申请专利。
这层楼里所说的创新,是指学术层面的创新,是基础研究方面的创新,和专利的概念是完全不同的,难度也是完全不同的。
你即使申请了一万个象那种打孔一类的
专利,加起来也够不到这层楼里的一个创新。
121.34.111.*6楼
当你爬到第6层楼时,你也许会有一种突破极限的快感,因为你终于把那道高高的写着"
二字的门槛给翻过去了,实现了"
0"
的突破。
这时,你也许有一
种"
独上高楼,欲望尽天涯路"
的感觉,但是很快你会发现看到的都是比较近的路,远处的路根本看不清楚。
如果你还有足够的体力的话,你会想爬到更高一层的
楼层去。
第7层大师
从第6层楼爬到第7层楼,并没有多少捷径可走,主要看你有没有足够的能量。
你如果能象Hoare一样设计出一个快速排序的算法;
或者象Eugene
W.Myers一样设计出了一个用编辑图的最短路径模型来解决diff问题的算法;
或者象M.J.D.Powell一样提出了一个能够处理非线性规
划问题的SQP方法;
或者你发现基于比较的排序算法,它的复杂度下界为O(NLogN);
或者你发现用栈可以将递归的算法变成非递归的;
或者你设计出一
个红黑树或者AVL树之类的查找结构;
或者你设计出一个象C++或Java一样的语言;
或者你发明了UML;
...,你就爬到了第7层,晋升为"
师"
上面举的这些例子中,其中有些人站的楼层比这层高,这里只是为了形象说明而举例他们的某个成就。
从上面列出的一些大师的贡献可以看出,成为大师必须要有
较大的贡献。
首先解决问题必须是比较重要的,其次你要比前辈们在某方面有一个较大的提高,或者你解决的是一个全新的以前没有解决过的问题;
最重要的是,
主要的思路和方法必须是你自己提供的,不再是在别人的思路基础上进行的优化和改进。
看了上面这些要求,如果能量不够的话,你也许会觉得有些困难,所以不是每个人都能成为"
大师"
的。
中国软件业里能称得上是"
的人,用屈指可数来形
容,估计是绰绰有余。
值得一提得是,国外的"
就象我们的"
一样满天飞的多。
我把我猜测本国有可能进到这层楼的大师列一下,以起个抛砖引玉的作用。
汉王的"
手写识别"
技术由于是完全保密的,不知道它里面用了什么思想,原创思想占
的比重有多少,因此不知道该把它划到这层楼还是更高一层楼去。
原山东大学王小云教授破解DES和MD5算法时,用到的方法不知道是不是完全原创的,如果
是的话也可进到这层楼来。
陈景润虽然没有彻底解决哥德巴赫猜想,但他在解决问题时所用的方法是创新的,因此也可以进到这层楼来。
当然,如果能彻底解决哥德巴赫猜想,那么可以算到
更高的楼层去。
求伯君和王志东等大牛们,他们在做WPS和表格处理之类的软件时,不知是否有较大的原创算法在里面,如果有的话就算我错把他们划到了大牛层。
由于所学有
限,不知道国内还有那些人能够得上"
的级别,或许有少量做研究的教授、院士们,可以达到这个级别,有知道的不妨回个帖子晾一晾。
鉴于"
这个称号的光环效应,相信有不少人梦想着成为"
或许你看了前面举的一些大师的例子,你会觉得要成为大师非常困难。
不妨说一下,现在
有一条通往"
之路的捷径打开了,那就是多核计算领域,有大量的处女地等待大家去挖掘。
以前在单核时代开发的各种算法,现在都需要改写成并行的。
数据结构与算法、图像处理、数值计算、操作系统、编译器、测试调试等各个领域,都存在大量的机
会,可以让你进到这层楼来,甚至有可能让你进到更高一层楼去。
第8层科学家
科学家向来都是一个神圣的称号,因此我把他放在了“大师”之上。
要成为科学家,你的贡献必须超越大师,不妨随便举一些例子。
121.34.111.*7楼
如果你象Dijkstra一样设计了ALGOL语言,提出了程序设计的三种基本结构:
顺序、选择、循环,那么你可以爬到第8层楼来。
顺便说一下,即使抛
开这个成果,Dijkstra凭他的PV操作和信号量概念的提出,同样可以进到这层楼。
如果你象DonKnuth一样,是数据结构与算法这门学科的重要奠基者,你也可以进到这层楼来。
当然,数据结构和算法这门学科不是某个人开创的,是许
多大师和科学家集体开创的。
如果你象巴科斯一样发明了Fortran语言,并提出了巴科斯范式,对高级程序语言的发展起了重要作用,你也可以进到这层楼来。
或者你象KenThompson、DennisRitchie一样发明了Unix操作系统和功能强大、高效、灵活、表达力强的C语言,对操作系统理
论和高级编程语言均作出重大贡献,那么你也可以进到这层楼来。
或者你有FrederickP.Brooks一样机会,可以去领导开发IBM的大型计算机System/360和OS/360操作系统,并在失败后
反思总结,写出《人月神话》,对软件工程作出里程碑式的贡献,你也可以进到这层来。
或者你提出了面向对象设计的基本思想,或者你设计了互联网的TCP/IP协议,或者你象StevenA.Cook一样奠定NP完全性的理论基础,或者
你象FrancesAllen一样专注于并行计算来实现编译技术,在编译优化理论和技术取得基础性的成就,…,均可进入这层。
当然,如果你发明了C++语言或者Java语言,你进不到这层来,因为你用到的主要思想都是这层楼中的科学家提出的,你自己并没有没有多少原创思想在里
面。
看了上面列出的科学家的成就,你会发现,要成为“科学家”,通常要开创一门分支学科,或者是这个分支学科的奠基者,或者在某个分支学科里作出里程碑式的
重大贡献。
如果做不到这些的话,那么你能象AndrewC.Yao(姚期智)一样在对计算理论的多个方向如伪随机数生成,密码学与通信复杂度等各个
方向上作出重要贡