Fortran|让程序员梦寐以求的编程语言,实现编程的完美开发(上)( 三 )
优秀程序员经常想做一些既危险又令人恼火的事情 。 所谓“令人恼火” , 我指的是他们会突破设计者提供给用户的外部语义层 , 试着控制某些高级抽象的语言内部接口 。 比如 , 黑客喜欢破解 , 而破解就意味着深入内部 , 揣测原始设计者的意图 。
你应该敞开胸怀 , 欢迎这种揣测 。 对于制造工具的人来说 , 总是会有用户以违背你本意的方式使用你的工具 。 如果你制造的是编程语言这样高度组合的系统 , 那就更是如此了 。 许多黑客会用你做梦也想不到的方式改动你的语法模型 。 我的建议就是 , 让他们这样干吧 , 而且应该为他们创造便利 , 尽可能多地把语言的内部暴露在他们面前 。
其实 , 黑客并不会彻底颠覆你的工具 , 在一个大型程序中 , 他可能只是对语言改造一两个地方 。 但是 , 改动多少地方并不重要 , 重要的是他能够对语言进行改动 。 这可能不仅有助于解决一些特殊的问题 , 还会让黑客觉得很好玩 。 黑客改造语言的乐趣就好比外科医生摆弄病人内脏的乐趣 , 或者青少年喜欢用手挤破青春痘的那种感觉 。 ②至少对男生来说 , 某些类型的破坏非常刺激 。 针对青年男性读者的Maxim杂志每年出版一本特辑 , 里面一半是美女照片 , 另一半是各种严重事故的现场照片 。 这本杂志非常清楚它的读者想看什么 。
② 在《神经外科医生手记》(When the Air Hits Your Brain)一书中 , 神经外科医生弗托塞克讲述了住院总医生戈雷的一段话 , 内容关于外科医生与内科医生的区别 。
【Fortran|让程序员梦寐以求的编程语言,实现编程的完美开发(上)】戈雷和我要了一个大比萨 , 找了一张空桌子坐下 。 他点起一根香烟 , 说:“那些内科医生真是令人讨厌 , 总是喜欢谈论一辈子只能遇到一次的病例 。 这就是他们的问题 , 他们只喜欢古怪的东西 , 讨厌普通的常见病例 。 这就是我们和他们的区别 。 你看 , 我们喜欢腰椎间盘突出 , 觉得像比萨一样又大又好吃 , 但是他们看到高血压就憎恨不已……”
很难把腰椎间盘突出与又大又好吃联系在一起 , 但是 , 我想我知道他们指的是什么 。 我经常觉得某个bug非常诱人 , 一定要追踪下去 。 不是程序员的人很难想象bug有什么好玩的 。 一切正常当然很好 , 但是不可否认 , 能够抓到某些bug会让人兴奋到极点 。
一种真正优秀的编程语言应该既整洁又混乱 。 “整洁”的意思是设计得很清楚 ,内核由数量不多的运算符构成 , 这些运算符易于理解 , 每一个都有很完整的独立用途 。 “混乱”的意思是它允许黑客以自己的方式使用 。 C语言就是这样的例子 , 早期的Lisp语言也是如此 。 真正的黑客语言总是稍微带一点放纵不羁、不服管教的个性 。
优秀的编程语言所具备的功能 , 应该会使得言必称“软件工程”的人感到非常不满、频频摇头 。 与黑客语言形成鲜明对照的就是像Pascal那样的语言 , 它是井然有序的模范 , 非常适合教学 , 但是除此之外就没有很大用处了 。
一次性程序为了吸引黑客 , 一种编程语言必须善于完成黑客想要完成的各种任务 。 这意味着它必须很适合开发一次性程序 。 这一点可能出乎很多人的意料 。
所谓一次性程序 , 就是指为了完成某些很简单的临时性任务而在很短时间内写出来的程序 。 比如 , 自动完成某些系统管理任务的程序 , 或者(为了某项模拟任务)自动生成测试数据的程序 , 以及在不同格式之间转化数据的程序等 。 令人吃惊的是 , 一次性程序往往不是真的只用一次 , 就像二战期间很多美国大学造的一大批临时建筑后来都成了永久建筑 。 许多一次性程序后来也都变成了正式的程序 , 具备了正式的功能和外部用户 。
我有一种预感 , 最优秀的那些大型程序就是这样发展起来的 , 而不是像胡佛水坝那样从一开始就作为大型工程来设计 。 一下子从无到有做出一个大项目是很恐怖的一件事 。 当人们接手一个巨型项目时 , 很容易被它搞得一蹶不振 。 最后 , 要么是项目陷入僵局 , 要么是做出来一个规模小、性能差的东西 。 你想造一片闹市 , 却只做出一家商场;你想建一个罗马 , 却只造出一个巴西利亚;你想发明C语言 , 却只开发出Ada 。
开发大型程序的另一个方法就是从一次性程序开始 , 然后不断地改进 。 这种方法比较不会让人望而生畏 , 程序在不断的开发之中逐渐进步 。 一般来说 , 使用这种方法开发程序 , 一开始用什么编程语言 , 就会一直用到最后 , 因为除非有外部政治因素的干预 , 程序员很少会中途更换编程语言 。 所以 , 我们就有了一个看似矛盾的结论:如果你想设计一种适合开发大型项目的编程语言 , 就必须使得这种语言也适合开发一次性程序 , 因为大型项目就是从一次性程序演变而来的 。
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 手机|这个超强App,让手机快3倍,流畅到起飞
- 速度|华为P50Pro或采用很吓人的拍照技术:液体镜头让对焦速度更快
- 蛋壳公寓|官媒发声:绝不能让“割韭菜者”一跑了之!
- 现状|程序员现状揭秘:平均年薪20.36万,Java人才需求量最大
- 健身房|乐刻韩伟:产业互联网中只做单环节很难让数据发挥大作用
- 绝不能|互联网也有“五连鞭”毒瘤,绝不能让这些“割韭菜者”一跑了之
- 跑腿|机器人“小北”上岗 让办事群众少跑腿
- 联网时代|34岁转行做程序员是否还有成功的机会
- 涡轮|看法米特涡轮流量计如何让你得心应手
