点击上方“机器学习与生成对抗网络”,关注星标

获取有趣、好玩的前沿干货!

注:拉至文末,有送书活动!!!

"Hello, World!"

这句简单英文,对于大部分计算机行业外的人士来说只是“你好,世界!”,而对于计算机行业的人士来说,"Hello, World!"是踏上代码征程的初始徽章。

这个著名的第一条语句究竟从何而来?事实上,"Hello, World!"是由计算机先驱布莱恩·W.克尼汉(Brian W. Kernighan)在1972年提出的程序,作为编程语言入门的示范。而作为传奇程序"Hello, World!"的发明者,《UNIX传奇》作者、计算机先驱布莱恩·W.克尼汉(Brian W. Kernighan)也拥有一段荡气回肠的传奇人生。

作者:[美]布莱恩·W.克尼汉(Brian W. Kernighan)

译者:韩磊

点击封面京东购书5折

01

布莱恩的传奇人生

布莱恩

  了不起的科学家

布莱恩·W.克尼汉,1942年出生于加拿大多伦多,本科就读于多伦多大学工程物理专业,1969年获得普林斯顿大学电气工程博士学位之后加入了大名鼎鼎的贝尔实验室。2000年从贝尔实验室退休后,任教于普林斯顿大学计算机科学系。

从工程物理到计算机科学,这其间又有什么故事呢?

我大三时已经开始自学Fortran语言,接触计算机科学,并热衷于专研新技术。

其实,当布莱恩在多伦多大学学习时,整个学校只有一台拥有32K(32768)个36位字长的磁芯存储器和大机械硬盘形态的次级存储的IBM 7094大型计算机,而这台机器却算是当时最高端的设备了。

此时的计算机科学正处于发展初期,对于大众而言,计算机科学是一门陌生的领域。但大三学生布莱恩已经开始自学Fortran语言,接触计算机科学,并努力专研新技术。

但即使是他在1964年进入普林斯顿大学读研究生时,普林斯顿大学也没有独立的计算机科学系,只有部分对计算机科学感兴趣的教授。

或许天才都是大胆又有远见的,布莱恩在研究生期间并没有放弃对计算机科学领域的探索,他在1966年暑假去麻省理工学院实习,使用CTSS和MAD编写程序,为Multics新操作系统打造工具,并在第二年去贝尔实验室计算机科学研究中心实习。

在贝尔实验室的第一段实习中,他为了方便在Fortran程序中做列表处理,写了一套函数库,其间也给需要学编程的物理学家和化学家上Fortran课。

在贝尔实验室的第二段实习中,他一边完成他的博士论文《Some Graph Partitioning Problems Related to Program Segmentation》(《与程序分割相关的一些图分割问题》),一边与实验室的研究员林申共同研究组合优化问题。

这些学习经历更加坚定了布莱恩探索计算机科学领域的决心。

  加入贝尔实验室

在布莱恩通过博士毕业答辩后,他并不需要进行面试和研究成果展示,便直接加入了贝尔实验室计算科学研究中心,潜心探索计算机科学这个蕴藏了无穷能量的新兴领域。

那么贝尔实验室(Bell Labs)又是一个什么样的地方?

位于美国新泽西州墨里山的贝尔实验室可以说是20世纪最伟大的实验室,这里吸引了全世界的人才,也诞生了大量计算机科学界的瑰宝。

在贝尔实验室工作期间,布莱恩创造出了许多促进计算机发展的伟大成就。他与林申一起为AT&T客户的私有网络优化设计提供了 一套复杂工具,并一同完成了两个著名的NP-Complete优化问题的解决办法——图划分问题和旅行商问题的算法。

_

图划分问题(graphpartitioning):

给定一些由边线连接的节点,试将这些节点切分为大小相同的两组,且从一组中的节点到另一组中的节点的连接边数尽可能少。

图划分问题

旅行商问题(最短路径问题)(travelling salesman problem, TSP):

给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。

旅行商问题的解

布莱恩不仅是著名的K&R(Kernighan and Ritchie)中的K,是AWK(Alfred Aho、Peter Weinberger和Brian Kernighan)中的K,也是AMLP(A Mathematical Programming Language,数学编程语言)的创造者之一。

并且你能想象得到吗?

在编译器Ratfor、文档编制预处理器Pic、Grap和数学排版语言Eqn等这些重要研究成果背后都有布莱恩参与的身影!多么惊人的创造力!

