精华内容
下载资源
问答
  • 这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。 网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。 网络协议的三个组成要素 ...

    计算机网络中的数据交换必须遵守事先约定好的规则。

    这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。

    网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。

    网络协议的三个组成要素

    语法:数据与控制信息的结构或格式 。

    语义:需要发出何种控制信息,完成何种动作以及做出何种响应。

    同步:事件实现顺序的详细说明。

    协议的两种形式

    一种是使用便于人来阅读和理解的文字描述。

    另一种是使用让计算机能够理解的程序代码。

    这两种不同形式的协议都必须能够对网络上信息交换过程做出精确的解释。

    划分层次的概念举例

    主机1向主机2通过网络发送文件。

    可以将要做的工作进行如下的划分:

    • 第一类工作与传送文件直接有关。 确信对方已做好接收和存储文件的准备。 双方已协调好一致的文件格式。

    • 两个主机将文件传送模块作为最高的一层,剩下的工作由下面的模块负责。

    分层的好处与缺点

    好处 :各层之间是独立的。 灵活性好。 结构上可分割开。 易于实现和维护。 能促进标准化工作。

    缺点 :降低效率。有些功能会在不同的层次中重复出现,因而产生了额外开销。

    层数多少要适当,层数太少,就会使每一层的协议太复杂。 层数太多,又会在描述和综合各层功能的系统工程 任务时遇到较多的困难。

    各层完成的主要功能 

    ①差错控制:使相应层次对等方的通信更加可靠。

    ②流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。

    ③分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。

    ④复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。

    ⑤连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
     

    计算机网络的体系结构 

    计算机网络的体系结构 (architecture) 是计算机网络的各层及其协议的集合。

    体系结构就是这个计算机网络及其部件所应完成的功能的精确定义。

    实现 (implementation) 是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。

    体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。

    展开全文
  • 程序员十大层次

    2011-08-23 08:57:28
    觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别: 中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个问题,必须...

     程序员的十个层


    觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别:
    中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员
    同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技
    术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多
    大。
    当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅
    代表个人的观点,如有不当之处,还请砸板砖予以纠正。
    一、菜鸟
    第1 层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算
    机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,
    均可入门迈进这层。
    二、大虾
    从第1 层爬到第2 层相对容易一些,以C/C++程序员为例,只要熟练掌握C/C++编程语言,
    掌握C 标准库和常用的各种数据结构算法,掌握STL 的基本实现和使用方法,掌握多线程编程
    基础知识,掌握一种开发环境,再对各种操作系统的API 都去使用一下,搞网络编程的当然对
    socket 编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等,学习一些测
    试、软件工程和质量控制的基本知识,大部分人经过2~3 年的努力,都可以爬到第2 层,晋升
    为"大虾"。
    三、牛人
    由于"大虾"们经常被一些疑难问题给卡住,所以有了"大虾"们只好继续学习,他们需要将原
    来所学的知识进一步熟练掌握,比如以熟练掌握C++编程语言为例,除了学一些基础性的C++
    书籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要
    的是需要了解C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和
    线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数
    据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好
    的理解等。
    学习上面说的这些知识不是一挥而就的,不看个三五十本书并掌握它是做不到的。以数据结
    构算法来说,至少要看个5~10 本这方面的著作;以软件设计来说,光懂结构化设计、面向对
    象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使
    用的设计、面向数据结构算法的设计、情感化设计等,否则是很难进到这个楼层的。
    四、大牛
    从第3 层爬到第4 层可不像上面说过的那几层一样容易,要成为大牛的话,你必须要能做
    牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编
    译器,不懂得TCP/IP 协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话,
    那么你就从牛人升级为"大牛"了。
    当然,由于各个专业领域的差别,这里举操作系统、编译器、TCP/IP 协议只是作为例子,
    并不代表成为"大牛"一定需要掌握这些知识,以时下热门的多核编程来说,如果你能比牛人们更
    深入地掌握其中的各种思想原理,能更加自如的运用,并有能力去实现一个象开源项目TBB 库
    一样的东西,也可以成为"大牛",又或者你能写出一个类似Apache 一样的服务器,或者写出一
    个数据库,都可以成为"大牛"。
    当"牛人"晋升为"大牛",让"牛人们"发现有比他们更牛的人时,对"牛人"们的心灵的震撼是可
    想而知的。由于牛人们的数量庞大,并且牛人对大虾和菜鸟阶层有言传身教的影响,所以大牛们
    通常能获得非常高的社会知名度,几乎可以用"引无数菜鸟、大虾、牛人竞折腰"来形容,看看前
    面提过的Linus Torvalds 等大牛,应该知道此言不虚。
    虽然成为"大牛"的条件看起来似乎很高似的,但是这层楼并不是很难爬的一层,只要通过一定的
    努力,素质不是很差,还是有许多"牛人"可以爬到这一层的。由此可知,"大牛"这个楼层的人数
    其实并不像想像的那么少,例如比尔·盖茨之类的人好像也是属于这一层的。
    五、专家
    当大牛们真正动手做一个操作系统或者类似的其他软件时,他们就会发现自己的基本功仍然有很
    多的不足。以内存管理为例,如果直接抄袭Linux 或者其他开源操作系统的内存管理算法,会被
    人看不起的,如果自动动手实现一个内存管理算法,他会发现现在有关内存管理方法的算法数量
    众多,自己并没有全部学过和实践过,不知道到底该用那种内存管理算法。
    看到这里,可能有些人已经明白第5 层楼的奥妙了,那就是需要做基础研究,当然在计算机里,
    最重要的就是"计算"二字,程序员要做基础研究,主要的内容就是研究非数值"计算"。
    非数值计算可是一个非常庞大的领域,不仅时下热门的"多核计算"与"云计算"属于非数值计算范
    畴,就是软件需求、设计、测试、调试、评估、质量控制、软件工程等本质上也属于非数值计算
    的范畴,甚至芯片硬件设计也同样牵涉到非数值计算。如果你还没有真正领悟"计算"二字的含义,
    那么你就没有机会进到这层楼来。
    六、学者
    当"专家"们想继续往上一层楼爬时,他们几乎一眼就可以看到楼梯的入口,不过令他们吃惊的是,
    楼梯入口处竖了一道高高的门槛,上面写着"创新"二字。不幸的是,大多数人在爬到第5 层楼时
    已经体能消耗过度,无力翻过这道门槛。
    以查找为例,并不是去天天盯着那些复杂的查找结构和算法进行研究,你需要做的是将二分查找、
    哈希查找、普通二叉树查找等基础性的知识好好地复习几遍。
    以哈希查找为例,首先你需要去将各种冲突解决方法如链式结构、二次哈希等编写一遍,再试试
    不同种类的哈希函数,然后还需要试试在硬盘中如何实现哈希查找,并考虑数据从硬盘读到内存
    后,如何组织硬盘中的数据才能快速地在内存中构建出哈希表来,...,这样你可能需要将一个哈
    希表写上十几个不同的版本,并比较各个版本的性能、功能方面的区别和适用范围。
    总之,对任何一种简单的东西,你需要考虑各种各样的需求,以需求来驱动研究。最后你将各种
    最基础性的查找结构和算法都了然于胸后,或许某天你再看其他更复杂的查找算法,或者你在散
    步时,脑袋里灵光一现,突然间就发现了更好的方法,也就从专家晋升为"学者"了。
    七、大师
    从第6 层楼爬到第7 层楼,并没有多少捷径可走,主要看你有没有足够的能量。你如果能象Hoare
    一样设计出一个快速排序的算法;或者象Eugene W. Myers 一样设计出了一个用编辑图的最短
    路径模型来解决diff 问题的算法;或者象M.J.D. Powell 一样提出了一个能够处理非线性规划问
    题的SQP 方法;或者你发现基于比较的排序算法,它的复杂度下界为O(NLogN);或者你发现
    用栈可以将递归的算法变成非递归的;或者你设计出一个红黑树或者AVL 树之类的查找结构;
    或者你设计出一个象C++或Java 一样的语言;或者你发明了UML;...,你就爬到了第7 层,晋
    升为"大师"了。
    八、科学家
    科学家向来都是一个神圣的称号,因此我把他放在了“大师”之上。要成为科学家,你的贡献必须
    超越大师,不妨随便举一些例子。
    如果你象Dijkstra 一样设计了ALGOL 语言,提出了程序设计的三种基本结构:顺序、选择、循
    环,那么你可以爬到第8 层楼来。顺便说一下,即使抛开这个成果,Dijkstra 凭他的PV 操作和
    信号量概念的提出,同样可以进到这层楼。
    如果你象Don Knuth 一样,是数据结构与算法这门学科的重要奠基者,你也可以进到这层楼来。
    当然,数据结构和算法这门学科不是某个人开创的,是许多大师和科学家集体开创的。
    如果你象巴科斯一样发明了Fortran 语言,并提出了巴科斯范式,对高级程序语言的发展起了重
    要作用,你也可以进到这层楼来。
    九、大科学家
    进入这层楼的门槛通常需要一些运气,比如某天有个苹果砸到你头上时,你碰巧发现了万有引力,
    那么你可以进到这层楼来。当然,万有引力几百年前就被人发现了,如果你现在到处嚷嚷着说你
    发现了万有引力,恐怕马上会有人打110,然后警察会把你送到不正常人类的聚集地去。因此,
    这里举万有引力的例子,只是说你要有类似的成就才能进到这层楼来。
    当然,程序员们最关心的是自己有没有机会变成大科学家。既然计算机这门大学科的开创性成果
    早就被冯·诺伊曼、图灵等人摘走了,那么程序员们是不是没有机会变成大科学家了呢?我们的
    古人说得好:“江山代有才人出,各领风骚数百年”,现在在计算机这门学科下面诞生了许多非常
    重要的大的分支,所以你还是有足够的机会进到这层楼的。
    如果你能够彻底解决自然语言理解(机器翻译)这门学科中的核心问题, 或者你在人工智能或
    者机器视觉(图像识别)方面有突破性的发现,那么你同样可以轻易地晋升为“大科学家”。这
    样当某天你老了去世时,或许那天国人已经觉醒,你也能享受到如Dijkstra 一样的待遇,有满城
    甚至全国的人去为你送葬。
    十、大哲
    看了这层楼的名字“大哲”,可能不少人已经猜到了这层楼的秘密,那就是你的成果必须要上升到
    哲学的高度,你才有机会能进到这层来。
    当然,上升到哲学高度只是一个必要条件,牛顿的万有引力似乎也上升到了哲学的高度,因为不
    知道引力到底是怎么来的,但是牛顿没有被划到这一层,因为进到这层还有另外的条件,那就是
    你的成果必须引起了哲学上的深度思考,并能让人们的世界观向前跨进一大步。窃以为牛顿、爱
    因斯坦等人的成就还达不到让人们世界观向前跨进一大步的程度。
    所以,这层楼中的人的成就对我们普通人认识世界非常重要,你可以不学相对论,但是你不可以
    不对这层楼的人所作出的成就不了解,否则你的世界观就是极其不完整的,会犯许多认识上的错
    误。不幸的是,中国的科普知识普及还不够到位,知道这层楼成就的人好像并不多,程序员中恐
    怕更少。下面就来看看这些用一只手的手指数得清的大哲们,到底有什么成就,能比万有引力定
    律和相对论还重要。
    1、希尔伯特(1862~1943)
    第1 位进到此楼层是一位名叫“希尔伯特”的大数学家,如果你学过《泛函分析》,那么你在学
    习希尔伯特空间时可能已经对这位大数学家有所了解;如果你不是学数学出身的,又对数学史不
    感兴趣的话,恐怕你从来没有听说过这个名字。不过如果我问一下,知不知道二次世界大战前世
    界数学中心在那里,你肯定会有兴趣想知道。
    不妨说一下,二战前整个世界的数学中心就在德国的哥廷根,而我们这位大数学家希尔伯特便是
    它的统帅和灵魂人物。即使在二战期间,希特勒和丘吉尔也有协定,德国不轰炸牛津和剑桥,作
    为回报,英国不轰炸海德堡和哥廷根。
    2、哥德尔(1906~1978)
    这位大哲的名字叫“哥德尔(G?del) ”,你可能从来也没有听说过这个名字,即使你读了一个数
    学系的博士学位,如果你的研究方向不和这位大哲对口的话,你也不一定了解这位大哲的成就,
    更不知道他的成果对我们这个世界有何意义。
    简单地说,这位大哲20 多岁时就证明了两个定理,一个叫做“哥德尔完全性定理”,另一个更
    重要的叫做“哥德尔不完全性定理”。你也许会觉得奇怪,第9 层楼的成就就已经上升到了公理
    的高度,这种证明定理的事情不是学者和大师们做的事情吗?怎么能比第9 层楼的成就还高呢?
    下面就来简单说一下这两个定理的含义,你就会明白这属于系统级的定理,绝不是普通的定理和
    公理所能比拟的。
    “哥德尔完全性定理”证明了逻辑学的几条公理是完备的,即任何一个由这些公理所产生出的问
    题,在这个公理系统内可以判定它是真的还是假的,这个结论表明了我们人类所拥有的逻辑思维
    能力是完备的。这条定理并不能将其带入这层楼来,带其进入这层楼的是另一条定理。
    可能你看过《未来战士》、《黑客帝国》、《I,Robot》之类的科幻电影,于是你产生制造一个和人
    一样或者比人更高一级的智能机器人的想法,这就引入了一个达到哲学高度的问题,“人到底能
    不能制造出具有和人一样的思维能力的机器来?”。
    我只能告诉你,“你的愿望是良好的,但现实是残酷的”。如果你仔细思考一下不完全性定理的含
    义,并结合现代计算机所具有的能力分析一下,你会发现这个问题的答案暂时是否定的。如果你
    想造出和人一样思维能力的机器,那么你需要去好好学习这位大哲及其后续研究者的成果,并在
    他们的基础上有新的突破才行。
    3、海森堡(1901~1976)
    海森堡这个名字相信没有几个人不知道的,大部分人在学习物理时都学过他的“测不准关系”,
    也就是因为这个“测不准关系”,海森堡爬到了第十层楼。
    如果你看过《时间简史》和《霍金讲演录-黑洞、婴儿宇宙及其他》,你也许已经了解测不准关
    系的威力,所以这里不想做过多的讨论,只谈一些和本土产生的哲学思想相关的东西。
    十一、超越第十层的上帝
    看了上面的小标题,你可能会觉得奇怪,这篇文章不是讲“程序员的十层楼”吗?怎么冒出了第
    11 层来了?
    其实这并不矛盾,程序员确实只有十层楼,因为爬到第11 层时,已经变成上帝,不再是程序员
    了;所以超出10 层楼本身并不重要,关键的问题是看你有没有能力变成上帝。
    1、谁是上帝?
    菜鸟们认为Linus Torvalds 是程序员中的上帝,看完了前面各层楼的介绍,此时再看到这句话,
    相信你要忍不住在心里笑起来。当然,你会不会笑起来是事先注定的。Don Knuth 也不是上帝,
    他离上帝还有三层楼的距离。即使是大哲们,他们离天堂也还差一层楼,因此这个世界上有史以
    来还没有任何一个人变成过上帝。
    我们感兴趣的是,将来会不会有人爬到比大哲们更高的楼层上,变成了上帝。
    要变成上帝,你得有上帝一样的能力,上帝会造人,你会吗?
    你也许会怯生生地问:“我可以和爱人生小孩,算不算造人?”,你可能还会理直气壮地说:“现
    在生物学上都可以克隆人了,早就有人掌握了造人的方法”。
    事实上克隆人需要有人的体细胞,必须要先有人才会有体细胞。上帝造人时,这个世界上并没有
    人,是从无生命的物质“尘土”中创造出的人。因此,用最原始的方法生人和克隆人都是从有生
    命信息的物质中生人,不能算作造人。
    读后感:
    终于轮到我来发表一下看法了,这也是我为什么要把这篇文章摘抄下来的原因。可以看出本文作
    者是为C/C++程序员并且受过良好的教育,以及高于编程以外的思考。要说作者参透了一切,
    看破了红尘。那到未必,不过作者的十个层次分级对一名程序员来说一个很好的指导性意见。最
    后用《天道》中的《自嘲》做为结束:
    卜算子·自嘲
    本是后山人,偶做前堂客,醉舞经阁半卷书,坐井说天阔。
    大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错。

    展开全文
  • 程序员10个层次

    2011-10-12 10:54:00
    程序员的10个层次觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别:中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个...
    程序员的10个层次
    觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别:
    中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技 术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多 大。
    当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅 代表个人的观点,如有不当之处,还请砸板砖予以纠正。
    一、 菜鸟
    第 1 层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算 机专业的一些基础知识,掌握一门基本的编程语言如 C/C++,或者 Java,或者 JavaScript,或者O-C..., 均可入门迈进这层。
    二、 大虾
    从第 1 层爬到第 2 层相对容易一些,以 C/C++程序员为例,只要熟练掌握 C/C++编程语言,
    掌握 C 标准库和常用的各种数据结构算法,掌握 STL 的基本实现和使用方法,掌握多线程编程 基础知识,掌握一种开发环境,再对各种操作系统的 API 都去使用一下,搞网络编程的当然对 socket 编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等,学习一些测 试、软件工程和质量控制的基本知识,大部分人经过 2~3 年的努力,都可以爬到第 2 层,晋升 为"大虾"。
    三、 牛人
    由于"大虾"们经常被一些疑难问题给卡住,所以有了"大虾"们只好继续学习,他们需要将原
    来所学的知识进一步熟练掌握,比如以熟练掌握 C++编程语言为例,除了学一些基础性的 C++ 书籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要 的是需要了解 C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和 线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数 据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好 的理解等。
    学习上面说的这些知识不是一挥而就的,不看个三五十本书并掌握它是做不到的。以数据结 构算法来说,至少要看个 5~10 本这方面的著作;以软件设计来说,光懂结构化设计、面向对 象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使 用的设计、面向数据结构算法的设计、情感化设计等,否则是很难进到这个楼层的。
    四、 大牛
    从第 3 层爬到第 4 层可不像上面说过的那几层一样容易,要成为大牛的话,你必须要能做
    牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编 译器,不懂得 TCP/IP 协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话, 那么你就从牛人升级为"大牛"了。当然,由于各个专业领域的差别,这里举操作系统、编译器、TCP/IP 协议只是作为例子, 并不代表成为"大牛"一定需要掌握这些知识,以时下热门的多核编程来说,如果你能比牛人们更 深入地掌握其中的各种思想原理,能更加自如的运用,并有能力去实现一个象开源项目TBB 库 一样的东西,也可以成为"大牛",又或者你能写出一个类似 Apache 一样的服务器,或者写出一 个数据库,都可以成为"大牛"。
    当"牛人"晋升为"大牛",让"牛人们"发现有比他们更牛的人时,对"牛人"们的心灵的震撼是可 想而知的。由于牛人们的数量庞大,并且牛人对大虾和菜鸟阶层有言传身教的影响,所以大牛们 通常能获得非常高的社会知名度,几乎可以用"引无数菜鸟、大虾、牛人竞折腰"来形容,看看前 面提过的 Linus Torvalds等大牛,应该知道此言不虚。
    虽然成为"大牛"的条件看起来似乎很高似的,但是这层楼并不是很难爬的一层,只要通过一定的 努力,素质不是很差,还是有许多"牛人"可以爬到这一层的。由此可知,"大牛"这个楼层的人数 其实并不像想像的那么少,例如比尔·盖茨之类的人好像也是属于这一层的。
    五、 专家
    当大牛们真正动手做一个操作系统或者类似的其他软件时,他们就会发现自己的基本功仍然有很 多的不足。以内存管理为例,如果直接抄袭 Linux 或者其他开源操作系统的内存管理算法,会被 人看不起的,如果自动动手实现一个内存管理算法,他会发现现在有关内存管理方法的算法数量 众多,自己并没有全部学过和实践过,不知道到底该用那种内存管理算法。
    看到这里,可能有些人已经明白第5 层楼的奥妙了,那就是需要做基础研究,当然在计算机里, 最重要的就是"计算"二字,程序员要做基础研究,主要的内容就是研究非数值"计算"。
    非数值计算可是一个非常庞大的领域,不仅时下热门的"多核计算"与"云计算"属于非数值计算范 畴,就是软件需求、设计、测试、调试、评估、质量控制、软件工程等本质上也属于非数值计算 的范畴,甚至芯片硬件设计也同样牵涉到非数值计算。如果你还没有真正领悟"计算"二字的含义, 那么你就没有机会进到这层楼来。
    六、 学者
    当"专家"们想继续往上一层楼爬时,他们几乎一眼就可以看到楼梯的入口,不过令他们吃惊的是, 楼梯入口处竖了一道高高的门槛,上面写着"创新"二字。不幸的是,大多数人在爬到第 5 层楼时 已经体能消耗过度,无力翻过这道门槛。
    以查找为例,并不是去天天盯着那些复杂的查找结构和算法进行研究,你需要做的是将二分查找、 哈希查找、普通二叉树查找等基础性的知识好好地复习几遍。
    以哈希查找为例,首先你需要去将各种冲突解决方法如链式结构、二次哈希等编写一遍,再试试 不同种类的哈希函数,然后还需要试试在硬盘中如何实现哈希查找,并考虑数据从硬盘读到内存 后,如何组织硬盘中的数据才能快速地在内存中构建出哈希表来,...,这样你可能需要将一个哈 希表写上十几个不同的版本,并比较各个版本的性能、功能方面的区别和适用范围。
    总之,对任何一种简单的东西,你需要考虑各种各样的需求,以需求来驱动研究。最后你将各种 最基础性的查找结构和算法都了然于胸后,或许某天你再看其他更复杂的查找算法,或者你在散
    步时,脑袋里灵光一现,突然间就发现了更好的方法,也就从专家晋升为"学者"了。
    七、 大师
    从第 6 层楼爬到第 7 层楼,并没有多少捷径可走,主要看你有没有足够的能量。你如果能象 Hoare 一样设计出一个快速排序的算法;或者象Eugene W. Myers 一样设计出了一个用编辑图的最短 路径模型来解决 diff 问题的算法;或者象 M.J.D. Powell 一样提出了一个能够处理非线性规划问 题的 SQP 方法;或者你发现基于比较的排序算法,它的复杂度下界为O(NLogN);或者你发现 用栈可以将递归的算法变成非递归的;或者你设计出一个红黑树或者 AVL 树之类的查找结构; 或者你设计出一个象C++或 Java 一样的语言;或者你发明了UML;...,你就爬到了第7 层,晋 升为"大师"了。
    八、科学家
    科学家向来都是一个神圣的称号,因此我把他放在了“大师”之上。要成为科学家,你的贡献必须 超越大师,不妨随便举一些例子。
    如果你象 Dijkstra 一样设计了 ALGOL 语言,提出了程序设计的三种基本结构:顺序、选择、循 环,那么你可以爬到第 8 层楼来。顺便说一下,即使抛开这个成果,Dijkstra 凭他的 PV 操作和 信号量概念的提出,同样可以进到这层楼。
    如果你象DonKnuth一样,是数据结构与算法这门学科的重要奠基者,你也可以进到这层楼来。 当然,数据结构和算法这门学科不是某个人开创的,是许多大师和科学家集体开创的。 如果你象巴科斯一样发明了Fortran 语言,并提出了巴科斯范式,对高级程序语言的发展起了重 要作用,你也可以进到这层楼来。
    九、大科学家
    进入这层楼的门槛通常需要一些运气,比如某天有个苹果砸到你头上时,你碰巧发现了万有引力, 那么你可以进到这层楼来。当然,万有引力几百年前就被人发现了,如果你现在到处嚷嚷着说你 发现了万有引力,恐怕马上会有人打110,然后警察会把你送到不正常人类的*****地去。因此, 这里举万有引力的例子,只是说你要有类似的成就才能进到这层楼来。
    当然,程序员们最关心的是自己有没有机会变成大科学家。既然计算机这门大学科的开创性成果 早就被冯·诺伊曼、图灵等人摘走了,那么程序员们是不是没有机会变成大科学家了呢?我们的 古人说得好:“江山代有才人出,各领风骚数百年”,现在在计算机这门学科下面诞生了许多非常 重要的大的分支,所以你还是有足够的机会进到这层楼的。
    如果你能够彻底解决自然语言理解(机器翻译)这门学科中的核心问题,或者你在人工智能或 者机器视觉(图像识别)方面有突破性的发现,那么你同样可以轻易地晋升为“大科学家”。这 样当某天你老了去世时,或许那天国人已经觉醒,你也能享受到如 Dijkstra 一样的待遇,有满城 甚至全国的人去为你送葬。
    十、 大哲
    看了这层楼的名字“大哲”,可能不少人已经猜到了这层楼的秘密,那就是你的成果必须要上升到 哲学的高度,你才有机会能进到这层来。
    当然,上升到哲学高度只是一个必要条件,牛顿的万有引力似乎也上升到了哲学的高度,因为不 知道引力到底是怎么来的,但是牛顿没有被划到这一层,因为进到这层还有另外的条件,那就是 你的成果必须引起了哲学上的深度思考,并能让人们的世界观向前跨进一大步。窃以为牛顿、爱 因斯坦等人的成就还达不到让人们世界观向前跨进一大步的程度。
    所以,这层楼中的人的成就对我们普通人认识世界非常重要,你可以不学相对论,但是你不可以 不对这层楼的人所作出的成就不了解,否则你的世界观就是极其不完整的,会犯许多认识上的错 误。不幸的是,中国的科普知识普及还不够到位,知道这层楼成就的人好像并不多,程序员中恐 怕更少。下面就来看看这些用一只手的手指数得清的大哲们,到底有什么成就,能比万有引力定 律和相对论还重要。
    1、希尔伯特 (1862~1943)
    第 1 位进到此楼层是一位名叫“希尔伯特”的大数学家,如果你学过《泛函分析》,那么你在学 习希尔伯特空间时可能已经对这位大数学家有所了解;如果你不是学数学出身的,又对数学史不 感兴趣的话,恐怕你从来没有听说过这个名字。不过如果我问一下,知不知道二次世界大战前世 界数学中心在那里,你肯定会有兴趣想知道。
    不妨说一下,二战前整个世界的数学中心就在德国的哥廷根,而我们这位大数学家希尔伯特便是 它的统帅和灵魂人物。即使在二战期间,希特勒和丘吉尔也有协定,德国不轰炸牛津和剑桥,作 为回报,英国不轰炸海德堡和哥廷根。
    2、哥德尔 (1906~1978)
    这位大哲的名字叫“哥德尔 (G?del) ”,你可能从来也没有听说过这个名字,即使你读了一个数 学系的博士学位,如果你的研究方向不和这位大哲对口的话,你也不一定了解这位大哲的成就, 更不知道他的成果对我们这个世界有何意义。
    简单地说,这位大哲 20 多岁时就证明了两个定理,一个叫做“哥德尔完全性定理”,另一个更 重要的叫做“哥德尔不完全性定理”。你也许会觉得奇怪,第 9 层楼的成就就已经上升到了公理 的高度,这种证明定理的事情不是学者和大师们做的事情吗?怎么能比第 9 层楼的成就还高呢? 下面就来简单说一下这两个定理的含义,你就会明白这属于系统级的定理,绝不是普通的定理和 公理所能比拟的。
    “哥德尔完全性定理”证明了逻辑学的几条公理是完备的,即任何一个由这些公理所产生出的问 题,在这个公理系统内可以判定它是真的还是假的,这个结论表明了我们人类所拥有的逻辑思维 能力是完备的。这条定理并不能将其带入这层楼来,带其进入这层楼的是另一条定理。
    可能你看过《未来战士》、《黑客帝国》、《I,Robot》之类的科幻电影,于是你产生制造一个和人 一样或者比人更高一级的智能机器人的想法,这就引入了一个达到哲学高度的问题,“人到底能 不能制造出具有和人一样的思维能力的机器来?”。
    我只能告诉你,“你的愿望是良好的,但现实是残酷的”。如果你仔细思考一下不完全性定理的含 义,并结合现代计算机所具有的能力分析一下,你会发现这个问题的答案暂时是否定的。如果你
    想造出和人一样思维能力的机器,那么你需要去好好学习这位大哲及其后续研究者的成果,并在 他们的基础上有新的突破才行。
    3、海森堡 (1901~1976) 海森堡这个名字相信没有几个人不知道的,大部分人在学习物理时都学过他的“测不准关系”,
    也就是因为这个“测不准关系”,海森堡爬到了第十层楼。
    如果你看过《时间简史》和《霍金讲演录-黑洞、婴儿宇宙及其他》,你也许已经了解测不准关 系的威力,所以这里不想做过多的讨论,只谈一些和本土产生的哲学思想相关的东西。
    十一、超越第十层的上帝
    看了上面的小标题,你可能会觉得奇怪,这篇文章不是讲“程序员的十层楼”吗?怎么冒出了第 11 层来了?
    其实这并不矛盾,程序员确实只有十层楼,因为爬到第 11 层时,已经变成上帝,不再是程序员 了;所以超出 10 层楼本身并不重要,关键的问题是看你有没有能力变成上帝。
    1、谁是上帝?
    菜鸟们认为 Linus Torvalds是程序员中的上帝,看完了前面各层楼的介绍,此时再看到这句话, 相信你要忍不住在心里笑起来。当然,你会不会笑起来是事先注定的。Don Knuth 也不是上帝, 他离上帝还有三层楼的距离。即使是大哲们,他们离天堂也还差一层楼,因此这个世界上有史以 来还没有任何一个人变成过上帝。
    我们感兴趣的是,将来会不会有人爬到比大哲们更高的楼层上,变成了上帝。 要变成上帝,你得有上帝一样的能力,上帝会造人,你会吗?
    你也许会怯生生地问:“我可以和爱人生小孩,算不算造人?”,你可能还会理直气壮地说:“现 在生物学上都可以克隆人了,早就有人掌握了造人的方法”。
    事实上克隆人需要有人的体细胞,必须要先有人才会有体细胞。上帝造人时,这个世界上并没有 人,是从无生命的物质“尘土”中创造出的人。因此,用最原始的方法生人和克隆人都是从有生 命信息的物质中生人,不能算作造人。
    读后感: 终于轮到我来发表一下看法了,这也是我为什么要把这篇文章摘抄下来的原因。可以看出本文作 者是为 C/C++程序员并且受过良好的教育,以及高于编程以外的思考。要说作者参透了一切, 看破了红尘。那到未必,不过作者的十个层次分级对一名程序员来说一个很好的指导性意见。
    最 后用《天道》中的《自嘲》做为结束:
    卜算子·自嘲
    本是后山人,偶做前堂客,醉舞经阁半卷书,坐井说天阔。
    大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错。(转)
    展开全文
  •  觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别: 中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个问题,必须先...

    请跟贴,自己达到哪个层次了!
       觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别:
      中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技 术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多 大。
    当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅 代表个人的观点,如有不当之处,还请砸板砖予以纠正。
    一、 菜鸟
      第 1 层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算 机专业的一些基础知识,掌握一门基本的编程语言如 C/C++,或者 Java,或者 JavaScript,或者O-C..., 均可入门迈进这层。
    二、 大虾 
      从第 1 层爬到第 2 层相对容易一些,以 C/C++程序员为例,只要熟练掌握 C/C++编程语言,
    掌握 C 标准库和常用的各种数据结构算法,掌握 STL 的基本实现和使用方法,掌握多线程编程 基础知识,掌握一种开发环境,再对各种操作系统的 API 都去使用一下,搞网络编程的当然对 socket 编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等,学习一些测 试、软件工程和质量控制的基本知识,大部分人经过 2~3 年的努力,都可以爬到第 2 层,晋升 为"大虾"。
    三、 牛人 
      由于"大虾"们经常被一些疑难问题给卡住,所以有了"大虾"们只好继续学习,他们需要将原
    来所学的知识进一步熟练掌握,比如以熟练掌握 C++编程语言为例,除了学一些基础性的 C++ 书籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要 的是需要了解 C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和 线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数 据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好 的理解等。
    学习上面说的这些知识不是一挥而就的,不看个三五十本书并掌握它是做不到的。以数据结 构算法来说,至少要看个 5~10 本这方面的著作;以软件设计来说,光懂结构化设计、面向对 象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使 用的设计、面向数据结构算法的设计、情感化设计等,否则是很难进到这个楼层的。
    四、 大牛
      从第 3 层爬到第 4 层可不像上面说过的那几层一样容易,要成为大牛的话,你必须要能做
    牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编 译器,不懂得 TCP/IP 协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话, 那么你就从牛人升级为"大牛"了。当然,由于各个专业领域的差别,这里举操作系统、编译器、TCP/IP 协议只是作为例子, 并不代表成为"大牛"一定需要掌握这些知识,以时下热门的多核编程来说,如果你能比牛人们更 深入地掌握其中的各种思想原理,能更加自如的运用,并有能力去实现一个象开源项目TBB 库 一样的东西,也可以成为"大牛",又或者你能写出一个类似 Apache 一样的服务器,或者写出一 个数据库,都可以成为"大牛"。
    当"牛人"晋升为"大牛",让"牛人们"发现有比他们更牛的人时,对"牛人"们的心灵的震撼是可 想而知的。由于牛人们的数量庞大,并且牛人对大虾和菜鸟阶层有言传身教的影响,所以大牛们 通常能获得非常高的社会知名度,几乎可以用"引无数菜鸟、大虾、牛人竞折腰"来形容,看看前 面提过的 Linus Torvalds等大牛,应该知道此言不虚。
    虽然成为"大牛"的条件看起来似乎很高似的,但是这层楼并不是很难爬的一层,只要通过一定的 努力,素质不是很差,还是有许多"牛人"可以爬到这一层的。由此可知,"大牛"这个楼层的人数 其实并不像想像的那么少,例如比尔·盖茨之类的人好像也是属于这一层的。
    五、 专家
      当大牛们真正动手做一个操作系统或者类似的其他软件时,他们就会发现自己的基本功仍然有很 多的不足。以内存管理为例,如果直接抄袭 Linux 或者其他开源操作系统的内存管理算法,会被 人看不起的,如果自动动手实现一个内存管理算法,他会发现现在有关内存管理方法的算法数量 众多,自己并没有全部学过和实践过,不知道到底该用那种内存管理算法。
    看到这里,可能有些人已经明白第5 层楼的奥妙了,那就是需要做基础研究,当然在计算机里, 最重要的就是"计算"二字,程序员要做基础研究,主要的内容就是研究非数值"计算"。
    非数值计算可是一个非常庞大的领域,不仅时下热门的"多核计算"与"云计算"属于非数值计算范 畴,就是软件需求、设计、测试、调试、评估、质量控制、软件工程等本质上也属于非数值计算 的范畴,甚至芯片硬件设计也同样牵涉到非数值计算。如果你还没有真正领悟"计算"二字的含义, 那么你就没有机会进到这层楼来。
    六、 学者
      当"专家"们想继续往上一层楼爬时,他们几乎一眼就可以看到楼梯的入口,不过令他们吃惊的是, 楼梯入口处竖了一道高高的门槛,上面写着"创新"二字。不幸的是,大多数人在爬到第 5 层楼时 已经体能消耗过度,无力翻过这道门槛。
    以查找为例,并不是去天天盯着那些复杂的查找结构和算法进行研究,你需要做的是将二分查找、 哈希查找、普通二叉树查找等基础性的知识好好地复习几遍。
    以哈希查找为例,首先你需要去将各种冲突解决方法如链式结构、二次哈希等编写一遍,再试试 不同种类的哈希函数,然后还需要试试在硬盘中如何实现哈希查找,并考虑数据从硬盘读到内存 后,如何组织硬盘中的数据才能快速地在内存中构建出哈希表来,...,这样你可能需要将一个哈 希表写上十几个不同的版本,并比较各个版本的性能、功能方面的区别和适用范围。
    总之,对任何一种简单的东西,你需要考虑各种各样的需求,以需求来驱动研究。最后你将各种 最基础性的查找结构和算法都了然于胸后,或许某天你再看其他更复杂的查找算法,或者你在散
    步时,脑袋里灵光一现,突然间就发现了更好的方法,也就从专家晋升为"学者"了。
    七、 大师
      从第 6 层楼爬到第 7 层楼,并没有多少捷径可走,主要看你有没有足够的能量。你如果能象 Hoare 一样设计出一个快速排序的算法;或者象Eugene W. Myers 一样设计出了一个用编辑图的最短 路径模型来解决 diff 问题的算法;或者象 M.J.D. Powell 一样提出了一个能够处理非线性规划问 题的 SQP 方法;或者你发现基于比较的排序算法,它的复杂度下界为O(NLogN);或者你发现 用栈可以将递归的算法变成非递归的;或者你设计出一个红黑树或者 AVL 树之类的查找结构; 或者你设计出一个象C++或 Java 一样的语言;或者你发明了UML;...,你就爬到了第7 层,晋 升为"大师"了。
    八、科学家
      科学家向来都是一个神圣的称号,因此我把他放在了“大师”之上。要成为科学家,你的贡献必须 超越大师,不妨随便举一些例子。
    如果你象 Dijkstra 一样设计了 ALGOL 语言,提出了程序设计的三种基本结构:顺序、选择、循 环,那么你可以爬到第 8 层楼来。顺便说一下,即使抛开这个成果,Dijkstra 凭他的 PV 操作和 信号量概念的提出,同样可以进到这层楼。
    如果你象DonKnuth一样,是数据结构与算法这门学科的重要奠基者,你也可以进到这层楼来。 当然,数据结构和算法这门学科不是某个人开创的,是许多大师和科学家集体开创的。 如果你象巴科斯一样发明了Fortran 语言,并提出了巴科斯范式,对高级程序语言的发展起了重 要作用,你也可以进到这层楼来。
    九、大科学家
      进入这层楼的门槛通常需要一些运气,比如某天有个苹果砸到你头上时,你碰巧发现了万有引力, 那么你可以进到这层楼来。当然,万有引力几百年前就被人发现了,如果你现在到处嚷嚷着说你 发现了万有引力,恐怕马上会有人打110,然后警察会把你送到不正常人类的*****地去。因此, 这里举万有引力的例子,只是说你要有类似的成就才能进到这层楼来。
    当然,程序员们最关心的是自己有没有机会变成大科学家。既然计算机这门大学科的开创性成果 早就被冯·诺伊曼、图灵等人摘走了,那么程序员们是不是没有机会变成大科学家了呢?我们的 古人说得好:“江山代有才人出,各领风骚数百年”,现在在计算机这门学科下面诞生了许多非常 重要的大的分支,所以你还是有足够的机会进到这层楼的。
    如果你能够彻底解决自然语言理解(机器翻译)这门学科中的核心问题,或者你在人工智能或 者机器视觉(图像识别)方面有突破性的发现,那么你同样可以轻易地晋升为“大科学家”。这 样当某天你老了去世时,或许那天国人已经觉醒,你也能享受到如 Dijkstra 一样的待遇,有满城 甚至全国的人去为你送葬。
    十、 大哲
      看了这层楼的名字“大哲”,可能不少人已经猜到了这层楼的秘密,那就是你的成果必须要上升到 哲学的高度,你才有机会能进到这层来。
    当然,上升到哲学高度只是一个必要条件,牛顿的万有引力似乎也上升到了哲学的高度,因为不 知道引力到底是怎么来的,但是牛顿没有被划到这一层,因为进到这层还有另外的条件,那就是 你的成果必须引起了哲学上的深度思考,并能让人们的世界观向前跨进一大步。窃以为牛顿、爱 因斯坦等人的成就还达不到让人们世界观向前跨进一大步的程度。
    所以,这层楼中的人的成就对我们普通人认识世界非常重要,你可以不学相对论,但是你不可以 不对这层楼的人所作出的成就不了解,否则你的世界观就是极其不完整的,会犯许多认识上的错 误。不幸的是,中国的科普知识普及还不够到位,知道这层楼成就的人好像并不多,程序员中恐 怕更少。下面就来看看这些用一只手的手指数得清的大哲们,到底有什么成就,能比万有引力定 律和相对论还重要。
    1、希尔伯特 (1862~1943)
      第 1 位进到此楼层是一位名叫“希尔伯特”的大数学家,如果你学过《泛函分析》,那么你在学 习希尔伯特空间时可能已经对这位大数学家有所了解;如果你不是学数学出身的,又对数学史不 感兴趣的话,恐怕你从来没有听说过这个名字。不过如果我问一下,知不知道二次世界大战前世 界数学中心在那里,你肯定会有兴趣想知道。
    不妨说一下,二战前整个世界的数学中心就在德国的哥廷根,而我们这位大数学家希尔伯特便是 它的统帅和灵魂人物。即使在二战期间,希特勒和丘吉尔也有协定,德国不轰炸牛津和剑桥,作 为回报,英国不轰炸海德堡和哥廷根。
    2、哥德尔 (1906~1978)
      这位大哲的名字叫“哥德尔 (G?del) ”,你可能从来也没有听说过这个名字,即使你读了一个数 学系的博士学位,如果你的研究方向不和这位大哲对口的话,你也不一定了解这位大哲的成就, 更不知道他的成果对我们这个世界有何意义。
    简单地说,这位大哲 20 多岁时就证明了两个定理,一个叫做“哥德尔完全性定理”,另一个更 重要的叫做“哥德尔不完全性定理”。你也许会觉得奇怪,第 9 层楼的成就就已经上升到了公理 的高度,这种证明定理的事情不是学者和大师们做的事情吗?怎么能比第 9 层楼的成就还高呢? 下面就来简单说一下这两个定理的含义,你就会明白这属于系统级的定理,绝不是普通的定理和 公理所能比拟的。
    “哥德尔完全性定理”证明了逻辑学的几条公理是完备的,即任何一个由这些公理所产生出的问 题,在这个公理系统内可以判定它是真的还是假的,这个结论表明了我们人类所拥有的逻辑思维 能力是完备的。这条定理并不能将其带入这层楼来,带其进入这层楼的是另一条定理。
    可能你看过《未来战士》、《黑客帝国》、《I,Robot》之类的科幻电影,于是你产生制造一个和人 一样或者比人更高一级的智能机器人的想法,这就引入了一个达到哲学高度的问题,“人到底能 不能制造出具有和人一样的思维能力的机器来?”。
    我只能告诉你,“你的愿望是良好的,但现实是残酷的”。如果你仔细思考一下不完全性定理的含 义,并结合现代计算机所具有的能力分析一下,你会发现这个问题的答案暂时是否定的。如果你
    想造出和人一样思维能力的机器,那么你需要去好好学习这位大哲及其后续研究者的成果,并在 他们的基础上有新的突破才行。
    3、海森堡 (1901~1976) 海森堡这个名字相信没有几个人不知道的,大部分人在学习物理时都学过他的“测不准关系”,
      也就是因为这个“测不准关系”,海森堡爬到了第十层楼。
    如果你看过《时间简史》和《霍金讲演录-黑洞、婴儿宇宙及其他》,你也许已经了解测不准关 系的威力,所以这里不想做过多的讨论,只谈一些和本土产生的哲学思想相关的东西。
    十一、超越第十层的上帝 
     看了上面的小标题,你可能会觉得奇怪,这篇文章不是讲“程序员的十层楼”吗?怎么冒出了第 11 层来了?
    其实这并不矛盾,程序员确实只有十层楼,因为爬到第 11 层时,已经变成上帝,不再是程序员 了;所以超出 10 层楼本身并不重要,关键的问题是看你有没有能力变成上帝。
    1、谁是上帝?
      菜鸟们认为 Linus Torvalds是程序员中的上帝,看完了前面各层楼的介绍,此时再看到这句话, 相信你要忍不住在心里笑起来。当然,你会不会笑起来是事先注定的。Don Knuth 也不是上帝, 他离上帝还有三层楼的距离。即使是大哲们,他们离天堂也还差一层楼,因此这个世界上有史以 来还没有任何一个人变成过上帝。
    我们感兴趣的是,将来会不会有人爬到比大哲们更高的楼层上,变成了上帝。 要变成上帝,你得有上帝一样的能力,上帝会造人,你会吗?
    你也许会怯生生地问:“我可以和爱人生小孩,算不算造人?”,你可能还会理直气壮地说:“现 在生物学上都可以克隆人了,早就有人掌握了造人的方法”。
    事实上克隆人需要有人的体细胞,必须要先有人才会有体细胞。上帝造人时,这个世界上并没有 人,是从无生命的物质“尘土”中创造出的人。因此,用最原始的方法生人和克隆人都是从有生 命信息的物质中生人,不能算作造人。
    读后感: 终于轮到我来发表一下看法了,这也是我为什么要把这篇文章摘抄下来的原因。可以看出本文作 者是为 C/C++程序员并且受过良好的教育,以及高于编程以外的思考。要说作者参透了一切, 看破了红尘。那到未必,不过作者的十个层次分级对一名程序员来说一个很好的指导性意见。
    最 后用《天道》中的《自嘲》做为结束: 
    卜算子·自嘲 
    本是后山人,偶做前堂客,醉舞经阁半卷书,坐井说天阔。 
    大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错。(转)

    作者:diyagoanyhacker 发表于2011-10-12 10:54:26 原文链接
    阅读:90 评论:0 查看评论
    展开全文
  • 觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别:  中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个问题,必须先...
  • 人们一般根据流动性大小,将货币供应量划分不同的层次加以测量、分析和调控。实践中,各国对M0、M1、M2定义不尽相同,但都是根据流动性大小来划分的,M0流动性最强,M1次之,M2流动性最差。  我国现阶段...
  • TCP/IP 协议TCP IP UDP 等协议总称TCP/IP 协议层次划分链路层 -> 网络层 -> 传输层 -> 网络层端口TCP/IP 中端口好比是房子门, 是进入这个房间必经之路 , 使用端口访问应用进程端口号端口是通过端口...
  • 区分层次的目的即为了“高内聚,低耦合”的思想。 1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的
  • 文章种类有很多,按体裁划分,为记叙文、说明文、议论文和应用文等四大类别,各种体裁文章,对内容、格式等有不同具体要求。写文章,总体来说,要遵循突出中心思想、语言文字精准、标点符号恰当、语句通顺流畅...
  • 划分层次的必要性 1、计算机网络中的数据交换必须遵守事先约定好的规则。 2、这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。 3、网络协议(network protocol),简称为协议,是...
  • 表达逻辑

    2020-11-01 14:04:40
    金字塔结构一种按照程度来划分层次的结构,下层是上层的支撑,上层是下层的归纳总结。金字塔结构符合人们认识事物的一般规律,从事物的表象通过抽象,不断归纳总结,直至认识事物的本质。 表达的过程按照金字塔的...
  • 计算机网络体系结构形成1.7.2 协议与划分层次 计算机网络性能指标 1.速率 比特(bit) 是计算机中数据量单位,也是信息论中使用信息量单位。意思是一个“二进制数字”,因此一个比特就是二进制数字中一...
  • == 和 equals() 区别

    2020-05-06 15:32:09
    层次来看,我们使用变量或常量类型划分为基本数据类型和引用数据类型。 基本数据类型:比较是两者值(int,float,char) 引用数据类型:标记是两者内存地址(String,对象) 2.equals() 由于经...
  • 程序员是个层

    2012-04-28 21:42:53
    觉得这篇文章写的还蛮意思,全篇很长我简要的把该文改写一下,以突出十个层次的区别:  中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员 同等水平呢?要解决这个问题,必须先...
  • 这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(如发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议...
  • 首先,我们要学会的是和多个部门的人谈,纵向划分层次,并且对相应层次的人一一询问。因此对与各层次的人应该谈的细节就要提前拟定,详细的分析使用者角色。制定好方案后就要一一拜访,在拜访过程中,表达出个人...
  • 三层登录实例VB.NET版详解---理论加实战篇

    千次阅读 多人点赞 2014-06-02 20:43:34
    最后-量词,用于可以分出层次的事物,女孩儿强烈的第六感,三层中的层一定是第三个意思,三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问...
  • Tcp ip基础教程

    2010-11-10 16:01:09
    O S I模型将通信会话需要的各种进程划分成7个相对独立的功能层次,这些层次的组织是 以在一个通信会话中事件发生的自然顺序为基础的。 图1 - 1描述了O S I,1 ~ 3层提供了网络访问, 4 ~ 7层用于支持端端通信。
  • iOS - VIPER 架构模式

    2016-08-14 21:36:00
    从字面意思来理解,VIPER 即 View Interactor Presenter Entity Router(展示器(视图) 交互器 协调器 实体(数据) 路由器),迄今为止,划分责任粒度是很好选择。VIPER 在责任划分层面进行 了迭代,VIPER 分为五...
  •  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
  • 什么是VIPER 架构模式

    千次阅读 2017-06-04 09:42:25
    从字面意思来理解,VIPER 即 View Interactor Presenter Entity Router(展示器(视图) 交互器 协调器 实体(数据) 路由器),迄今为止,划分责任粒度是很好选择。VIPER 在责任划分层面进行 了迭代,VIPER 分为五...
  • 基于双向循环链表实现学生管理系统,包括初始化,插入,...在调度函数之下有相应被调度函数,也就是相应功能实现函数,一般后缀名为Node,意思就是这个函数直接操作链表中结点,可以简单的划分为实现层;...
  • 所谓的层次就是把用例都拆分成步骤,这样结果就是每步一个验证验证结果,这样话看起来好理解,用他们话来说我case不用学测试人都会写,而且没什么意思,后来接触到按什么流程,按等价类划分,写case看...
  • 解题方法:相当于树的层序遍历,用两个队列来实现树中层次的划分,每遍历完一层,并且遍历的时候没有遇到叶子节点,就把深度值加一。只要遍历的过程中遇到了叶子节点,就返回深度值。 /** * Definition for a ...
  • 问题5-11:“不可靠的交付”(unreliable delivery)和“尽最大努力交付”(best effort delivery)是一样的意思吗? 第6章 网络互连 问题6-1:存在多种异构网络对不同网络之间的通信会造成一些麻烦。但为什么世界上还...

空空如也

空空如也

1 2 3 4
收藏数 69
精华内容 27
关键字:

划分层次的意思