SoftwareTeacher 2021-04-18 22:48 采纳率: 83.3%
浏览 1034
已结题

《Unix 传奇》vs 《观止》 两本书有什么有趣的对比?

把两本书对照来读,发现很多有意思的地方, 在这里开个帖子讨论,欢迎提问和点评。 

《Unix 传奇》 https://book.douban.com/subject/35292726/  

《观止 微软创建NT和未来的夺命狂奔 》https://book.douban.com/subject/3699395/

  • 写回答

9条回答 默认 最新

  • SoftwareTeacher 《编程之美》作者 2021-04-19 10:43
    关注

    4. 典型程序员的特点是什么?

    Unix 传奇:从书上的描述看, 这些人都是:友善,有合作精神,追求卓越。 

    Unix 创立者:对自己严格要求,经常鼓励别的同事(能在贝尔实验室工作的人非常聪明, 可能鼓励就足够了)

    Unix 创立者们开会:几乎没有正式的会议,就是聊天,邮件,而且没有什么大的冲突。 

     

    NT: 作者这样描述 David Cluter,并说这是普遍程序员的特点:

    single-minded (专注), obsessive (执着,一根筋) and competitive (竞争性).

    David 对自己严格要求, 也用同样的标准要求所有团队成员。 他这样评价自己: 

    I thrive on stress

    David 的团队开会: 前十五分钟平静地讨论会议议程,中间充满了有敌意的大嗓门,最后大家居然能微笑着走出会议室。 

     

    评论
  • SoftwareTeacher 《编程之美》作者 2021-04-18 23:15
    关注

    1.  首先是创始人的信息,他们都是 1942 年前后生人,但是家庭环境和个人成长经历很不一样: 

    Unix:

    Dennis Ritchie (1941)  老爸是贝尔实验室的科学家,他获得哈佛博士,1966年 进入贝尔实验室实习随后成为正式员工。

    Brian Kernighan (1942) 多伦多大学学士,普林斯顿博士,1967 进入贝尔实验室实习随后成为正式员工。大学时开始编程 (COBOL,FORTRAN) 但是不得其法。 

    Kenneth Thompson (1943)  UC 伯克利硕士, 1966年进入贝尔实验室。 

     

    NT: 

    David  Cutler (1942)   密歇根州 Olivet 文理学院的学士

    贫苦出身,和父亲(汽车厂的清洁工)缺少交流,聪明并且各种体育项目都是明星。靠体育奖学金上了大学,但是受伤中断体育生涯。1965年毕业后拒绝了 GM 的程序员 offer (那时候程序员职业名声不好),而进入杜邦公司。 他开始并不喜欢计算机编程,由于工作的原因不得不学,被触动后决定要成为强者,半夜去学习,成功地在 IBM 大型机上实现实时系统处理化学数据。

    评论
  • SoftwareTeacher 《编程之美》作者 2021-04-18 23:45
    关注

    2. 他们学习编程都不是一学就精通。 但是都喜欢熬夜折腾。

    Ken Thompson:午夜之后会用自己的钥匙去开机房,在大型机上折腾直到第二天早上 8 点。 "我很快乐,毫无雄心壮志,是一个没有目标的工作狂“ 

    David Culter:半夜去上机,犯各种错误,然后从错误中学习。

    关于折腾, 我们教授(女)曾经说,当年上机时间非常宝贵,女生通常把算法考虑非常仔细,把代码仔细地打在卡片上,上机一次运行就成功,于是高高兴兴地下机了,其实对具体的电脑了解不多。  男生通常很自信,但是程序经常不对,在机器上折腾很多次。 后来,女生都当了老师,男生大多去做实际开发工作了。 

    我在Unix 系统上也喜欢折腾, 经常把机器搞崩溃,半夜重装系统。 :) 

     

    评论
  • SoftwareTeacher 《编程之美》作者 2021-04-19 00:24
    关注

    3. 编程的能力

    Ken Thompson:  开发了国际象棋程序 Belle,是第一个拿到国际象棋大师称号的程序。 他在一台快要过时的PDP-7 (8K * 18位 内存)写了一个游戏,然后写了简单的文件系统。 正好他妻子带娃走亲戚,不在家三周时间,他用这三周时间写出操作系统的的其他模块。 

    • 故事: 当时安装了Unix的PDP-11被放在贝尔实验室供大家使用,有一天大家伙发现Ken总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简单是太不能容忍了,于是有若干高人跳了出来,仔细分析Unix代码,找到后门,修改后再重新编译整个Unix,当所有人都以为这个世界应该从此清静了的时候,却发现Ken还是很容易就取得了他们的帐户权限,为此大家郁闷不已。至到很多年后,Ken才道出其中的原委,原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里,每次编译器编译时就会自动加入后门代码,而当时整个贝尔实验室都用的是Ken所写的C编译器。 (来源:https://i.linuxtoy.org/docs/guide/ch45s05.html) 

    David Culter: 他的同事评价他的编程能力 - 他处理困难的问题和处理简单问题一样快。 

    评论
  • SoftwareTeacher 《编程之美》作者 2021-04-19 16:26
    关注

    6.  和先行者 OS 的关系

    Unix 的先行者叫 Multics, 是GE,MIT,Bell Lab 等多方合作的项目,经历了典型的过度设计和拖延,最后Bell Lab 退出了合作。 然后两个程序员 (Ken,Dennis) 自己做出了简单的早期的 Unix , 一个 Minimal Viable Product, 足够好到能给同事们用,就行了。 

     

    NT 的先行者是 VMS,是 DEC 公司的还算成功的小型机的操作系统。 也是 David Culter 领导开发的。 David 在离开 DEC 公司前做的一个项目 Prism 失败了,被公司高层砍掉,他在项目解散会上流下了热泪...  随后加入了微软, 他想用 NT 证明什么呢? 

     

    评论
  • SoftwareTeacher 《编程之美》作者 2021-04-19 23:33
    关注

    7. 项目的难度

    Unix: 是几个非常聪明的计算机科学家和工程师写给自己用的简单操作系统。 

    • 1969:用汇编语言写的第一版,随后移植到别的PDP 机器上
    • 1971:  发明了C 语言,
    • 1973:  用 C 语言重写 Unix
    • 1974:  正式向外界宣布,获得学术界的重视和采用
    • 1978:大约有 600 台中型机使用 Unix
    • 1979:版本 7 发布,随后Unix 走向了纷繁复杂的开源,变异,壮大之路。一路有各种版权纠纷伴随。 

     

    NT:是一个商业公司工程团队写给商业用户的操作系统。要支持 DOS,OS/2, Windows 应用程序。 要有现代化的操作系统内核,网络功能,应用程序支持,图形界面。 

    • 1989:早期设计
    • 1990/1: 最小版本 (计划)
    • 1990/7: Code Complete 代码完成 (计划)
    • 1990/10: 应用程序 ready (计划)
    • 1991/3: 最终版 (计划)
    • 1993/7:  最终版  NT3.1(实际,比计划晚了两年)能运行在 12M 的内存,需要90 M 的硬盘。 

     

    评论
  • SoftwareTeacher 《编程之美》作者 2021-04-19 15:50
    关注

    5. 程序员和领导的关系

    Unix:贝尔实验室的行政领导通常不管程序员在干什么。 他们的管理方法是:找到优秀的员工,把新员工介绍给优秀的老员工,然后让大家自己寻找项目和合作者。 

    对于那些长年做一件事情(还没有成果)的人,管理层会保持耐心,以待长远。

    不同部门的领导在互相评价兄弟团队的员工很少说:“我的人比你的人强”, 而更加会说 “别忘了你的人还做了一件好事”。  

     

    NT:

    David Culter 在 DEC 公司的时候, 他的领导 Gordon Bell 给了他很大的自由度,并保护他不受其他人的打扰。 在Gordon 离职后,David 把团队搬到西雅图, 因为那时候波士顿到西雅图没有直飞的航班, 公司大领导很少来视察,他获得了很多自由。 

    加入微软后, 盖茨和鲍尔默都给了David Culter 很多空间, 但是也派了微软原生的程序员去合作,希望双方能磨合好。 

    微软公司的绩效评价经历了很多阶段,从末位淘汰到不同团队之间恶意争夺排名(尽管不同的工程师做的事情不具备可比性)。 

     

     

    评论
  • Wenxy1 2021-04-20 08:53
    关注

    都是历史上的传奇人物和传奇产品。

    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 1月27日
  • 已采纳回答 1月19日

悬赏问题

  • ¥15 matlab有svec这个函数吗?
  • ¥15 无法调用VideoWriter_fourcc
  • ¥15 VB6.0无法加载网页验证码图片到picturebox中,求解。
  • ¥15 C#和GDAL对栅格处理
  • ¥15 我现在有一些关于提升机故障的专有文本数据,量也不多,我在label studio上进行了关系和实体的标注,完成了知识图谱的构造,那么我使用生成式模型的话,我能做哪些工作来写我的论文?
  • ¥15 电脑连不上无线网络如下诊断反馈应该如何操作
  • ¥15 telegram api 使用forward_messages方法转发消息时,目标群组里面会出现此消息来源,如何隐藏?
  • ¥15 关于#tensorflow#的问题:有没有什么方法可以让机器自己学会像素风格的图片
  • ¥15 Oracle触发器字段变化时插入指定值
  • ¥15 docker无法进入容器内部