来自 Quora 上的一个问题 Should writing code be fun?
回答者是 Alan Kay ,他的答案对我来说是一种很好的解惑作用,他说写代码是一个工程,并不是科学或数学。
首位图灵奖获得者 Alan J. Perlis 有一句名言:「我希望计算机科学领域永远不会失去乐趣。 最重要的是,我希望我们不要成为传教士。 不要觉得自己是圣经推销员。 世界上已经有太多这些了。 您将了解其他人对计算的了解。 不要觉得成功计算的关键就在您手中。 我认为和希望的是,您的手中有智慧:能够将机器视为一台机器,而不是第一次使用它时能看到更多。」
把 Alan J. Perlis 的言论带回到当代,现在的“计算机科学 Computer Science ”是一种对“几乎所有东西”的草率的术语,而不是他心目中非常严格意义上的“科学”。
在这个学科高度发达的世界里,我们希望我们飞行的飞机是由严肃的工程师设计的,他们版本的 Hippocratic Oath 是“桥不能掉下来,飞机不能坠毁...”,而不是科学家或数学家,他们通常会从坠机中学到更多东西,ー从一般的玩耍中学到更多东西。工程学的“乐趣”是设计和制造真正有效、有助于人类发展的东西,这与科学和数学的“乐趣”大相径庭。拥有“乐趣”就是能够做你选择做的事情,并且做得很好。
历史进程大致如下:
- (I) Tinkering | 解决问题
- (II) Emotional Reactions | 获得反馈,作出反应
- (III) Principled Making (and remembering how) | 归纳原则方法并记住
- (IV) Making and reasoning with Representations | 用于实用和推理
- (V) Deep theories about why | 探究深层原因
我们与哺乳动物,特别是灵长类共享(I)和(II)。
我们称(III)为“工程学”,它起源于人类历史的早期。
因为它只需要记住什么有效,无论是烹饪、住房还是桥梁,而不是为什么有效。
我们称(IV)为“数学”,它有几千年的历史,或多或少与书写形式有关。
(V) “for real”,只有几百年的历史,它的真实面貌是大多数人学习起来最困难的。
这些中的每一个都吸引着不同的人。
我参加过的最好的研究小组的成员都能做到这五点(而且他们仍然保留着自己的特殊兴趣和技能)。
这就像一支优秀的篮球队ーー每个人都能真正打球,而且他们都有自己的特长。
一个伟大的团队比最聪明、最优秀的成员更聪明、更优秀。
一个贫穷的群体比最不聪明、最优秀的成员更愚蠢、更糟糕。
尤其是科学,在协同作用方面做得很好: “科学”是一个比任何科学家都好得多的科学家。
如果你回顾一下自科学发明以来的工程学历史,你会发现,在利用新的思维方式来考虑一般事物,特别是制造事物方面,至今仍存在一些长期滞后现象。在一定程度上,这实际上是一个优点。
也有其他人说
我已经70多岁了,仍然是一个全职的嵌入式系统工程师,因为我的工作在50年后仍然很有趣。我可以编写软件,设计硬件,制作原型。
我从学习和发现新事物中获得的“乐趣”并不如我从得到一些坚实的工作并且知道它建造得很好的事物中获得的满足感来得强烈。
推荐:
