B语言的发明者 Ken Thomson & C语言的发明者Dennis Ritchie
哀悼结束,生活还要继续。
说段趣闻吧。大家都知道,C语言和Unix的发明者、图灵奖得主、最具传奇性的程序员Ken Thompson加盟Google之后,与一帮高手一起捣鼓出了又一惊天之作:并发时代的系统编程语言Go。Go一经面世就闯入了编程语言排行榜前20,创造了奇迹。
可是,Gawker网站今天爆料,他在Google居然没有提交代码的权力!原因呢,只不过是按公司规定,所有程序员必须通过编程语言考试,而他还没有参加过这种考试,至少在《Coders at Works》一书写作前:
Peter Seibel: 我知道Google有一个规定,每个新员工都要在接受编程语言测试之后,才允许提交代码。那就是说你也得考(你自己发明的)C罗?
Thompson: 是啊,我还没考呢。
Seibel: 你还没考? 难道你还不能提交代码吗?
Thompson: 是啊,我不能提交代码,不行……我只是还没有去考试,还没觉得有必要去考。
看来Google真是一家唯算法唯规则的公司。三年前,Google曾被曝光用算法和机器人程序来给申请者提交的简历打分。此外还有很多招聘和面试程序中的古怪事情不断见诸报端。
无独有偶,昨天成为CSDN头条的文章“从盖茨到扎克伯格:极客的力量”中,也爆出开发Mac操作系统核心程序员之一Hertzfeld现在在Google也不快乐:
使赫兹菲尔德发生变化的不只是时间,还有他的工作环境。谷歌将工程师看作最重要的资产,认为员工必须喜欢自己从事的工作,同时支持开源软件。但赫兹菲尔德承认,谷歌是一家大公司,在产品设计方面有严格的标准和程序,因此减少了他工作中的乐趣。他说:“我与工作的关系是艺术家与他的作品的关系,但在谷歌,我无法从自己的工作中获得快乐。”
尽管个人的控制力降低了,但赫兹菲尔德拥有了产生更大影响的可能性。有时,谷歌的几行代码可能会影响成千上万的人,这为他的工作带来了一种激情。他说:“这里的一切都是主流的。谷歌、iPhone,这些比上世纪60年代甲壳虫乐队更能影响文化,它们甚至会影响整个人类。”
对了,《Coders at Work》一书是对15位顶级程序员(包括图灵奖得主高德纳、Erlang和JavaScript 之父、Norvig、Guy Steele等等大师)的访谈集,在同类书中是最有趣、最有料而且最精彩的一本。中文版还在翻译中,将由人民邮电出版社图灵公司出版。微软研究院的邹欣做了不错的读书笔记1,2,3,4,大家可以去先睹为快。搞技术的,了解高手的思想有时候至关重要。
【人物小传】
Ken Thompson 计算机科学先驱,最具传奇性的程序员。C语言前身B语言和Go语言、Unix和Plan 9操作系统、UTF-8和正则表达式的发明者。1983年图灵奖得主,美国科学院和工程院院士。1943年2月4日生于新奥尔良。加州大学伯克利分校电子工程与计算机硕士。1966年加入贝尔实验室,2000年退休。
据文献记载,1969年,他在Multics操作系统项目失败后的无聊时间里,为了在一台PDP-7计算机上玩自己编写的“太空旅行”游戏,而用汇编开发了Unix的最早部分(文件系统)。是的,伟大的操作系统是玩出来的。
他还开发过一个名为Belle的象棋程序,打遍天下无敌手。
Andy Hertzfeld Apple的第一个软件魔术师,也是Mac操作系统的主要开发者之一。他还是著名苹果公司轶事网站Folklore.org的创始人,这个网站后来编成了《苹果往事》(电子工业出版社博文公司出版)一书。
原文:https://www.csdn.net/article/1970-01-01/276155
B语言的发明者 Ken Thomson & C语言的发明者Dennis Ritchie的更多相关文章
- 《自学C语言》第一章:C语言简介
这一章主要介绍什么是C语言,以及它的产生.发展历史.如其中所说的计算机术语有不懂的请百度,例如什么是强类型,什么是高级语言. 1.C语言是什么? 答:C语言是一门通用计算机编程语言,应用广泛.C语言的 ...
- C语言之父Dennis Ritchie告诉你:如何成为世界上最好的程序员?
文/Ohans Emmanuel 译/网易云信 想要阅读更多技术干货文章,欢迎关注网易云信博客. 了解网易云信,来自网易核心架构的通信与视频云服务. 我不知道如何成为世界上最好的程序员.但是,我们可以 ...
- 【Go语言系列】1.1、GO语言简介:什么是GO语言
一.Go的起源 Go语言的所有设计者都说,设计Go语言是因为 C++ 给他们带来了挫败感.在 Google I/O 2012 的 Go 设计小组见面会上,Rob Pike 是这样说的: 我们做了大量的 ...
- Win10 UWP 开发系列:使用多语言工具包让应用支持多语言
之前我在一篇blog中写过如何使用多语言工具包,见http://www.cnblogs.com/yanxiaodi/p/3800767.html 在WinEcos社区也发布过一篇详细的文章介绍多语言工 ...
- 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
这算是本系列文章的一个序吧,主要是为以后的学习做铺垫,文本分为三个部分,第一部分是对于网上一些比较旧的资料的问题的一些更正,当然我也不可能看过所有的资料,难免会有遗漏.第二部分是D语言最基本的规定,第 ...
- C语言学习-01第一个C语言程序
一 C语言的历史 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供 ...
- js:语言精髓笔记9--函数式语言特征
形式化运算系统的研究: 图灵:提出图灵机形式系统,通过0,1运算系统来解决复杂问题: 冯诺依曼:提出了冯诺依曼体系:即通过修改内存反映运算结果: 阿隆左.丘奇:提出新的运算范型Lambda演算,计算机 ...
- 深入理解c语言_从编译器的角度考虑问题_纪念Dennis Ritchie先生
开源中国: Dennis Ritchie教授过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不训的语言,今天很多语言都受到C的影 响,C++,Java,C ...
- C语言入门(1)——C语言概述
1.程序与编程语言 我们使用计算机离不开程序,程序告诉计算机应该如何运行.程序(Program)是一个精确说明如何进行计算的指令序列.这里的计算可以是数学运算,比如通过一些数学公式求解,也可以是符号运 ...
随机推荐
- 金蝶handler中 collection 代码片段理解
1,AtsOverTimeBillBatchEditHandler中collection的理解 SelectorItemCollection selectors = new SelectorItemC ...
- 基于 WebSocket 的聊天和大文件上传(有进度提示)完美实现
大家好,好久没有写文章了,当然不是不想写,主要是工作太忙,公司有没有网络环境,不让上网,所以写的就少了.今天是2019年的最后一天,明天就要开始新的一年,当然也希望自己有一个新的开始.在2019年的最 ...
- MyBatis学习与使用(一)
写在前面—— 用 MyBatis 也做过几个项目了,但是一直没有很深入的去理解这个框架,最近决定从头开始学习和整理MyBatis. 之前开发的项目并不是我先创建的,等我介入的时候发现他们已经稍稍封装了 ...
- elasticsearch定时删除索引第二版
该版本对于上一个版本做了升级.兼容性更好了. #!/bin/bash ####################################################### # $Name: ...
- JavaScript数据类型 - Symbol
ES5:对象的属性名只能是字符串,当给对象添加新属性时,很容易造成属性名冲突,从而覆盖了原有的属性. ES6:所以ES6中引入了symbol数据类型,他表示独一无二的值,避免了属性名的冲突,此时对象的 ...
- ACM北大暑期课培训第三天
今天讲的内容是深搜和广搜 深搜(DFS) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. bool Dfs( ...
- 利用 Hexo 或者 hugo 搭建个人博客
我们无法选择生活的样子,但我们可以记下来. 博客的开始 其实,一切都是为了更好的装逼.好吧,我着相了. 最开始想做一个自己博客,主要是因为看到了很多人都有,觉得自己没有太 Low 了.于是申请了 CS ...
- 【JavaScript学习笔记】函数、数组、日期
一.函数 一个函数应该只返回一种类型的值. 函数中有一个默认的数组变量arguments,存储着传入函数的所有参数. 为了使用函数参数方便,建议给参数起个名字. function fun1(obj, ...
- APICloud开发者进阶之路 |audioRecorder录音模块Demo
本文出自APICloud官方论坛 audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能. 该模块提供Android和iOS版本,录音方式及录制的音频格式 ...
- struct结构体 重载运算符
struct node{ int x,y,z; }; bool operator<(node a,node b) { if(a.x!=b.x) return a.x<b.x; if(a.y ...