老牌黑客漫談開發(fā):SOAP很糟糕 腳本語言很強(qiáng)大
埃里克·雷蒙德是開放源碼運(yùn)動和黑客文化的第一理論家,其諸多著作在黑客界中有著十分經(jīng)典的地位。在為其著作《Unix編程的藝術(shù)》做促銷的間隙,埃里克·雷蒙德接受了因特網(wǎng)新聞(internetnews.com)的采訪,就許多科技話題提出了他的看法。
問:過去十年里,程序員在上學(xué)期間接受的初步訓(xùn)練都是Windows,目前是不是同樣的狀況?或者學(xué)生們都在接受Linux的培訓(xùn)?
這兩種情況都存在?,F(xiàn)在是PC的世界,這是再明白不過的事實(shí)。在今天的孩子們看來,所謂的微型機(jī)和大型計算機(jī)都似乎沒有存在過。
問:你認(rèn)為還有什么更加重要的發(fā)展趨向?
64位計算機(jī)的出現(xiàn)產(chǎn)生的影響出乎我?guī)啄昵暗念A(yù)料,而主要的原因是對地址空間的需求超出了我原來的估計。
問:可擴(kuò)展標(biāo)記語言(XML)目前在程序開發(fā)者中間都非常流行,人們對XML的作用會不會存在一些誤解?
據(jù)我所知,有些人認(rèn)為XML具有一種神奇的功能,它可以解決數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)組織問題,這是一個嚴(yán)重的誤解。事實(shí)上XML不可能有這樣的功能,因?yàn)樗鼉H僅是一個基本的syntax,只能解決一些低級問題,比如如何連接記錄,寫出在高層次上設(shè)計的結(jié)構(gòu)等。像文檔類型、數(shù)據(jù)庫方案,以及在不同的方案和文件類型之間傳送數(shù)據(jù)等一系列問題都是XML自身所無法解決的?,F(xiàn)實(shí)的世界多源的,一直是這樣,將來也會是這樣。
問:我們談一下XML的安全性能好嗎?
我認(rèn)識XML數(shù)字認(rèn)證組織的負(fù)責(zé)人。他很快將發(fā)布一個標(biāo)準(zhǔn),我們也將會擁有一種標(biāo)準(zhǔn)的、保證XML數(shù)據(jù)安全性的體系。因此我想在不遠(yuǎn)的將來數(shù)據(jù)安全性將有很大的進(jìn)展。
問:你對SOAP-即以XML為基礎(chǔ)的簡單對象訪問協(xié)議有何看法?
事實(shí)上我認(rèn)為SOAP的作用并沒有宣傳的那么好,就如同C++和C之間的關(guān)系一樣。你也知道C++的功能要強(qiáng)大一些,但同樣它使得程序更為復(fù)雜了,因此它的效益并不好。我想SOAP跟XML-RPC(遠(yuǎn)端程序呼叫)之間也是同樣的關(guān)系。
通常有一種現(xiàn)象叫作第二系統(tǒng)綜合癥,也就是說你第一次設(shè)計的系統(tǒng)可以完成80%的工作任務(wù),這個系統(tǒng)是相當(dāng)簡潔的,但是為了完成另外20%的工作你往往就會重新設(shè)計第二個系統(tǒng),而這個系統(tǒng)本身將會是無比的復(fù)雜,以至于自身常常都會崩潰。
SOAP就是一個糟糕的第二套系統(tǒng)。我認(rèn)為SOAP并不可靠,因?yàn)樗陨磉^于復(fù)雜。人們只能有兩種選擇,要么決定XML RPC已經(jīng)完全足夠了,要么搞出一個第三套系統(tǒng)來。
問:談?wù)勀銓ava的看法?
我對Java并沒有更深的研究。大多程序員都使用Java,我卻使用Python,這兩種語言在功能上沒有太大的區(qū)別,因此我也沒有放棄Python而選擇Java。
問:談到腳本語言,不可避免還要涉及Python、Perl和PHP,你對此有何看法?
我認(rèn)為這些新一代的腳本語言非常容易上手,是功能強(qiáng)大的工具。它們并不能解決所有的問題,但是他給你提供了一個尋找快速解決方案的途徑。這是難能可貴的,因?yàn)榕c傳統(tǒng)的編程語言之間的沖突是相當(dāng)嚴(yán)重的,你也無法嘗試所有的方案。
問:過去,腳本語言一直排在分類語言的后面,因?yàn)槟_本語言占據(jù)了大量的計算資源,現(xiàn)在是不是還是這種情況?
開發(fā)工具的整個發(fā)展史也就是機(jī)器時間相對程序員的時間越來越變得廉價的歷史,換句話說,程序員的時間變得越來越昂貴,因此使低端的資源存儲和管理實(shí)現(xiàn)自動化是非常有意義的。程序員可以集中精力攻克一些高端的任務(wù),這也可以說是scripting語言的功勞。
問:還有一個相關(guān)的問題:廉價計算資源的出現(xiàn)是否會對軟件業(yè)造成負(fù)面的影響?
我認(rèn)為廉價計算資源的出現(xiàn)并不會對軟件工程造成負(fù)面的影響。如果說有影響的話,只是使簡潔的軟件設(shè)計更加必要,因?yàn)閷懗龃罅看a是相當(dāng)容易的。
從3萬英尺的高度看各種語言在功能上的差距,你會發(fā)現(xiàn)Python和Perl之間是相當(dāng)接近的。你用其中一種語言實(shí)現(xiàn)的功能幾乎都可以利用另一 種語言實(shí)現(xiàn)。而僅有的一點(diǎn)的差別就用Python來編寫一些模糊的代碼相對比較困難。經(jīng)過六個月的實(shí)踐我發(fā)現(xiàn)Python語言較Perl更容易閱讀。我也 確信,對于今天我們所進(jìn)行的大規(guī)模的項(xiàng)目來說,保持長期的穩(wěn)定性可以說是任何一種語言最有說服力的功能。
問:特別是當(dāng)所有的維護(hù)工作都能輕易完成時,對不對?
當(dāng)然,但我并不是說這就是一個長期的發(fā)展趨向,我想人們將會發(fā)現(xiàn)為此將付出越來越多的隱藏的成本。
問:以上是不是基于一種文化上的差異,或者因?yàn)槟阆M绦騿T可以在線相互交流?
兼而有之吧。
【編輯推薦】















 
 
 


 
 
 
 