02

科学家的另外一种身份:作家

然而,布莱恩不仅仅是一位了不起的科学家,他还是一为出色且多产的作家。

1974年,他写的第一本书,是和比尔·普劳格合著的《The Elements of Programming Style》(《编程格调》),在这本书中出现了一个以他名字命名的定律——柯林汉定律。

柯林汉定律:调试一段代码的难度是编写它们的两倍,因此如果你的代码写的尽可能巧妙,按照定义而言,你可能没有能力来调试它了。

1976年,他和比尔·普劳格合著《Software Tools》(《软件工具》),意在向非UNIX系统上编写Fortran的程序员传播UNIX工具理念。

1978年,他与C语言之父丹尼斯·里奇合著了《The C Programming Language》(《C程序设计语言》),该书广为人知,被尊称为“K&R手册”和“C语言圣经”

书中作为编程语言入门的示范传奇程序"Hello, World!",也源于本书。

如今"Hello, World!"这句简单英文,对于大部分计算机行业外的人士来说只是“你好,世界!”,而对于计算机行业的人士来说,"Hello, World!"是踏上代码征程的初始徽章。

现如今,他的最新作品《UNIX传奇:历史与回忆》的中文版刚刚出版。布莱恩将个人经历与旧友回忆汇编成全新力作《Unix传奇:历史与回忆》,这本书通过180则传奇人物故事,将UNIX操作系统50年发展史中的重要发明与60项杰出成就串联起来,带领读者探寻9项诺贝尔奖+4项图灵奖的传奇起源。

“这是了解UNIX和它的故事的最佳途径”“读完这本书,计算机领域这一个个熠熠生辉的巨星,跟你身边的朋友没有太大的不同”……这是广大读者对这本书的一致评价。

想知道UNIX背后那段恢弘历史?

不妨让《UNIX传奇:历史与回忆》带你一览风采

京东购书5折

内容简介

“自1969 年在贝尔实验室的阁楼上诞生以来,UNIX操作系统的发展远远超出其创造者们的想象。它带动了许多创新软件的开发,影响了无数程序员,改变了整个计算机技术的发展轨迹。

本书不但书写 UNIX 的历史,而且记录作者的回忆,一探 UNIX的起源,试图解释什么是 UNIX,UNIX是如何产生的,以及UNIX为何如此重要。

除此之外,本书以轻松的口吻讲述了一群在贝尔实验室工作的发明天才的有趣往事,书中每一个故事都是鲜为人知却又值得传播的宝贵资源。

本书适合对计算机或相关历史感兴趣的人阅读。读者不需要有太多的专业技术背景,就可以欣赏 UNIX 背后的思想,了解它的重要性。”

   为何创作这本书

如今,UNIX 及其衍生产品在特定的技术社区之外并不广为人知,但它们是若干系统的核心,这些系统已是许多人生活的一部分。谷歌(Google)、脸书(Facebook)、亚马逊(Amazon)等提供的许多服务和其他大量服务都由 Linux 驱动。

Linux 是类 UNIX操作系统,可以说UNIX是当今市面上流行操作系统的源头

你的手机或 MacBook 运行着某种版本的UNIX操作系统。如果你家里有 Alexa 等智能小电器,或者车上有导航软件,它们也由类 UNIX 操作系统驱动。

如果你浏览网页时总被广告轰炸,也是 UNIX操作系统在后面支撑。当然,基于 UNIX 的追踪系统也知道你在做什么,以便更精准地对你进行广告轰炸。

布莱恩认为理解我们习以为常地使用的技术如何演化而来,颇为要紧。我们需要铭记那些顶住压力、克服时间限制,做出了定义技术发展方向和路径的决策的人们。

仅就那些如今看起来大错特错抑或倒行逆施的选择而言,常常也是在当时可用资源限制之下所能考虑和实现的必然结果。

如果我们能了解历史,就会越感激那些创造 UNIX 的发明天才, 或许也越能理解现代计算机系统是如何发展成现在这个样子的。

正是意识到UNIX的非凡影响,布莱恩决定创作《UNIX传奇:历史与回忆》一书,讲述计算机历史上这个极具生产力和发展性的时期中的一些精彩往事,重温贝尔实验室中富有活力而充满乐趣的UNIX时光,共享UNIX之父丹尼斯·尼奇(Dennis Ritchie)所说的那种因努力改善人类生活而获得的愉悦。

  本书所回答的问题

