精華區beta CSSE 關於我們 聯絡資訊
就在去年的今天,我在板上提到了《世紀末軟體革命》可能會重新出版的事情, 如今真的是重新出版了,加上了「復刻版」字樣,書中的第三部分是採用第一版 內容,而前兩個部分則是用第二版內容,然後三位作者各自寫一篇序言或後記。 一些可能想說的話,則可能會在此書的 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
wctang:回想高中在考試前,在圖書館看世末2的心情澎湃... 06/23 02:00
ykjiang:我昨天才在 William 的 Blog 知道這件事 06/23 16:12