`
senton
  • 浏览: 201789 次
  • 性别: Icon_minigender_1
  • 来自: 紫禁城
社区版块
存档分类
最新评论

程序员的十层楼 (第八、九层)

阅读更多

程序员的十层楼 (第一、二、三层):
http://blog.sina.com.cn/s/blog_496316280100e998.html
程序员的十层楼 (第四、五层):
http://blog.sina.com.cn/s/blog_496316280100e99d.html
程序员的十层楼 (第六、七层):
http://blog.sina.com.cn/s/blog_496316280100e99g.html
程序员的十层楼 (第八、九层):
http://blog.sina.com.cn/s/blog_496316280100e99m.html
程序员的十层楼 (第十层):
http://blog.sina.com.cn/s/blog_496316280100e99n.html
程序员的十层楼 (第十一层):
http://blog.sina.com.cn/s/blog_496316280100e99q.html 


 

 

8 科学家

    科学家向来都是一个神圣的称号,因此我把他放在了“大师”之上。要成为科学家,你的贡献必须超越大师,不妨随便举一些例子。

    如果你象Dijkstra一样设计了ALGOL语言,提出了程序设计的三种基本结构:顺序、选择、循环,那么你可以爬到第8层楼来。顺便说一下,即使抛开这个成果,Dijkstra凭他的PV操作和信号量概念的提出,同样可以进到这层楼。

    如果你象Don Knuth一样,是数据结构与算法这门学科的重要奠基者,你也可以进到这层楼来。当然,数据结构和算法这门学科不是某个人开创的,是许多大师和科学家集体开创的。

    如果你象巴科斯一样发明了Fortran语言,并提出了巴科斯范式,对高级程序语言的发展起了重要作用,你也可以进到这层楼来。

    或者你象Ken ThompsonDennis Ritchie一样发明了Unix操作系统和功能强大、高效、灵活、表达力强的C语言,对操作系统理论和高级编程语言均作出重大贡献,那么你也可以进到这层楼来。

    或者你有Frederick P. Brooks一样机会,可以去领导开发IBM的大型计算机System/360OS/360操作系统,并在失败后反思总结,写出《人月神话》,对软件工程作出里程碑式的贡献,你也可以进到这层来。

    或者你提出了面向对象设计的基本思想,或者你设计了互联网的TCP/IP协议,或者你象Steven A.Cook一样奠定NP完全性的理论基础,或者你象Frances Allen一样专注于并行计算来实现编译技术,在编译优化理论和技术取得基础性的成就,,均可进入这层。

    当然,如果你发明了C++语言或者Java语言,你进不到这层来,因为你用到的主要思想都是这层楼中的科学家提出的,你自己并没有没有多少原创思想在里面。

    看了上面列出的科学家的成就,你会发现,要成为“科学家”,通常要开创一门分支学科,或者是这个分支学科的奠基者,或者在某个分支学科里作出里程碑式的重大贡献。如果做不到这些的话,那么你能象Andrew C. Yao(姚期智)一样在对计算理论的多个方向如伪随机数生成,密码学与通信复杂度等各个方向上作出重要贡献,成为集大成者,也可以进入这层楼。

    成为“科学家”后,如果你有幸象Dijkstra一样,出现在一个非常重视科学的国度。当你去世时,你家乡满城的人都会自动地去为你送葬。不过如果不幸生错地方的话,能不挨“板砖”估计就算万幸了。

    从上面随便举的一些例子中,你可能能猜到,西方科学家的数量是非常多的,于是你会想中国应该也有少量的科学家吧?我可以很负责任地告诉你一个不幸的结果,中国本土产生的科学家的数量为0。目前在国内,软件领域的唯一的科学家就是上面提过的姚期智,还是国外请回来的,并不是本土产生的。

    可能你不同意我说的本土科学家数量为0的结论,因为你经常看到有许多公司里都有所谓“首席XX科学家”的头衔。我想说的是,这些所谓的“首席XX科学家”都是远远够不到这层楼的级别的,有些人的水平估计也就是一个“牛人”或“大牛”的级别,好一点的最多也就一个“学者”的级别。尤其是那些被称作“首席经X学家”的,基本上可以把称号改为“首席坑大家”。

    虽然我国没有人能爬到这层楼上来,但是西方国家仍然有许多人爬到了比这层更高的楼上。如果要问我们比西方落后多少?那么可以简单地回答为:“落后了三层楼”。下面就来看看我们做梦都没有到过的更高一层楼的秘密。

9 大科学家

    进入这层楼的门槛通常需要一些运气,比如某天有个苹果砸到你头上时,你碰巧发现了万有引力,那么你可以进到这层楼来。当然,万有引力几百年前就被人发现了,如果你现在到处嚷嚷着说你发现了万有引力,恐怕马上会有人打110,然后警察会把你送到不正常人类的聚集地去。因此,这里举万有引力的例子,只是说你要有类似的成就才能进到这层楼来。

    牛顿发现万有引力定律开创了经典物理运动力学这门学科,如果你也能开创一门大的学科,那么你就从科学家晋升为“大科学家”。比如爱因斯坦创建了相对论,从一个小职员变成了大科学家。当然大科学家可远不止这两人,数学界里比物理学界更是多得多,如欧几里得创建了平面几何,笛卡尔开创解析几何,还有欧拉、高斯、莱布尼茨等数不清的人物,跟计算相关的大科学家则有图灵等人。

    从上面列出的一些大科学家可以发现,他们的成就不仅是开创了一个大的学科,更重要的是他们的成就上升到了“公理”的层面。发现公理通常是需要一点运气的,如果你的运气不够好的话,另外还有一个笨办法也可以进到这层楼来,那就是成为集大成者。例如冯·诺伊曼,对数学的所有分支都非常了解,许多领域都有较大的贡献,即使撇开他对计算机的开创贡献,成为大科学家照样绰绰有余。

    当然,程序员们最关心的是自己有没有机会变成大科学家。既然计算机这门大学科的开创性成果早就被冯·诺伊曼、图灵等人摘走了,那么程序员们是不是没有机会变成大科学家了呢?我们的古人说得好:“江山代有才人出,各领风骚数百年”,现在在计算机这门学科下面诞生了许多非常重要的大的分支,所以你还是有足够的机会进到这层楼的。

    如果你能够彻底解决自然语言理解(机器翻译)这门学科中的核心问题, 或者你在人工智能或者机器视觉(图像识别)方面有突破性的发现,那么你同样可以轻易地晋升为“大科学家”。这样当某天你老了去世时,或许那天国人已经觉醒,你也能享受到如Dijkstra一样的待遇,有满城甚至全国的人去为你送葬。

    现在还剩下另外一个大家感兴趣的问题没有讨论,那就是这层中已经出现了牛顿、爱因斯坦、高斯等我们平常人都认为是顶级的科学家,是不是这层已经是楼顶了呢?相信还记得本文标题的人应该知道现在仅仅是第9层,还有第10层没有到达呢。可能不少人现在要感到困惑了,难道还有人站在比牛顿、爱因斯坦、高斯等人更高的楼层上?

    这个世界上确实存在可以用一只手的手指数得清的那么几个人,他们爬到了第10层楼上。因此,第10层楼不是虚构的,而是确实存在的。如果对此有疑惑或者认为我在胡诌一番的话,那么不妨继续往下看下去,窥一下第10层楼的秘密。
分享到:
评论

相关推荐

    戏说面向对象程序设计

    第八章反射——程序员的快乐! 第九章会修电脑不会修收音机?——聊设计模式原则 第十章三层架构,分层开发 第十一章无熟人难办事?——聊设计模式迪米特法则 第十二章有了门面,程序员的程序会更加体面 第十三章...

    算法文档,来看看吧

    [原网页] 程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离 [原网页] 数据挖掘中所需的概率论与数理统计知识、上 [原网页] 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法 [原网页] 九月十月...

    面向对象程序设计C#版---.zip

    第八章............反射——程序员的快乐! 第九章............会修电脑不会修收音机?——聊设计模式原则 第十章............三层架构,分层开发 第十一章............

    TCP/IP协议详解卷二:实现

    第八章 IP:网际协议 8.1 引言 8.2 代码介绍 8.3 IP分组 8.4 输入处理:ipintr函数 8.5 转发:ip_forward函数 8.6 输出处理:ip_output函数 8.7 Internet检验和:in_cksum函数 8.8 setsockopt和getsockopt系统调用 ...

    MyEclipse.6.Java.开发中文教程(1-10章).pdf 有详细的目录(书签)

    第八章在第六章基础上介绍基础的 Web 应用(JSP、Servlet)的 开发;第九章则进一步介绍 Struts 1 的开发;第十章重点介绍 Spring 的 IOC,AOP 和整合 Hibernate 的开发;第十一章则介绍 Spring 整合 Struts、...

    MFC深入浅出带目录完整版(李久进chm版)

    如果您对MFC有一定的掌握,可以进一步阅读第八和第九章,了解MFC处理DLL和线程的知识。对于第一至第六章、第十至第十四章,应该把重点放在MFC的设计和实现的分析上。这样,可以深化您对MFC和Windows编程的理解与掌握...

    操作系统精髓与设计原理答案

    第一章 计算机系统概述 复习题: 1.1、 列出并简要地定义计算机的四个主要组成部分。 答:主存储器,存储数据和程序;算术逻辑单元,能处理二进制数据;控制单元,解读存储器中的指令并且使他们得到执行;输入/输出...

    代码优化:有效使用内存.part3

    1.6.8第八步:减少内存访问操作的次数 1.6.9第九步:把VTune当做私人教练 1.6.10第十步:下结论 1.6.11结果与预测 第2章RAM子系统 2.1RAM概述 2.2RAM的层次结构 2.3随机存取存储器 2.4RAM的设计与工作原理 2.4.1内核...

    代码优化:有效使用内存.part1

    1.6.8第八步:减少内存访问操作的次数 1.6.9第九步:把VTune当做私人教练 1.6.10第十步:下结论 1.6.11结果与预测 第2章RAM子系统 2.1RAM概述 2.2RAM的层次结构 2.3随机存取存储器 2.4RAM的设计与工作原理 2.4.1内核...

    代码优化:有效使用内存.part2

    1.6.8第八步:减少内存访问操作的次数 1.6.9第九步:把VTune当做私人教练 1.6.10第十步:下结论 1.6.11结果与预测 第2章RAM子系统 2.1RAM概述 2.2RAM的层次结构 2.3随机存取存储器 2.4RAM的设计与工作原理 2.4.1内核...

    清华大学JAVA教程

    ★ 第八讲 Java网络编程 ◇课前索引 ◇8.1 网络编程基本概念,TCP/IP协议简介 ◇8.2 基于URL的高层次Java网络编程 ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇...

    利用Socket实现双机通信(计算机网络课程设计).doc

    10 九、实验中的问题…………………………………………………14 十、实验结果及分析………………………………………………14 十一、课程设计的总结体会………………………………………16 十二、参考文献………………...

    C语言标准教程第一章 C语言概论

    由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。 C语言的特点  C语言是...

    C#微软培训资料

    第八章 流 程 控 制 .79 8.1 条 件 语 句 .79 8.2 循 环 语 句 .86 8.3 条 件 编 译.90 8.4 异常处理语句 .95 8.5 小 结 .100 第三部分 面向对象的 C#.101 第九章 面向对象的程序设计 .101 9.1 面向...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    (谭浩强)c语言学习书

    由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。 1.3 C语言版本 目前最...

    ASP.net技术内幕

    7.5.2 使用DeviceSpecific选择设备 7.5.3 使用表单模板集 7.6 小结 <br/>第8章 使用第三方控件 <br/>8.1 使用Microsoft Internet Explorer WebControls 8.1.1 使用TreeView控件 ...

    asp.net面试题

    十、int[][] myArray=new int[3][]{ new int[3]{ 5, 6, 2 }, new int[5]{ 6, 9, 7, 8, 3 }, new int[2]{ 3, 2 }}; myArray[2][2]的值是( ) A.9B.2C.6D.越界 十一、要为做了输出缓存的页面实现即时判断用户IP来路,...

Global site tag (gtag.js) - Google Analytics