原文地址: The Beauty of Programming


编程之美

我不知道如何来解释编程对于我的吸引力,但是我会尽力尝试表达。对于某些爱好编程的人来说,这是世界上最有趣的一件事。这是一个比象棋更具吸引力的游戏,一个能够让你制定自己的规则并最终得到你想要结果的游戏。

当然,从其他人的角度来讲,编程可能是地球上最无聊的事了。

初入编程时的激动感很容易表达:事实上就是你告诉计算机做某件事,然后计算机准确无误的照做了,而且它永远也不会有任何抱怨。

这本身就很有趣。

但是盲目服从自己的指令,只会在起初的时候吸引人,显然不会成为一个讨人喜欢的‘伴侣’。编程真正让你感兴趣的原因是,你不但可以让计算机做你想要做的事,而且你还可以彻底搞清楚其中的原理。

我个人坚信计算机科学和物理学之间有着许多共同点。两者关注的都是世界是如何运行在一个较为基本的层级上。当然,两者间的区别是,在物理学中,你的重点更应该是搞清楚世界是如何构成的,而计算机科学中重点是你创造了什么‘世界’。在计算机的范围内,你就是造物主。你将从根本上控制会发生的任何事情。如果你足够优秀,你可以成为一个神,在小规模的范围内。

我这么说可能粗鄙地冒犯了地球上将近一半的人口。

但是这是事实。你可以创造你自己的世界,唯一可以限制你的就是计算机的性能,以及创造世界这些天来,你自己的能力。

假想我们要做一个树屋。你可以建造一个功能齐全、具有活板门并且稳定的树屋。但是每个人都知道建造简单扎实树屋和漂亮的树屋之间区别,这取决于在一棵树上花费的创造效果。是一件混合着艺术和工程文化的事。这是编程如此动人有趣的原因之一。功能实现次于更加有趣,更加漂亮或者更加令人震惊。

这是一种创造性的练习。

吸引我喜欢上编程的第一个地方就是搞清楚计算机是如何运行的。其中最大的满足感之一是学习计算机想学习数学一样:你用你自己的规则建造自己的世界。在物理学中,你被限制只能用现有的规则。但是在数学中,像编程一样,如果形成自洽的话,任何事情都有有可能发生。数学不需要被任何额外的逻辑所限制,但是它本身必须是合乎逻辑的。正如所有数学家所知道的一样,你确实可以有一组数学方程式让其中的 3 + 3 = 2 。你可以做任何你想做的是,事实上,当你给你创造的世界增加复杂度的时候,必须小心,不要创造一些前后矛盾的事物出来。创造出来的世界是如此美丽,容不得一丝瑕疵。这就是编程的工作原理。

人们对电脑如此着迷的原因之一,就是能从中获得自己创造一个新世界的体验,并能从中了解到它到底能够成为什么样子。在数学中,你可以使用内心来想象新世界会变成怎样。比如, 说到几何时,大部分人想的是欧几里得几何学。但是计算机却可以帮助 人们形象化不同的几何,并不仅仅是欧几里得几何学。在计算机的帮助下,人们可以形象化这 些虚构的世界,看到那些世界到底是什么样子。还记得 Mandelbrot set 吗――基于 Benoit Mandelbrot 等式的 fractal images。要不是计算机,纯粹的数学世界绝不能这样形象地展示出来。