摘要:本文介绍了三位非常著名的程序员:Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他们是如何发明一门新语言,他们开发软件时会像我们一样使用当今流行的开发工具吗?

当读Peter Seibel的精彩著作《编程人生:15位软件先驱访谈录(Coders at Work)》的时候,我发现一些老派的程序员(我是这样尊敬的称呼他们的)是非常的有趣,比如Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他们开发软件时几乎不用任何现代的工具和技术技巧。

Ken thompson

Ken Thompson是B语言(C语言的前身)的设计者,也是Go语言的设计者(与Rob Pike合作)。在贝尔实验室工作的时候,他和Dennis Ritchie一起开发实现了C语言和最初的Unix操作系统。一次在新泽西的晚饭上,当他在餐具垫上设计出来UTF-8字符编码方法后,他通宵工作,在贝尔实验室的Plan 9操作系统里实现了对UTF-8的全面支持。就编程风格而言,他只通过printf语句来调试,几乎没有单元测试,他开发软件是先设计数据结构,然后从局部开始实现,中间利用临时的测试接口,最终到达整体完成,

Jamie Zawinski

Jamie Zawinski在麻省理工的人工智能实验室使用Lisp工作,之后他领导开发了Lucid Emacs,也是用的Lisp语言,这个软件就是后来被人们熟悉的XEmacs。此后他加入了Netscape项目,开发Unix版的Netscape浏览器的前端部分,之后他又领导了Netscape Mail的开发(两个项目都是用的C语言)。他也是只喜欢用print语句来调试代码。他的开发过程有时是先整体后局部,有时是先局部后整体,顺其自然,在必要的时候进行重构。开发时他几乎不做单元测试,他认为单元测试会耽误时间——他认为第一次就应该把代码编对,他反复这样强调。在他的观念里,这是个优先级问题,“你是愿意去开发出一个没问题的软件,还是愿意下星期就把它完成,选择一个,你们不能兼得。”

Joe_armstrong

Joe Armstrong开发了Erlang编程语言,他还为爱立信开发开源的Open Telecom Platform(OTP)框架。开发软件时,他喜欢在写代码前写尽可能完备的文档,特别是对有难度的项目,比如有关实时网络协议的。对于有难度的问题他喜欢先用原型解决,对于调试,他只是有print语句。他是一个面向对象编程的批评者,他喜欢像Haskell这样的函数式编程语言。他从未使用过IDE,他喜欢使用的是Emacs和命令行(不需要用鼠标)这样的开发工具。

所以,什么样的工具和技术技巧是你成为一个伟大程序员的所必须的?是这些TDD、BDD、Scrum、敏捷开发、设计模式、极限编程等现代技术吗?这些只是花瓶?还是为了用来实现更大的目标?或者这只是说明了有天赋的程序员不管使用什么工具都能走上自己成为伟大程序员的道路?

我个人的观点是,做一定程度的TDD、保证合适数量的单元测试,这些都是作用巨大的。因此这些现代技术才被看作是能够让我们工作更加容易、更有效率的科技进步——尤其是对那些非天才级别的程序员。

译文来自:aqee

英文原文链接:Old school developers - achieving a lot with little

老派程序员——徒手实现伟大成就相关推荐

  1. 老派程序员:徒手实现伟大成就

    当在读Peter Seibel的精彩著作<编程人生:15位软件先驱访谈录(Coders at Work)>的时候,我发现一些老派的程序员(我是这样尊敬的称呼他们的)是非常的有趣,比如Ken ...

  2. 老派程序员浅谈Python的异常处理

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录 一.与python异常相关的关键字 二.python中的异常类型 三.基本方式: 三.手动使用raise引发异常 Pyt ...

  3. 移动互联网时代,好程序员的标准是什么?

    在移动互联网迅速发展的今天,移动开发者的数量也是迅猛的增加,ios和Android开发者的数量更不必多说,程序员这个行业被很多人认为是高薪行业,可是他们也都不知道程序员其实也是公认的吃青春饭,程序员这 ...

  4. 作为程序员,要取得非凡成就需要记住的15件事。

    作为程序员,要取得非凡成就需要记住的15件事. 1.走一条不一样的路 在有利于自己的市场中竞争,如果你满足于"泯然众人矣",那恐怕就得跟那些低工资国家的程序员们同场竞技了. 2.了 ...

  5. 什么原因成就了一位优秀的程序员?(转)

    这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀, ...

  6. 什么原因成就了一位优秀的程序员?

    这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀, ...

  7. 成就优秀程序员的很多因素你知道多少?

    程序员想变得更牛逼吗? 导读:编程虽是复杂活,但成就优秀程序员的很多因素和我们在学校中最早学到的相差无几. 1. 分享所有 尽可能使用开源,并且当你有能力的时候,要对其有所贡献.聚全社会之智慧,胜过某 ...

  8. 从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...

    作者 | Richard Hipp 编译 | 马超 出品 | CSDN(ID:CSDNnews) 如果说有什么事物能够使男程序员心中的父爱完全觉醒,那我想一定是投身于自己创建的开源项目中去了.在和熊谱 ...

  9. 作为程序员的他凭什么成就年薪100W架构师?

    08年毕业,工作10年,作为程序员的他凭什么成就年薪100W架构师? 享学课堂online 2019-05-30 13:56:31 华为能发展如此壮大,能直面一个超级大国动用国力来对其打压仍屹立不倒, ...

最新文章

  1. 操作系统 第五章【虚拟存储器】【MOOC答案】
  2. python3虚拟环境使用教程_python虚拟环境完美部署教程
  3. Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
  4. springboot整合alibbaba-dubbo
  5. OMS开发随笔之开发和部署要点
  6. STM32F1移植UCOSII
  7. shell单引号、双引号、反引号、无引号的区别
  8. 通信信号调制方式识别——综述/硕博
  9. mysql封包拦截修改工具_web封包拦截修改工具
  10. 玩转CSDN之自定义博客栏目
  11. python excel超链接_在Python中保留Pandas中的超链接 – Excel到数据帧
  12. 漏斗模型_绘制漏斗图
  13. 3.抽象类(shape)
  14. 通过YUV空间调节图像的色度和饱和度
  15. 3D打印将对零售模式产生颠覆影响,能否抓住机遇
  16. 关于少量数据的多分类问题
  17. 工业互联网二级节点总体架构
  18. 如何查看线上服务器日志
  19. 【人工智能项目】机器学习中文垃圾邮件分类任务
  20. Linux基础——磁盘配额

热门文章

  1. 大数据-----软件开发模型(详细讲解)
  2. LINQ TO SQL和Entity Framework 的关系 你了解多少?
  3. Azure 应用服务、虚拟机、Service Fabric 和云服务的比较
  4. 一步步编写操作系统 60 cpu的IO特权级2 什么是驱动程序
  5. php统计在线时长,js统计网站运行时长
  6. 51单片机auxr寄存器_51—52系列单片机特殊功能寄存器一览表
  7. mysql一个事务多个log_MySQL识别一个binlog中的一个事物
  8. java character是什么意思_Java Character 类
  9. 【牛客 - 369F】小D的剑阵(最小割建图,二元关系建图,网络流最小割)
  10. 四元数乘法_JPL四元数和Hamilton四元数的区别