本文是关于编程文化的个人思考,是对以前中二病时期写过的几段话的反思。
所以没有要点和提纲。
黑客文化
我最开始想学习编程的动机,是想成为一名黑客。
记得那时读了一本名叫 《蓝色骇客》 的推理小说,就对黑客产生的兴趣。
当时,着迷于网上的红客的事迹,coolfire 的文章,还有黑帽子,灰帽子,白帽子之争。
然后又看了黑客帝国,天天戴着墨镜装酷。
然后,开始学习c语言,为了编写 shellcode 。并在虚拟机上的Ubuntu 系统里,破解了第一个漏洞,一个栈缓冲区溢出漏洞。
后来学了一点汇编,理解了程序在内存里的组织,才真正理解当时代码的含义。
与此同时,还找到了一本名叫《计算机程序的构造和解释》的书,读了几段,看不懂。
之后,则陷入了对 UNIX/GNU/Linux 文化的狂热中
编程之禅
《unix 编程艺术》 里汇集了 UNIX/GNU/Linux 文化的精髓。这本书里梳理了历史,收集了大量有用的资料。
保持简单,保持笨拙。
暗合朴素无为的道家思想,也暗合佛教空与无常。
这些东西让 UNIX/GNU/Linux 文化成为类似宗教文化的东西。
人们总是会对玄之又玄的东西充满好奇。
当时的我认为,这才是黑客文化的真正含义,随后开始正式学习编程,折腾各种系统和命令行工具。
MIT AI Lab
后来我读了一本书,名叫《黑客-计算机革命的英雄》。里面说黑客文化的起源,是在MIT AI Lab。
当时的我,着迷于 Lisp 这门语言。
经过很长时间的学习,理解逐渐加深。
但是这部分的历史或许过于久远,很多东西已经变化了。
直到我翻出尘封已久的《计算机程序的构造和解释》,反复阅读了前言和序言,才发现这本书原来是继承自MIT AI Lab。
我到此时终于顿悟这本书的结构,为何最后一章讲述了如何构造一台有些奇怪的机器。再联系到那段历史。Lisp 机是每个 Lisp 黑客心中的终极梦幻机器。
各种文化的意义
经过很多思考,以及阅读,我逐渐认识到,这些文化在技术社区里的意义。
它有维系整个社区成员的作用,技术社区的良性发展,离不开新成员加入,关键职位的迭代,新想法的收集和实现,技术的良性发展。
文化也代表了一种选择。例如一个技术社区,倾向于小而精调整,而另外一个技术社区,倾向于大规模粗糙的他调整。前一个技术逐步发展,更新稳定,而后一个技术社区则更适合作为新想法的试验田。
开源运动的兴起则表明,一个更加开放的社区可以容纳更多不同想法的人。
历史的参考
一般的,一个技术社区的生命周期是这样的:
- 新技术出现,引起注意。
- 第一批成员加入,推动技术快速进步,社区发展。
- 技术发展趋于稳定保守,因为此时大调整涉及范围太大。第一批成员成为社区的核心。
- 此时,倾向大调整变化的成员会离开社区,或者开辟新分支。
- 技术稳定,进步相对缓慢,新成员加入减少。
- 技术趋于落后,出现新技术。由于历史包袱太重,所以更新困难,缓慢。
- 社区会逐渐分化。技术会成为历史。
浅思
很多人会受到众多编程相关文化的吸引,而开始学习编程。
也会因为这些文化的影响,学习不同的技术。
在经过一段时间的学习和探索之后,也会失去方向。
当这些东西不再吸引人的时候,就不知道继续精进这门技术的目的是什么?
很多人并没有强烈的动机投身某个项目。
虚无逐渐蔓延会吞没所有人。
所以,这些文化的其中一个意义,在于克服这可怕的虚无感。
其他书籍
- 《UNIX 编程艺术》
- 《黑客-计算机革命的英雄》
- 《黑客与画家》
- 《程序员的呐喊》里有对于编程语言文化更加充分的讨论。
- 《perl 语言编程》里面有一些关于编程文化和历史的资料,而且这门语言很有趣。