王剑编程网

分享专业编程知识与实战技巧

世界级编程大师Bob大叔:“35岁危机”是错觉,我们这些“老程序员”都还在,只是数量上不显眼

Bob 解答程序员的“35 岁危机”:

认为编程只适合年轻人的想法其实是个错觉,但确实是个很有影响力的错觉。这种错觉之所以存在,是因为过去 70 年里,对程序员的需求像坐火箭一样飙升。

其实我们这些“老程序员”都还在,只是数量上不那么显眼罢了。

作者 | 王启隆

出品 | 《新程序员》编辑部

想象一下,如果你这辈子写了五十多年代码,并且直到 71 岁还在编程,那你会如何看待现在这个 AI 编程爆火的时代?
Robert C. Martin 被誉为世界著名编程大师,这位被全世界开发者称为“Bob 大叔”(Uncle Bob)的老头子是敏捷开发和设计模式的先驱,从 1970 年开始从事软件专业工作,从事相关工作超过 50 年。知名的“SOLID 五大原则”,即面向对象编程领域的五个设计原则,便出自他的手笔。Bob 大叔对 AI 的态度非常暧昧:从实用性的角度,他尖锐地吐槽“现在的 AI 就是只有半个大脑的初级程序员,而且永远不会真正成长”,因为 AI 能完成的任务相当有限;但即使年过耄耋,他对未来仍有着不小的期许:“等到我们在未来某个时候,创造出能像人类一样思考的机器,那时编程技能就会变得过时了。
作为全球闻名的软件开发大师,Bob 大叔的代表作《代码整洁之道》(Clean Code)曾定义了何谓“整洁代码”,讲述了一系列行之有效的操作实践。
最近,Bob 大叔的最新著作《函数式设计:原则、模式与实践》中文版出版,许多人不解于这位面向对象编程的领袖级人物为什么要“背叛”到“敌营”,而 Bob 大叔也是发挥一贯直来直往的性格,直接开“怼”:“近年来一些文章声称函数式编程与面向对象编程对立,面向对象编程已经过时。我不认同这种观点,因此决定写这本书。

函数式编程不仅仅是“用函数编程”。函数式编程是没有赋值语句的编程。

一旦你尝试不用赋值语句编程,函数式编程的所有其他特性就水到渠成了。你要处理函数,就必须用递归,所有这些东西在你决定不用赋值的那一刻,就自然而然地形成了。所以说,函数式编程就是这么回事。

——《函数式设计》,Robert C. Martin

以上发言,皆出自 CSDN《新程序员》对 Bob 大叔的采访内容。我们和这位“敏捷开发的活化石”进行了一场深入交流,听他亲口讲述自己作为 17 位软件行业领军人物之一共同发表了 23 年前(2001 年)《敏捷宣言》的史细节还得知了这位有五十多年开发经历的资深程序员对 AI 编程的最新看法,刷新了许多人过往对 Bob 大叔的历史印象。下文将从 Bob 大叔对 1970 年的回忆开始,带读者们回到那个连万维网都仍未诞生的“程序员远古时期”。

50+ 年的代码人生

《新程序员》:在采访开始之前,能否请您做一个简短的自我介绍?

Bob 大叔:好的,我叫 Bob Martin,有些人叫我 Bob 大叔(Uncle Bob),我做程序员已经有五十多年了。在我刚开始编程的那个年代,计算机的体积能塞下一个大房间,而且价格昂贵,高达数百万美元。

我使用过多种编程语言,包括汇编语言、COBOL、FORTRAN、PL/I、C、C++、Pascal、Java、C# 等。多年来,我参与开发了各种系统,从金融系统到嵌入式实时系统和过程控制系统。因此,可以说我在这个行业有着丰富的经验。

此外,我还撰写了几本书,包括《代码整洁之道》(Clean Code)、《架构整洁之道》(Clean Architecture),而今天我们讨论的这本书叫《函数式设计》(Functional Design)。

《新程序员》除了写书之外,您在业余时间做些什么呢?顺便说一下,我经常看您的推特,发现您大约 50% 的推文是关于美国大选和特朗普的社会新闻,另外 50% 则是关于技术内容、编程以及您对代码的看法。

