?? c++圣戰篇.txt
字號:
我的回憶和有趣的故事 --- C/C++圣戰篇
李維
(聲明以下的這篇文章內容是我個人的回憶以及看法,沒有任何特別的偏見,許多的事情是
根據我的記憶以及從許多人的訴說中得知的,也許內容不是百分之百的正確,不過我想這些
內容有一定的可信度到是可以保證的。)。
一直想寫一篇我個人在過去10多年來工作中經歷的一些事情,以及看著一些我認為是偉大
的工程師在這些日子中對于資訊界的貢獻。
和Borland 的緣由
記得我在大學時第一個在PC上使用的軟體便是SideKick,至今我仍然無法忘記這個讓我津
津樂道的軟體,而Borland在當時也就是以SideKick成為全球知名的軟體公司。不過
Borland 第一個奠立創業基業的軟體卻是我大二使用來交作業的Turbo Pascal. 而Turbo
Pascal也是第一個我聽到關于Borland 的有趣的故事。
當年Philippe Kahn (Borland 的創使人)和Anders Hejlsberg到美國創業時,便由
Anders以組合語言撰寫了Turbo Pascal的編譯器,而Philippe則包辦了Turbo Pascal
其他的部份。在這兩位人兄開發完TurboPascal之后,窮得快連登廣告的錢都沒有了。但
是Philippe為了在Byte雜志(還記得這個著名的雜志嗎?)刊登Turbo Pascal的廣告,
因此和Anders商量了一個方法,那就是一天他們約了Byte雜志的人到當時Borland 的辦
公室討論刊登廣告的事情。
當Byte的人到了Borland 之后,Philippe,Anders和公司的助理小姐故意忙著接電話,接
受Turbo Pascal的訂單,并且告訴Byte雜志的人等一下。過了一陣子之后Philippe才進
入房間向Byte的人道歉,說他們的Turbo Pascal受到市場的熱烈歡迎,訂單源源不斷的到
來,因此可能不需要在Byte雜志刊登廣告了,接著Philippe向Byte的人展示Turbo Pascal
這個產品。由于在當時的機器中Turbo Pascal能夠在少少的RAM 中常駐執行,又提供閃電
般的編譯速度,立刻讓Byte雜志的人震驚在當場,憑著專業知識和豐富的經驗,Byte的人
立刻知道這將是一個革命性的軟體,因此馬上希望Philip能夠在Byte雜志刊登Turbo Pascal
的廣告,并且愿意以半價刊登。當然,Philip也立刻的答應了,于是一個革命性的軟體
Turbo Pascal終于在Byte雜志刊登出來了,售價49.99 美元的Turbo Pascal立刻為
Borland帶來了大量的財富,Turbo Pascal也立刻的成為PC上除了基本的Basic 之外最
暢銷的開發工具,也正式揭開了Borland 影響PC開發工具10幾年的序幕。
在Turbo Pascal之后, Borland 接著推出了SideKick這套軟體,SideKick可以說是隨后名的記憶體常駐軟體(TSR )的始祖,也是讓Borland 跨出開發工具界,讓幾乎所有PC使
用者認識Borlan d的關鍵軟體。當然SideKick也很快的成為了全球的暢銷軟體,繼續的把
Borland 往頂尖的軟體公司上推。
而Turbo Pascal也成了我大二,大三撰寫作業的最愛,幾乎所有的作業都是使用Turbo
Pascal 完成的,當然其時Horowise的Data Structure這門課也是使用Turbo Pascal過關
的,因此從那個時候開始我便非常喜歡Borland 這家公司,慢慢的也開始對Borland 有了
特別的感情。大二時Microsoft 也推出了Microsoft Pascal,但是它和Turbo Pascal的確
是有一段差距,我使用了一次之后便把它丟到垃圾桶。稍后Borland 也推出了TurboBasic ,
我記得這個編譯器非常的棒,編譯速度就和Turbo Pascal一樣,是一個非常有前途的產
品。但是我不知道為什么它只有1.0 ,之后便和Microsoft Pascal一樣消失了。我聽說
Microsoft 和 Borland 互相交換條件,Microsoft 不進入Pascal的市場,而Borland則
退出Basic 的市場。至于是不是真的我就不得而知了。
在大二初次的接觸到C 語言,第一本閱讀的書便是王興隆先生寫的C 語言,也從此開始和 語言結下了淵源。平生第一個使用的C 編譯器便是Lattice C ,不知道還有沒有人記得。
我還記得那個時候使用2 個5又1/4磁片抽換以便編譯 C 程式的情景。稍后 Borland 終
于推出了風行天下的 Turbo C 編譯器,當然,從此之后Turbo C 便成了不離身的工具,而
Borland 也藉由Turbo C 這第三項暢銷產品邁向了世界前10名的項尖軟體公司。
當完2 年的兵之后,我在中研院首次使用了C++ 語言,第一個使用的C++ 編譯器則是 ortech C/C++,這家公司稍后被Symantec收購成為Symantec C/C++的核心,這個故事稍
后再說。后來 Borland 也推出了 Turbo C/C++ 1.0 這第一個C/C++編譯器,但是在我和
Zortech C/C++ 比較之后,還是覺得 Zortech C/C++ 比較好,因此就繼續使用Zortech
C/C++。一直到Borland 的Turbo C/C++ 2.0 編譯器推出之后,才逐漸成為 C/C++ 語
言的王者,而我也像以往一樣把Zortech C/C++ 換成了Turbo C/C++。
在1991年到Georgia Institute Of Technology 念碩士時,終于使用自己的零用錢美金
49.99 購買了生平第一套的正版軟體Turbo C/C++ 4.5 ,隨后又購買了Borland Pascal.
在畢業前的一個Quarter ,Microsoft推出了Microsoft C/C++ 6.0 以及MFC 1.0 ,由于
是第一個C/C++ 的Framework ,因此也花了一些錢購買了一套以便了解MFC。但是在收到
之后卻很失望,因為 Microsoft C/C++ 6.0 仍然沒有圖形整合發展環境,還是在DOS 下的
整合發展環境,而且MFC 1.0 以我的眼光來看又不好用,而且Microsoft C/C++ 6.0 的
C/C++ 最佳化編譯器在其時是一個笑話,不但產生的程式碼效率不好,甚至會產生錯誤的程
式碼,許多雜志也稱Microsoft C/C++ 6.0 是一個平庸的(Mediocre)產品。因此就把它
丟在一邊。在Microsoft C/C++ 6.0 不久之后,Borland 終于推了Borland C/C++ 3.0.而
這套軟體也開啟了Borland 雄霸C/C++ 編譯器常達5 ,6 年之久的序幕。
Borland C/C++ 3.0 推出之后由于擁有第一個在Window下的穩定的圖形整合發展環境,而
且它產生的最佳化程式碼也是 Microsoft C/C++ 6.0 望塵莫及的,因此很快的幾乎所有的
C/C++ 程式師轉而使用 Borland C/C++ 3.0.因此在那個時候有一個現象,那就是幾乎所有
的公用程式或是Shareware都是使用Borland C/C++開發的,許多硬體廠商的驅動程式也是
使用Borland C/C++ 3.0 來撰寫的。 1992年我取得Georgia Institute Of Technology
的碩士學位之后最想進入的公司便是Borland 和Micro-soft,不過最后我還是決定回臺灣
工作。在此時Borland也進入了最巔峰的時期,因為Borland 推出了Borland C/C++ 3.1。
Borland 在 Borland C/C++ 3.0 獲得空前的勝利之后,并沒有松懈下來,因為 Borland 知
道Borland C/C++ 3.0還缺了一個最重要的勝利因子,那就是如同Microsoft 的 MFC 一樣
的 C/C++ 的 Framework ,因為Borland 也看出了Framework 將會是未來 C/C++ 產品中最
重要的一環科技。不過 Borland 此時面臨了一個重要的十字路口,那就是到底要自己開發
一個和 MFC 抗衡的 Framework,還是要如何做。 因為如果要自己開發Framework,那么勢
必要花上一些時間,但是 Borland想趁 Borland C/C++ 3.0 如虹的氣勢再下一城,以便徹
底擊潰Microsoft C/C++。 因此最后 Borland 決定向一家叫 White Water 的公司購買一
套由這家公司開發的一個 Framework,這套 Framework 便是后來鼎鼎大名的 OWL 的源流。
而 Borland 也因為向 White Water 購買了這套Framework,因而也引進了一個日后非常
重要的人物,那就是后來負責開發Delphi的一員大將 - Zack Urlocker。
在Borland 購買下White Water 的C++ Framework 之后,便更命為OWL(Object Window
Library),并且很快的推出了以OWL 1.0 為核心的Borland C/C++ 3.1。由于OWL比當時
的MFC 1.0 封裝的更為完整和好用,再加入Resource Workshop 視覺化能力,以及Borland
C/C++ 3.1 自己最強勁的編譯器和整合發展環境,因此立刻的風靡了全世界,其受歡迎的
程度更是遠遠的超過了它的前一版本Borland C/C++ 3.0。
由于Borland C/C++ 3.1 的暢銷,立刻讓Borland 在C/C++ 市場一舉擊潰了 Microsoft
C/C++ ,市場占有率超過了50% ,是全球第一的C/C++ 產品,也把Borland推上了最高峰,
成為全世界第三大的軟體公司。
很快的,我所工作的開發小組也立刻的以 Borland C/C++ 3.1 來開發系統,Borland C/C++
3.1 也是我使用過Borland 最穩定的C/C++ 版本之一。也由于那個時候一天到晚都使用
C/C++工作,因此就有了一些小心得。稍后我整理了一些東西便投稿到剛出刊不久的RUN !
PC,也許是運氣不錯,RUN !PC 很快的也登出了我的文章。就是這篇文章登出之后,臺灣
的Borland 注意到了我,開始和我連絡,并且從此展開了和Borland 的互動。而Borland
C/C++ 3.1 也是第一套Borland 免費送我的軟體,當然代價就是希望我多寫一些Borland
產品的文章。
接著Borland 又計劃推出 Windows 版的 Borland Pascal,不過在 Borland 開發Borland
Pascal For Windows時,當時(現在也還是)最具盛名的Charles Petzold (我的第一本
Windows 程式設計的書就是這位仁兄寫的,相信許多人也是看他的書一路學來的)就說除了
C/C++ 之外,Borland不可能做出能夠在 Windows下執行的Borland Pascal,不過很明顯
的,即使是 Windows API 的大師 Charles 也錯了。Borland 不但做出來了,而且Borland
Pascal For Windows 還非常的暢銷,當然Borland Pascal For Windows也是后來Delphi
的根基。
當時的Borland 可說是不可一世,不但產品大賣,而且日進斗金。Borland在 Scotts
Valley豪華的總部也是在那個時候由 Philippe Kahn 大手筆的花了一億多美金搭建的
(想想10年前的60多億臺幣可以蓋什么樣的房子?)。不過也許是 Borland 太成功了,
因此也開始讓 Philippe Kahn 漸漸的養成了好大喜功,目中無人的態度,也種下了Borland
開始走向衰退的因子。
不過在 Borland 最強盛的時期,當然也就是Microsoft 最想痛宰Borland 的時候,在這
個時候發生了一個著名的事件和一個著名的虛擬人物。話說由于當時Microsoft 的開發工
具一直打不過Borland 的產品,因此在Microsoft 的開發工具刊物上便出現了一個作者
不斷的以文章嘲笑Borland ,這個作者的筆名是 Buck Forland。 后來由于這位作者的文
章內容以及他的筆名引起了當時Borland的不滿以及大量Borland使用者的強烈抗議,因
此稍后這位作者就突然的消失不見了。因此有許多人就推測這個作者應該是 Microsoft的
工程師,由于一直無法打敗Borland 的產品,腦羞成怒,因此才會以這個筆名來發泄。如
果各位看倌到現在還摸不著頭為什么這個筆名會引起軒然大波,那么請你試著把Buck
Foland 這兩個英文字的第一個字母一對調就知道為什么了。現在各位是否會心一笑了?
在Borland C/C++ 3.1 大獲成功之后,Borland 卻開始松懈了下去,并且開始走下坡。
當然這有許多的原因,我所知其中最重要的原因有數項:
■Philippe Kahn 和當時Borland C/C++ 的產品經理鬧翻了。這位 BorlandC/C++ 的產
品經理的名字是Eugene Wang ,他是一位非常聰明的中國人。他一手把Borland C/C++
帶到了世界第一的地位,并且在Borland C/C++ 3.1 成功之后有了更偉大的想法,那就是
Eugene Wang想在下一個Borland C/C++ 版本中完整的以OWL封裝所有的 Windows API,
因為OWL 1。0 雖然比MFC 1。0 來得優秀,但是OWL 的隱憂就是OWL 尚未完整的封裝
所有Windows 的API。此外Eugene還計劃以OWL 為核心,開發一個類似今日Borland
C/C++ Builder 的以視覺化元件為開發方式的開發工具。請各位想一想,如果在當時
Borland能夠開發出這種 C/C++ 開發工具,那么將會是一個多么可怕的產品,稍后
Microsoft 的Visual C/C++ 1.0 只是能夠在整合發展環境中自動產生 MFC 的程式碼就立
刻的轟動了 C/C++ 市場,造成了大量程式師轉入 Microsoft 的陣營。即使是目前的
Borland C/C++ Builder使用的Framework 仍然是以Object Pascal 以核心的元件Framework,
而不是純粹的C/C++ 程式碼。如果當時 Eugene Wang能夠做出他心中的下一版Borland
C/C++,那么我想到現在Borland C/C++ 可能還是市場中第一的 C/C++ 開發工具。不過很
不幸的是,Eugene Wang 稍后和 Philippe Kahn 發生了爭執,Eugene Wang一氣之下離開
了Borland。而 Philippe Kahn 則認為 Borland C/C++ 的地位已不可動搖,因此也沒有想
立刻的做下一版的Borland C/C++。這樣一拖竟然浪費將近2 年的時間。
Microsoft Visual C/C++ 1。0在Borland C/C++ 3.1 2 年之后推出,并且立刻獲得市場好
評。不但在編譯器方面能夠和Borland C/C++ 3.1 相抗衡,在整合發展環境方面更大幅領
先了Borland C/C++ 3.1,還能夠自動產生MFC 的程式碼,再也不是昔日的吳下阿蒙。直到
此時 Philippe Kahn 才從夢中驚醒而急于開發下一代的Borland C/C++ 4.0 ,但是為時已
晚,C/C++ 的開發工具市場從此就開始逐漸的被Microsoft 蠶食了。
Eugene Wang 在離開 Borland 之后,立刻的被 Symantec 所網羅,稍后Eugene Wang也在
非常短的時間之內為Symantec開發出了著名的Symantec C/C++。 Symantec C/C++ 在當時
被所有的技術刊物評比為擁有最棒的整合發展環境和最有創意的C/C++ 開發工具,從此可
見Eugene Wang 的功力。不過 Symantec C/C++ 稍后也不敵 Microsoft Visual C/C++,這
個故事的原因在稍后四大C/C++ 編譯器之爭的段落中再詳細的說明。
我最后聽說 Eugene Wang 跑去做生意了,并且在前幾年寫了一本教導科技人員如何面試的
書籍。我一直很痛心Borland 失去了這么一位優秀的人材,我常想如果當初 Eugene Wang
沒有離開Borland ,那么歷史就可能不是現在的這樣了,Sign?。?!
■Philippe Kahn 大手筆的花了一億多美金買下了 Ashton-Tate 公司和dBase。在當時許
多人都批評Philippe Kahn 做了不值得的事情,因為 Ashton-Tate 不值這么多錢。但是由
于當時 Borland 多的是錢,因此Philippe Kahn也不多意。不過這并不是Borland 走向逐
漸走向衰敗的主因,而是在 Borland 買下了dBase 之后,并沒有立刻積極的發展dBase
For Windows ,反而把dBase 丟在一旁。這個原因便是當時Borland 的另外一個和資料庫
有關的產品Paradox 賣得也很好,因此Philippe Kahn 并不急著打算開發dBase For Windows。
不過Philippe Kahn 忘記了一件事情,那就是當時在市場大量人口的dBase 程式師需要一
個好的 Window 版dBase ,但是Philippe Kahn 購買了dBase 卻不提供Windows 版的解決
方案。因此當稍后Microsoft 以極小的代價買下Fox 這家公司,并且在數年之后推出 FoxPro
For Window,吸引了大量原先的dBase 程式師以及Paradox 的程式師之后,Philippe Kahn
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -