作者reader (读者)
看板CSSE
标题世纪末软体革命
时间Thu Jun 22 12:56:43 2006
就在去年的今天,我在板上提到了《世纪末软体革命》可能会重新出版的事情,
如今真的是重新出版了,加上了「复刻版」字样,书中的第三部分是采用第一版
内容,而前两个部分则是用第二版内容,然後三位作者各自写一篇序言或後记。
一些可能想说的话,则可能会在此书的 blog 上写一写吧。blog 网址在:
http://sr.grandtech.com.tw/
以下则是我写的後记。
--------------------------------------------------------------------------
来时路/赖明宗
那曾经是一个激昂的年代,在我们称之为世纪末的那些日子里,即使有着许多的迷茫
和恐惧,但大家总是带着过剩的精力,想要登上无人攀越的高山,走过前人不曾走过
的路。世界在加速,不断地加速,直到那斯达克指数一泄千里,直到世贸大楼倒下。
如今世纪末已经过去了,新的一纪也过去了一半,渐渐地似乎一切都回到了正常的轨
道上,回首来时路,或许再也拾不回旧日时光和心情,却也能用不同的视角,重新审
视过往。
对於大部分的软体工作者而言,所谓的世纪末并不始於 1990 年的 1 月,而是在当年
的 5 月,在这个月,微软推出了 Windows 3.0, 多工作业和事件驱动跃上主流,而
Borland 也推出了 Turbo C++ 1.0, 物件和类别开始成了热门话题。同时,影响巨大,
一般被称为 ARM 的 The Annotated C++ Reference Manual 也在这个月出版了,开始
引进 template 和 exception handling 机制。
也就是从这时开始,大量新的程式设计方法正式地被引入了软体产业之中,或许追根
溯源,大部分变化都在学术界酝酿多时,但如果真有所谓「世纪末软体革命」而且必
须定一个代表性的时间,多数人可能会同意,这时间应该是在 1990 年的 5 月。
在第一版写作之时,软体革命尚是一个模模糊糊地概念,说起来取这种名字,拼凑夸
饰以求市场效应的成份只怕稍大了一些。但就软体开发来说,九○年代也是从七○年
代初期结构化程式设计概念成形以来,最为巨大的软体生产方法的变动时期,我们就
着孔恩的典范转移观点做此宣称,倒也不算太过出格。只是以我们当时的见识而言,
仍明显不足以掌握其整体的面貌。
到了 1995 年 8 月,对於软体产业而言,这是世纪末另一个值得纪念的月份,先是
Netscape 成功上市,紧接着就是 Windows 95 风光推出,软体技术的发展走入社会,
成为轰传世界的重要新闻。软体革命一词似乎已不仅仅是少数软体工作者对於软体开
发方法变化的一种夸饰用词,而开始有了更为巨大的意义。在往後数年,网路狂潮席
卷世界,无论愿意或不愿意,几乎每个人都得学习与适应软体技术的爆炸性发展。
那一个疯狂的世纪末,或许已经没有必要再多加赘述,只是,即便到了本书的第二版,
「软体革命」这个名词仍是一个充满着不确定性甚至带着过去式的用语,也就是说,
其实我们并没有真正理解软体的发展趋势,我们只是知道着一些可能性,知道着一些
较为重要的脉络,或许相对於许多仍在软体公司里每日加班没有自己生活的「软体工
人」来说,我们曾经传述着近似福音的话语,但就这个世界来说,其实,我们都是井
底之蛙,顶多是几个比其他青蛙更喜欢抬头看着天空的青蛙。
更糟的是,我们当时甚至不是很清楚自己的井底之蛙身份。先不说别人,我自己就是
一个例子,想走向世界,甚至也跨了一小步,却又发现没有足够准备和技术以外的能
力,满怀着不愿显露的挫折情绪,从矽谷退了回来。
相信许许多多聪慧努力的软体工作者,都有着类似的心情,在台湾市场,很少有人真
正需要技术,软体工作在多数时候都只是类似建筑工人所做的苦工而已,但真的要放
眼国际,我们却又没有足够能力。也就是这样,我们这一群人,有许多人一次又一次
地创业,也一次又一次地因为过於冒险和不明白自己的能力而进退失据。
到底怎样理解世纪末这十年的软体产业变革,而反省过去,我们又能得到什麽样的教
训?我想,就历史来说,现在还太近,但就个人来说,再等就没有意义了,所以,我
也就试着说一说。
首先,我们可以很明显地注意到,软体结构逐渐跃居软体开发的中心,不是早期的资
料结构和演算法,也不是中期的使用者需求和软体开发计划,就是以软体结构的建造
和变化为主角,软体开发愈来愈像是土木工程或建筑设计,软体的运作愈趋永久化,
软体的更新愈来愈频繁,於是一个强固的软体结构的重要性也日益增强。
体现在实际层面上,就是 Class Hierarchy, Application Framework, Design
Pattern, System Pattern, Software Architecture, Configuration Management
等等的组织、框架、形态、建构、管理方面的结构性工作愈来愈关键,传统的分析设
计工作相对被压缩,或是愈来愈配合软体结构做调整,而体现在软体生产组织上,就
是软体架构师 (Software Architect) 或技术架构师 (Technology Architect) 逐渐
成为软体生产单位的高级职称甚或最高职称。
其次,由於开放原始码运动 (Open Source Movement) 和网路通讯协定的标准化逐渐
影响了软体产业运作,软体之间的结合、融合、衍生、合作等等关系,也愈来愈重要,
实际上在很多时候甚至自然到让人忽视它的存在,随便一个简单的网站 PHP 程式,
往往就需要 Apache, PHP, MySQL, Internet Exploror 等等软体的协力,以及包括
HTTP, HTML, XML, CSS, Javascript, SQL, PHP 等等描述语言、通讯协定或程式语
言的结合。像过去只要会一种程式语言、一套编译程式就够了的事情,已经变得十分
罕见了。
而这一切所代表的意义是相似的,就是软体的意义,已经从电脑当中的一组运算、一
项工作、一件工具,转变成 Cyberspace 当中的一个构成、一个组件、一个系统。我
们制造软体,其实就是在架构软体内部及外部的空间,以建立或开拓使用者的操作空
间。
这样的一个朝向 Cyberspace 的转向,或许才是软体革命的真意。在软体内部,物件
导向技术让我们从运算流程的分流与汇流,变成物件和类别空间当中的连结与组织;
在软体外部,大量的标准及开放资料,特别是网际网路和开放原始码提供了软体与技
术整合的空间;而在使用者与电脑之间,GUI 及 WWW 建构了一个萤幕之後的使用者
操作空间概念。而这些不同的虚拟空间概念还在不断地整合当中。
於是我们可以合理地相信,如果所谓的「世纪末软体革命」一说能够成立,它应该不
仅仅是一个软体危机的解决方案,以建立软体的永续发展,而更应该是在为人类开拓
一个广大无边的电子空间的技术革命。
经过这几年的沉淀,我想大家都不会再像世纪末时的盲目乐观了,这可能是一个具有
深远影响的革命,却不是可以即时成就的事情,甚至会有许多人在这样的变化当中受
到伤害与痛苦,搞不好那个倒楣者正是自己。只是,我们如果能看得更清楚,准备得
更多,即使谈不上成功,但至少可以增加生存的机会,而且很多时候,活到最後的人
就是胜利者。
近年来,除了日常忙碌的工作,我最关心的,大概就是一些具有系统科学特性的电脑
相关学术进展,总括来说勉强可以称作是 Adaptive System 吧,简单来说就是更有
适应及发展能力的系统架构。另外也发明了一种相当特殊的程式语言,以及配套的网
路架构,希望能用在自己的研究上,只是一直没什麽时间好好实作。
整体而言,虽然自己是朋友们当中极少数还在实际做程式设计工作的几个人之一,却
似乎更靠近学术世界一些,连信箱都改用 acm.org 的帐号,而那些手握巨额资金,
一秒钟几十万上下的日子,彷佛已经是上辈子的事情了。
这次要出复刻版《世纪末软体革命》,我大概是作者当中最不适应的人了,早在第一
版成书之时,自己所想的跟能够写出来的,就已经相差很大了。而如今回头一看,虽
然不至於觉得满篇不知所云,却也找不回过去的心境,只得拉拉杂杂地谈谈「世纪末
软体革命」一词有关的事情。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.173.29
1F:推 wctang:回想高中在考试前,在图书馆看世末2的心情澎湃... 06/23 02:00
2F:推 ykjiang:我昨天才在 William 的 Blog 知道这件事 06/23 16:12