Bob 大叔确实如此。在非大选年,我大约 90% 的推文是关于软件的。但由于今年是大选年,因此涉及其他话题的内容也比较多。当我不在写书或编程时,我会做很多事情。我喜欢骑自行车,经常骑车四处游览。我还是一名飞行员,经常驾驶自己的飞机四处遨游,这给我带来了很多乐趣。我有一个庞大的家庭,有四个孩子和十个孙辈平时我会尽可能多地去看望他们,所以我的时间安排得非常充实。

《新程序员》:请把我们带回您编程生涯的起点,说一说您在 1970 年开始做程序员的故事。那时您 18 岁,学习的第一门语言是汇编和 COBOL,能否谈谈刚开始时的经历?

Bob 大叔:嗯,那时并没有很多大学课程。我当时对学校没有兴趣。那个年代,越南战争正激烈进行,校园里有很多骚乱和动荡。而且,我已经学到了很多计算机编程的知识,并学会了 COBOL 和 FORTRAN,甚至还会几种计算机的汇编语言。所以,我觉得完全没必要上大学

至于编程生涯的起点,一切都始于我母亲在我 12 岁时买了一台小型塑料计算机。那个玩具有三个触发器和六个与门,需要通过转动一个小杠杆来操作它,内部的一些橡皮筋和杠杆会移动部件,让它进行简单的计算,比如从 0 计数到 7,或者从 7 计数回到 0。此外,还可以通过编程,让它对两个比特(bit)进行加法运算,生成一个和位和一个进位位,我甚至在上面编写了很多有趣的程序 —— 编程的过程是,通过将小管子插到插销上,这些管子会阻挡杆进入槽中,进而改变触发器的状态。

所以,我花了几个星期的时间学习如何让那台玩具计算机工作,通过这个过程,我成了一名程序员。从那以后,我一直都是程序员

这是我的起点,之后,我父亲买了很多关于计算机和编程语言的书籍,尽可能多地为我提供信息。后来,在 16 岁时,我找到了一份编程工作,为 Honeywell 200 编写程序。这份工作持续了两三周,那时我还只是个少年,是在暑假期间做的,非常有趣。

大约两年后,在我 18 岁时,我找到了一份全职工作,主要为 IBM 360 编写汇编语言和 COBOL。不久之后,我开始用汇编语言为许多微型计算机编程。当时这些计算机是由 Varian 公司生产的,那时候许多公司都在制造微型计算机,但很少有公司成功,最后是数字设备公司(DEC)主导了这个领域。随后,我在编程 PDP 8 和 PDP 11 这些设备方面变得非常熟练,这些设备都是在 70 年代初期生产的。

《新程序员》:1970 年代真的是一个非常有意思的年代,那时万维网还没有发明,USENET 刚刚出现。您相当于世界上最早一批 USENET 用户,我还了解到“Bob 大叔”这个昵称最初是由一位同事在公司给您起的绰号。后来,您在 USENET 上误用了这个昵称作为签名,最终这个名字成功从绰号变成了真名。能否分享一下其中的故事?

Bob 大叔:我当时在一家名为“Clear Communication”的初创公司工作,这是我职业生涯的第四站,时间大约在 1987 至 1989 年间。在那里,有个同事给每个人起了个绰号,我的就是“Bob 大叔”。起初这让人有些不爽,因为他总是四处走动,不断用这个昵称呼唤我:“Bob 大叔,这个怎么弄?”“Bob 大叔,那个怎么办?”。

后来我离开了那家公司,成为了一名顾问,没有人再叫我“Bob 大叔”了。结果,我还挺想念这个称呼的,所以我犯了个错误,把它加到了电子邮件签名里。

当时我在 USENET 上非常活跃,经常在 comp.object 和 comp.lang.c++ 等新闻组上发文章,大家就开始注意到我的签名里的“Bob 大叔”。有一次我参加一个 C++ 会议,大概是 1990 年,有人从大厅对面指着我说:“看,那是 Bob 大叔!” 我当时心想,天啊,我犯了个错误,真应该把签名改了 —— 但后来我意识到,“Bob 大叔”其实会是个不错的品牌,于是就一直保留了它。

《新程序员》:USENET 可以算是您参与的第一个社交媒体。您和许多传奇开发者一样,很喜欢参与不同的社区或论坛,我曾在 Hash Note 上看到您发帖说:“我就是 Robert Martin,大家可以向我提问。” 当时许多开发者都积极向您提问并参与交流。现在,这种交流似乎变成了

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言