•UNIX是怎么来的?

•贝尔实验室是怎样的机构?

•寥寥数位研究员组成的小团队是如何改变世界的?

•是什么让UNIX成为可能,并推动它演化?

这是人们对于UNIX及其背后故事的疑问。

布莱恩在《UNIX传奇:历史与回忆》中回答了这些问题。并且,布莱恩还在文中补充讨论了:

•UNIX及其周边环境为何如此成功?

•区区两人的实验性产品如何演化为真正改变世界的东西?

•这是否是孤例?

•类似事件还会发生吗?

• 如此耀眼的成果如何能够被规划出来?

   大咖推荐

向上滑动阅览

“你的能力不可能超越你的鉴赏力。阅读顶级大师的书,特别是记录了历史演变和其心路历程的杰作,是提高鉴赏力的捷径。《UNIX传奇:历史与回忆》就提供了这样一次难得的机会。”

——杨力祥 畅销书《Linux内核设计的艺术》作者之一

“这本兼备严谨与通俗的《UNIX传奇:历史与回忆》带我们回到了那个创新、进取的时代,以亲历者的视角分享了有关UNIX的历史与故事,读来令人激动不已。”

——邱岳 无码科技产品经理,“二爷鉴书” 作者

“UNIX的主要创造者之一的亲身回忆,有助于我们]理解操作系统的精髓,领悟他们的开拓精神。在硬件可编程、硬件可重构时代,操作系统对电子信息类专业的教师和学生也是非常重要的。”

——张有光 北京市教学名师 北京航空航天大学电子信息工程学院博士生导师、教授

“希望更多的读者能够读到这本书,它会使你对UNIX的历史和计算机发展进程有更深入的理解。也感谢这本书的译者和人民邮电出版社,向国内广大读者分享了一段如此精彩的历史往事。”

——秦冰 统信学院执行院长

“(UNIX发展的)整个过程引发了在技术、法律、全球社群、文化、协作模式、互联网等各个方面的一系列持续创新。今天,UNIX看似已经不复存在,但却又无处不在,UNIX是传奇!”

——徐继哲 自由软件支持者,牛顿项目创始人

“我们可以看到优秀的科学家在遇到问题时如何思考问题、解决问题,而这恰恰是我国当前操作系统教育、操作系统工作者最缺失的。”

——冯富秋 阿里云智能系统技术负责人

“我不知不觉地看完了这本书,获得轻松愉快的阅读体验和回味无穷的精神滋养。”

——朱少民《全程软件测试》作者,同济大学特聘教授

“这本书,恰可以作为我们了解贝尔实验室UNIX操作系统前世今生的重要参考。”

——汤小丹 教授经典教材《计算机操作系统》第一主编

“如果你是计算机行业的从业人员,单单是了解这些如雷贯耳的名词如何诞生就会让你激动不已。即使没有深厚的技术背景,你也可以从这些闪耀着天才光芒的思想中获益良多。”

——祁宁(Joyqi) SegmentFault思否CTO

“在C语言奠基人之一克尼汉的这本风格轻松的回忆录中,除了那些令人着迷的故事,你还可以学习很多软件设计的基本原则,领悟解决软件核心复杂性问题的真谛。”

——李锟 资深业务架构

因此,若是你对UNIX及其背后故事有所好奇且抱有疑问,那么就快来翻阅这本为你答疑解惑之书吧!

-END-

好消息!本文将免费寄送正版纸质图书

3月21日22点结束并开奖。中奖读者将被免费寄送!

参与方法:

1、点“在看”文章 

2、公众号后台、或者扫以下码,回复 168 ,参与抽奖!

【荐读】Hello, World! 发明者布莱恩·W.克尼汉的传奇人生相关推荐

  1. Hello, World! 发明者布莱恩·W.克尼汉的传奇人生

    "Hello, World!" 这句简单英文,对于大部分计算机行业外的人士来说只是"你好,世界!",而对于计算机行业的人士来说,"Hello, Wor ...

  2. c语言编译器 控制unix 故事,互联网发展史人物篇:布莱恩·克尼汉(Brian Kernighan)——Unix和C语言背后的巨人...

    选择什么教材来学习C语言? 上一篇文章我们讲到C语言的发明人丹尼斯·里奇(Dennis Ritchie),他于1972年左右发明了C语言,C语言里的时间/日期计算起点,有个unix timestamp ...

  3. python:实现布赖恩·克尼汉法算法(附完整源码)

    python:实现布赖恩·克尼汉法算法 def get_1s_count(number: int) -> int:"""Count the number of se ...

  4. c程序设计语言克尼汉,《C程序设计语言(第2版新版)典藏版》 —3.4 switch语句...

    3.4   switch语句 switch语句是一种多路判定语句,它测试表达式是否与一些常量整数值中的某一个值匹配,并执行相应的分支动作. switch(表达式){ case 常量表达式:语句序列 c ...

  5. 克尼汉的c程序设计语言,c程序设计语言 英文版

    ????<经典原版书库:C程序设计语言>(英文版)(第2版)第1版中介绍的C语言成为后来广泛使用的C语言版本--标准C的基础.人们熟知的"hello,World\\\程序就是由& ...

  6. seir模型启发式算法_好文荐读|选址问题的启发式方法

    今日荐读 设施选址问题(facility location problem,FLP)是运筹学领域中的一类经典问题.这一问题是在满足顾客对商品的需求前提下,为一些设施选定建造地点,使得总费用尽可能少.这 ...

  7. 好书荐读:阿里达摩院算法专家领衔《深度学习与图像识别:原理与实践》

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia计算机视觉联盟  报道  | 公众号 CVLianMeng 这本书现在当当新书榜排名前三 既然为大 ...

  8. 巴比特 | 元宇宙每日荐读:三位手握“价值千万”藏品的玩家,揭秘数字藏品市场“三大套路”...

    摘要:数字藏品二级市场行情持续走低,有的跌幅甚至达到90%,泡沫初现,有人认为数字藏品就是一场庞氏骗局.有媒体采访了三位千万级数字藏品玩家,他们熟稔平台的种种明规则与潜规则,且真金白银的投入了几十万上 ...

  9. 荐读解惑 | FPGA是有门槛的,零基础并不是你想的那样,不要再被忽悠了!

    荐读解惑 | FPGA是有门槛的,零基础并不是你想的那样,不要再被忽悠了! FPGA是有门槛的,零基础并不是你想的那样,而且门槛不低的! 本篇给非电子类专业或者非技术行出身想要转行FPGA的大侠们,做 ...

最新文章

  1. 摘要注释_《间架结构摘要九十二法》高清图片+注释 爱书法的朋友值得收藏
  2. 注册界面翻译_B站UP主自制的开源OCR翻译器走红Github,用一次就粉了
  3. Android Framework系统服务详解
  4. 那些一眼就被看出包装过的简历
  5. pycharm在linux安装插件,Pycharm安装go插件,开始go之旅
  6. 使用WMI编程获取主机硬件信息(CPU_ID,硬盘、主板、BIOS序列号,Mac地址)
  7. 人脸方向学习(一):人脸质量评价-模糊检测方法总结一
  8. 数据抓取的艺术(一)
  9. NSString 与 Unicode
  10. UG NX 12 同步建模:删除面
  11. 分辨率、像素、像素尺寸、GSD、图片文件大小
  12. JZOJ4722. 跳楼机
  13. C语言嵌入式数据结构之链表
  14. 支持多线程的DRB server
  15. 1024程序员节开幕,龙蜥多位技术专家参与演讲
  16. python爬虫脚本获取网易招聘某个职业的全部数据信息
  17. 如何知晓计算机的字长,计算机字长是什么意思,如何判断指令格式是单字长还是双字长...
  18. [C#]获取窗口客户区域、标题栏高度、菜单栏高度、边框宽度正确方法
  19. 人工智能安全的若干研究课题
  20. Swift编程的15个技巧

热门文章

  1. 安卓与苹果盒子与h5相互调用,js,vue
  2. 8255a初始化c语言程序,单片机8255型号大全(工作字的选择,单片机连接,初始化程序分析)...
  3. 易学难精的Python入门之前应该了解哪一些~
  4. java 中查询余额怎么写_如何调用中国移动余额查询的接口 用java 求大神指点一下。...
  5. 笔记③:牛客校招冲刺集训营---C++工程师(5.9 C++新特性)
  6. 如何做好“强势型”领导的向上管理?
  7. 软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(实验准备与设计)
  8. 分享一个简单易用的python并行模块【PP模块】
  9. 移动硬盘新加卷变为本地磁盘且不能打开磁盘查看文件
  10. 基于单片机的秒表计时器系统设计(#0400)