曾经,我们如同走在一片沙漠,看不到沙漠的边缘,也不知道如何行走。Brooks的伟大贡献,在于他用《人月神话》指出了一条道路并教给我们基本的行走方法,让我们从中学会了辨识流沙,懂得了沙暴的征兆;同时“没有银弹”的假设激发了我们的斗志,如同有人在说“你要证明沙漠有边界,你就拿出一束青草来看看”。
于是有了几种喋喋不休于“有没有青草”的人。一种是已经在灵魂上上升到另一个层次,故而无需行走于沙漠。另一种则只是站在沙盘边上,用长杆推动卒子,而鞋子上根本不会沾上一点点沙土。
①节选自同名博客文章(2007年3月),该文章是关于《人月神话》的读后感,是“具体工程”的滥觞。
还有一种人则不时地宣称他们已经找到了青草。他们总能确保你在付费的时候看得到青草,而你转身时才会发现那里并不是沙漠的边缘。
剩下的人一边喃喃着“沙漠边缘的青草”,一边在焦燥的沙海里缓步前行。不同的是喃喃而不自觉者掉进了沙坑,心怀憧憬而盯紧脚步的人则走出了沙漠。
走出来,你才会觉得:原来有没有青草,并不是那么重要。yipindushu.com
还有一种人则不时地宣称他们已经找到了青草。他们总能确保你在付费的时候看得到青草,而你转身时才会发现那里并不是沙漠的边缘。
剩下的人一边喃喃着“沙漠边缘的青草”,一边在焦燥的沙海里缓步前行。不同的是喃喃而不自觉者掉进了沙坑,心怀憧憬而盯紧脚步的人则走出了沙漠。
走出来,你才会觉得:原来有没有青草,并不是那么重要。
接下来,我们将要提出一些现实中的简单问题。这些问题是如此的简单,例如为什么要用一对大括号“{}”来将代码括起来?之所以说它简单,是因为你会看到每本书都这样忠实地写着,而且你的每一个老师、每一个技术同行,以及每一个代码范本都如此教导着你。而它又无比复杂,以至于到了一种名为Python的语言出现时,我们就再也想不明白:为什么代码不再包含在一对括号之中了——对于许多人来说,将这样的一对括号换成一组“begin ..end”都是莫大的挑战。
编程的世界是如此的奇妙,如同我曾说过的一样:会不会编程,甚至成了某些人的智力评测基准。然而也如同上面所谈,解释其中某些看起来习以为常的现象,既大有必须,亦必为挑战。
那么我们有没有办法,不使用那些艰涩的公式或者数理逻辑来证明这个世界的必然性,而仅仅只是去说明它呢?我想,代码总是需要拿来被“阅读”的吧。先不管读者是谁,一个东西要被阅读,它至少要具有两个性质:能被叙述,以及能被记载。这其实涉及了两个更深层次的问题,前者是要求有一个语言系统,后者则要求有一个存储系统①。语言系统的特性取决于对话的双方,而存储系统的特性则取决于存储的对象,以及存储的条件……等等类似这些的、将在本编中出现的文字,在我看来就是我们对“代码为什么是这个样子"的本源性的思考。那些完全不了解,也不探知,甚至未能察觉“本源问题”的人,努力地清扫着地毯上的灰尘并一遍又一遍地检视着,点着头发出赞许的啧啧声,而无视于空气中漂浮的粉尘——即使它们在半个小时后又将掉落在地毯上。
所以一个不能思考事物本源的人,是不可能具有开创性的,他既不能解决问题本身,也不能发现解决问题的可能途径。
①这其实是人类文明的根本,通常含义的文明是从有文字记录开始的。
计算机本质上来说仍然是一种算具,其基本构造与历来的算具并没有什么不同。其核心仍在于对数和算的表达,即一种表示与存储数的方式,以及一种计算的方法。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【行在道上从局部到全局2:http://www.yipindushu.com/xuexifangfa/16536.html
推荐文章
09-03
1 喜欢的一句话文案哲理09-03
2 哲理的话长09-11
3 窗帘宣传推广用语09-13
4 传递正能量:语录大全的温暖力量09-11
5 陈慧娴夜半轻私语