码农
想听褚老师和李老师谈谈「码农」这个职业。(问题来自「向上移动」)
我很少的几个偶像之一, Chris Lattner,就是一个标准的「码农」。
Chris Lattner是我和褚老师在UIUC的校友。他在读硕士学位期间就设计和实现了一种叫「LLVM」的系统,将传统编译器(compiler)模块化,大大提高各个模块的可重用性(reusability), 开源以来彻底颠覆了几十年来的编译系统设计。他博士毕业后加盟苹果,将一种叫「Automatic Reference Counting」的内存管理机制引入了Objective C和iOS平台,替代了当年最流行的「Garbage Collection」机制,大大提高了内存管理的效率,保证了iOS apps在内存有限的情况下一样可以流畅运行。
2010年以来,他独自一人开始设计一种名为「Swift」的全新编程语言,汲取了二十多年来现代程序设计语言几乎所有的宝贵经验,真正实现了既能快速开发、又能高速运行的「Holy Grail」,现在已经成为iOS平台上的主流程序设计语言。2013年他获得了UIUC 的特别校友成就奖(Distinguished Alumni Achievement Award),可以说他的工作改变了整个软件产业。
如果说Chris Lattner是一个标准的「码农」,那么如果能再年轻一回,我的理想就是当一个像他一样的「码农」。
可惜的是,这几年「码农」这个词儿无论是用来叙事还是用来自嘲,都带有一种天生的贬义。这种贬义甚至影响了大量学生,觉得再怎么好好学习计算机,将来不也就是当一个「码农」或「程序猿」而已。
但是实际上「码农」这个职业虽然显得像个「农民工」,却先天具备两个极为有利的优势。第一,不仅仅是计算机行业,很多其他行业也需要开发和维护越来越复杂的软件系统。第二,一个水平高的「码农」就像一个天生丽质的模特,相当罕见。乔布斯曾经说过:「The difference between the average software developer and the best is 50:1. Maybe even 100:1.」
这是因为当一个好的「码农」,不仅需要从离散数学开始,掌握一种叫做「计算思维」的能力;还需要从计算机体系结构、操作系统、算法分析入手,掌握几十年来计算机工程的无数成功和失败的设计。就好像学一门乐器,需要多年静下心来苦心孤诣地积累,才能成为一代名家,才能自然而然地具备一种「一夫当关,万夫莫开」的气场。
当然至为登峰造极的功夫,是将程序设计从工程提升到艺术的层面,发现其中的魅力所在。这一点,和当年梁思成研究建筑、杨振宁研究物理相比,颇有异曲同工之妙。Chris Lattner主导的Swift语言中每一个版本的演进,都是在以一种近乎工匠般严格的精神,仔细地衡量每一行代码的语言风格如何更加「漂亮」。比如程序界面里需要定义一个表示蓝色的变量,早先写成:
let blue = UIColor.blueColor()
后来演进为:
let blue = UIColor.blue
如果一个所谓的「码农」能够返朴归真,达到如此「以无招而胜有招」的境界,我会像刚刚看完伍迪艾伦的电影一样,产生一种久久挥之不去的感动。
2017年8月,多伦多