關於BASIC,Edsger Dijkstra曾經說過這麼一段話:“那些已經學過BASIC的學生是不可教化的,再去教他們優秀的編程風格註定徒勞無功。他們已經腦殘,再生無望,成不了優秀的程式員。”
BASIC是Beginner'sAll-purpose Symbolic Instruction Code的縮寫,意為“初學者的通用符號指令代碼”,它是在1964年由美國的兩位教授Thomas和John
G. Kemeny在Fortran語言的基礎上設計出來的電腦語言系統。這個簡單、易學的程式設計語言當時只有17條語句、12個函數和3個命令。——譯者注
Edsger WybeDijkstra(艾茲格·迪科斯徹)是荷蘭電腦科學家,畢業並就職於荷蘭Leiden大學,早年鑽研物理及數學,後來轉為電腦科學。曾在1972年獲得過素有電腦科學界的諾貝爾獎之稱的圖靈獎,之後,他還獲得過1974年AFIPS
Harry Goode Memorial Award、1989年ACM SIGCSE電腦科學教育教學傑出貢獻獎、以及2002年ACM
PODC最具影響力論文獎。——譯者注
我敢肯定,他是為了達到一定的效果而誇大其辭。我非常欣賞他在1972年寫的那篇論文:“The Humble Programmer”(謙遜的程式員),但再怎麼樣我也不能同意“選錯程式設計語言會損傷程式員的智商”這樣卑微的觀點。儘管電腦程式設計語言在不斷進化,在我看來,我們面臨的最大障礙不是對語言的選擇,而是這個現實:不同的程式員可以把FORTRAN程式寫得千差萬別。拿Pogo的話來說,“我們遇到敵人了,他就是我們自己。”
貶斥BASIC確實能帶來高人一等的優越感。不過,像很多有一定年紀的程式員一樣,我是伴隨著BASIC一起長大的。
我以前曾經提到過,早期的遊戲機與編程之間的絕妙碰撞發生在Atari 2600這款BASIC編程盒上。我怎能錯過這種親自體驗的機會呢?於是,我在eBay上買了一台。
Atari(雅達利)是世界上第一家電腦遊戲機公司,曾經創造了年銷售額20億美元的神話。——譯者注
我還買了一套Atari2600的鍵盤控制器。覆蓋圖是隨盒子附送的,而兩個控制器並在一起組成了一種原始的鍵盤。(如果你想知道我拿著網站上的廣告收入都做了些什麼,現在你知道了……很大一部分就用來購買這些亂七八糟的東西。)
出人意料的是,這台機器的使用說明在網上居然找不到,於是我自己掃描了一份。我把它放在這裡:http://www.flickr.com/photos/25885309@N02/sets/72157604661612578。去看一下吧。很有意思的!有人還把這個使用說明抄錄成了HTML格式,但缺少了照片和圖表,讀起來也便無趣許多。
我把Atari2600模擬器裡的BASIC編程唯讀記憶體裡的東西做了一份拷貝。然後依據機器的使用說明,編寫了一個BASIC小程式。
你會發現,關於在Atari 2600上進行BASIC編程,網上所有其他的截屏實際上都是空白的。這也許是因為我是惟一一個對Atari 2600如此癡迷的人,竟然會在它上面嘗試編程……這事看起來很痛苦,但誰知道呢,除非你親自試一試這時髦的玩意兒。過程確實很糟糕!當我很泄氣地扔開手中的鍵盤時,我竟忍不住笑了起來。但我必須承認,在我完成了第一個“程式”之後,我內心深處還真有些小激動,因為我讓機器屈從了我的意志。它讓我保持自信滿滿!
我從eBay拿到的包裹裡還包含幾張手寫的編程筆記。我猜,它們是1980年代遺留下來的吧。
難道BASIC不就是這樣嗎?即使是這款笨拙的Atari 2600上的BASIC,你也能從中發現一些基本的編程概念。難道不是嗎?
當然,如果你真心喜歡電腦,你大可不必在這麼不起眼的Atari 2600上編程。在家用電腦上玩遊戲、編程式的體驗要好得多!在相當長的一段時間裡,市場上的所有家用電腦都預裝有BASIC。不管是第二代蘋果機,還是Commodore 64或Atari 800,機器啟動後最先映入眼帘的總是BASIC提示符。BASIC成為了編程愛好者的專用語言。
Commodore(康懋達)是與蘋果公司同時期的個人電腦公司,曾經創造過一系列奇蹟。1994年,Commodore停止生產並宣布破產。——譯者注
甚至IBM的個人電腦也預裝了BASICA(即Advanced BASIC),或者GW-BASIC,並最終演變成了QBasic(即Quick BASIC)。直到微軟推出Windows 2000之後,它們才永久地退出了曆史舞台。
事實上,如果你想用那些古老的8位蘋果機、Commodore或Atari家用電腦做任何前沿的事情,你就必須學會組合語言。我不記得有任何編譯型語言出現過,直到IBM個人電腦的誕生以及DOS時代的到來,TurboPascal才粉墨登場。編譯型語言是深奧的,一般人難以理解,也比較昂貴,直到Turbo Pascal以很低很低的價格(49.99美元)才使其福士化。(順便說一下,你可能注意到了,Anders Hejlsberg是Turbo Pascal以及後來的Delphi的主要創作者。他現在是微軟公司的技術專家,擔任C#語言的首席設計師。很多老資曆的極客——比如我自己——都對.NET抱有滿腔熱情,很大一部分原因就在這裡。)
即使你沒有高超的編程技能、無法成為下一個David Crane或Will Wright,你仍然可以用古老的BASIC編寫出很多有趣的遊戲和程式。通過使用BASIC,你能輕易知道自己是否喜愛編程,以及你是不是編程這塊料。在我們看來,《Creative Computing》就像是程式世界裡的聖經。
在很長很長的一段時間裡,只要你對電腦真心感興趣,你必然會用BASIC編寫程式。它就像你呼吸的空氣一樣,你逃也逃不掉,也是不二選擇。每當你把機器啟動起來,那個命令列提示符總是眨巴眨巴著盯著你:為什麼不敲一些BASIC命令,看看會發生什麼呢?隨之而來的是一種驚奇的感覺,一切皆有可能,你也就進入了電腦那無限寬廣的天地!就這樣,千千萬萬的程式員生涯從這裡啟程了!
BASIC並不會使人腦殘——Dijkstra 言過其實了!如果非得拿BASIC說事的話,它恰恰為眾多年輕程式員開啟了眼界。BASIC也許是最早的一種測試方法,用於鑒別你是一隻會編程的“綿羊”還是一隻不會編程的“山羊”。當然,不是所有人都有完美的結局,但確實有一些人取得了卓越的成就。
不管我們現在是否還在用BASIC編寫程式,BASIC的精神永存!