2006-11-30

世紀末軟體革命,Blog of. | 來時路

很久沒看到賴明宗的文章了 這篇寫得很好!

PS: 今天是我的部落格日嗎?

Capita 20 十月, 2006 16:58

那曾經是一個激昂的年代,在我們稱之為世紀末的那些日子裡,即使有著許多的迷茫和恐懼,但大家總是帶著過剩的精力,想要登上無人攀越的高山,走過前人不曾走過的路。世界在加速,不斷地加速,直到那斯達克指數一洩千里,直到世貿大樓倒下。

如今世紀末已經過去了,新的一紀也過去了一半,漸漸地似乎一切都回到了正常的軌道上,回首來時路,或許再也拾不回舊日時光和心情,卻也能用不同的視角,重新審視過往。


對 於大部分的軟體工作者而言,所謂的世紀末並不始於 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 的帳號,而那些手握巨額資金,一秒鍾幾十萬上下的日子,彷彿已經是上輩子的事情了。

這次要出復刻版《世紀末軟體革命》,我大概是作者當中最不適應的人了,早在第一版成書之時,自己所想的跟能夠寫出來的,就已經相差很大了。而如今回頭一看,雖然不至於覺得滿篇不知所云,卻也找不回過去的心境,只得拉拉雜雜地談談「世紀末軟體革命」一詞有關的事情。

沒有留言: