你是真正的计算机高手吗?——兼议黑客
伴随着信息时代产生的诸多新名词中,大家耳熟能详的一个就是——“黑客”。此词源自英文中的*hacker*, 其动词形式为 hack, 意指对计算机程序进行修改直到它工作满意为止,而 hacker 即指这么做的人。伴随 hacker 闻名的还有一个词 cracker, 中译通常为“骇客”。其动词为 crack, 意指“破坏,但并没有导致整体崩溃的结果”。显然,“骇客”是指那些用计算机技术来搞破坏的人。在中文里, hacker 和 cracker 通常被人们混为一谈,统称为“黑客”,用以指代那些俗称为“计算机高手”的人。为了避免以后行文中的误解,故于此先行澄清一下“黑客”以及所谓的“计算机高手”的所指。
鄙人不才,对计算机方面使用得稍微熟练一点,因此常常有人将我列为“高手”系列。从这种状况看来,所谓的“计算机高手”的通俗标准就是能够在计算机的某些使用方面熟练乃至精通的人了。但究竟什么是真正的“计算机高手”呢?并没有一个确切的标准。在我看来,计算机高手可以分为这样的几种:一般的熟练用户、一般的程序员和系统管理员、高级的程序员和管理员、黑客和系统开发者。从知识的掌握程度来看,分别为:掌握并熟知具体的应用程序的普通用户、掌握并熟练编程和系统维护的一般程序员和管理员、能够进行较高级别开发和维护的程序员和管理员、精通整个系统并且是系统创造者级别的开发者。即便如此说来,我们对于“高手”的概念仍然是模糊的。如果换一种思维方式,将计算机等同于我们日常使用的自行车,那么“高手”会是些什么样的人呢?如果等同于我们日常使用的螺丝刀呢?
自参加工作之后,我常常听到大家对某某年轻人计算机很牛的称赞。而该年轻人往往听到这样的称赞之后表面上不说,内心沾沾自喜,久之由此形成一种虚荣;而他为了维护这种虚荣,往往在业余会投入更多的精力在计算机上—— Java 风行的时候,他会写上一些 Applet 程序并四处散播以自娱; .Net 风行的时候,他又会以 ASPX 加上 C# 的编程而自傲; Linux + Apache + MySQL + PHP 开始流行的时候,他毫不犹豫地投身于 LAMP; ……然而不幸的是,计算机技术的更新远远快于他的转向速度,几年之后,他突然发现自己其实什么也没有深入,自己所学的东西永远在开始有点起色的时候已经“落伍”了!这个时代,计算机技术的更新就仿佛是街头女人的时尚令人眼花缭乱!面对如此迅速变幻的世界,他往往会感到一种疲惫与空虚。
我也曾经接触过一些年纪较长的研究人员,和年轻人相比,他们给我是完全不同的感觉。我曾经有幸替黄盛年院士整理过计算机,和年轻人使用的机器比起来,他的系统内干净得只剩下自带的一些程序了。他半身瘫痪,就用唯一能够活动的右手在破旧的计算机上学习了五笔,并用一只手写出了自传《未湮灭的径迹》。曾经一位已经退休快七十的老师,每天在物理所已经基本废弃的 Alpha 机器上调试他的计算程序,而这样的程序使用的是许多计算机很棒的年轻人所不屑一顾的古老的 Fortran 语言。还有一位老师,也是近七十的人了,每天在调试他那四五万行的 Fortran 程序。他使用的是大多数人都不太喜欢用的 Linux + G77, 而他的程序在国际上被许多同行使用着。相比年轻人使用的 XP 系统, Visual Fortran 或 Visual C# 等,他们使用的是多么原始和古老的工具啊!可是,使用先进工具的人又究竟有多少先进的东西出来呢?
很惭愧,我曾经也是那样技术追风的年轻人。不过幸运的是,我追的不是盗版世界里的风向标——微软及其相关的产品,我追的是开源世界的风向标——Linux 。前前后后,我接触了试用了数百个软件,了解了尝试了数十种计算机语言,并对软件行业的动态耳熟能详。在追的过程中,我开始逐渐的反思一个问题——为什么 Linux 没有在中国产生?然后我发现了另一个更值得思考的问题——我们究竟需要计算机干些什么?
首先,我们需要的不是计算机本身,也不是软件本身,而是计算机能够满足我们的某种需要。计算机只是一个工具,它和我们每天大多数人上班所骑的自行车一样,送达目的地之后,除了维修,我们没有必要浪费更多的时间于此。因此,只有真正制造和维修的人才有可能成为工具的高手。或者说,计算机高手可以分为用户的高手和开发的高手两大类。就用户高手而言,用它高效地完成自己的工作才是标准。因此,那些技术追风的年轻人并不“高手”,因为他们并不理解自己的需求,亦或他们在“技术的时尚”中迷失了自我。而真正的用户高手是象黄院士以及我所接触的那些老师们,他们用计算机达成了自己的目标。
其次,就计算机本身而言,它已经构成了一个极其复杂的系统,这个系统包括软硬件已经非单人所能构造和发展。就计算机的开发高手而言,不是单兵作战的勇士,而是能够集结团队完成一个更大目标的组织者与领导者。从这个意义上来说,真正的开发高手寥寥无几,屈指数来,也只有 Linus Torwalds, Richard Stallman 等数人,他们是站在高手金塔顶端的“黑客”。
Eric Steven Raymond 在他的 Hacker-Howto 中定义了几条“黑客”守则:
- The world is full of fascinating problems waiting to be solved.
这世上永远充满令人激动的待解问题 - No problem should ever have to be solved twice.
没有什么问题值得重复劳动 - Boredem and drudgery are evil.
讨厌乏味枯燥的事情 - Freedom is good.
自由无价 - Attitude is no substitute for competence.
行胜于言
我想,这几条“守则”已经鲜明地说明了什么才是真正的“黑客”。
我不知道还有多少年轻人沉浸在“高手”的称号中沾沾自喜着,我曾经是这样的一员,只想以自己的经历和思考来大喝一声:“醒来!在真正的高手前看清自己的浅薄!”
我不知道还有多少人将“骇客”和“黑客”混为一潭,我只是在阐述完“黑客”的真正含义之后说一声:请尊重以技术为生命的真正黑客!
你觉得自己是真正的计算机高手吗?是用户高手还是开发高手呢?