跨平臺,跨出心域


  by Yazy,2005-5-31

現代的程序設計語言被談論很多的話題有“跨平臺”。Java語言有“Write once, Run every”的平臺無關
性廣告,很多Java程序員以此倍感自豪。C++語言也被稱爲“跨平臺”性最好的語言之一,信仰C++的程
序員也會爲此倍感自豪。

Java跟C++相比,誰更加跨平臺?我覺得它們都有很強的跨越能力,都已是大氣裏不可缺少的一部分,都
已容入大氣,無所不在,無處不有。

Java從原來生存於WebBrowser的Applets成長起來,如今的Java已經可以生存於Windows桌面,Linux桌
面,Web服務器,手機、掌上電腦等移動設備……Java與生俱來的網絡生存能力無與倫比,Java無所不在,
其生命力由人所見。

Sun控制着Java試圖侵犯信仰其它語言的神聖領地,比如C++。在市場氣氛的薰陶之下,Java會將自己所
有的“特長”展現出來,並以此打擊其它信仰者神聖不可侵犯的聖地。Sun就像一個精力十足的傳教者,
將Java帶到每一寸純潔的地域,甚至是侵入已經被其它文化薰陶過的地方。Sun試圖使用一些貶低、諷刺
的語言來詆譭其它文化,以達到侵入其它文化的忠實者內心,並取而代之的目的。

毫無疑問,Sun是在市場魔手的驅動之下,在試圖默默地控制人自由選擇的權力。信念不夠的人便被其精
闢的廣告語、以及幽默的詆譭性短語動搖,以至放棄原有的信念,重新選擇。這種詆譭也在很多人言行之
中有意無意的表露出來,說明了普通人也有意無意地會有這些詆譭的言行。如果這種詆譭成爲一種意識,
那麼人類命中註定要活得更累。拋開所有宗教氣氛,人最基本的就是尊重別人,包括尊重人的自由選擇權。
詆譭人的選擇,這是在侮辱人,是在默默將氣氛緊張,並使之帶有敵意。

跨平臺在商業上是商家們競爭的一個切入,從社會效益的角度去看,跨平臺更有益於社會的發展,更容易
得到用戶的青睞。用戶可以使用同一個工具在不同的操作平臺上工作,省去了學習新工具的時間,提高了
社會運行效率。

Java的跨平臺基於動態的二次編繹,C++的跨平臺基於開發者所使用的編繹工具集以及庫。Java的跨平臺
層次止於其字節碼,C++跨平臺層次止於其源代碼。Java字節碼的執行全懶於其二次編繹程序,C++源代
碼的執行全懶於編繹平臺。從運行的效率講,Java字節碼需要經二次編繹的過程,而C++編繹後的原生代
碼不需要這個過程,可以想象兩者的執行效率的不同。Java字節碼的執行可以有更多的定製化,而C++等
語言生成的原生程序不會有定製執行。

.NET平臺也是二次編繹的運行平臺,任何高級語言只要能編繹成.NET的“字節碼”,即Intermedia Language,
就可以運行於.NET平臺。現代的很多解釋型語言都增加了二次編繹平臺,以加快程序運行效率以及語言的
靈活性,提高跨語言交互性。例如Perl社區與Python社區共同提出的Parrot平臺。Parrot的思想的形成時期
並不.NET晚,兩都的出現沒有模仿或者跟隨的情況,兩者不約而同的出現可能就說明了這種“二次編繹”
的運行方式有它的需求空間。

腳本、Java、.NET、Parrot和C++,這一切最基本的不同就是程序運行的方式不同,而用戶需要哪種運行
方式,需要什麼樣的運行效率用戶完全可以自由選擇。用戶的選擇直接影響到的是程序的開發方式以及開
發效率,腳本程序相對來說開發效率是最快的,次之是基於中間代碼的語言,相對開發時間最長的是
C/C++。用戶有權力在這些選擇之中作出權衡。

開發者是個特殊的用戶,是開發工具及語言的最終用戶。程序員有權力選擇自己喜歡的開發平臺,而爲各
種詆譭性短語所默默左右便顯不夠自信,定力不足,任何詆譭都是極俱侮辱的言語。我們沒有理由否定人
的選擇……

我喜歡強大靈活的工具。語言我喜歡C++,平臺我喜歡GNU的開發平臺。然後強大的工具都不是萬能的,
總有不足之處。而我並不追求完美,亦都不追求完美與第一,“第一”是別人的哲學。

工具以及平臺的強大與靈活換來的是學習曲線的陡峭,學習時間需要更長。這也常常是程序員選擇開發平
臺的要求之一。“人不能被束縛於工具”,所以一個工具如果需要花更多時間去掌握,可能會被更多的人
拒絕。這也是個權衡選擇的問題。

程序員應該跨出語言之間、操作系統之間、工具之間的商業競爭所帶來的污染地帶,跨出絕對信仰與絕對
排斥的心域才能夠活得更輕鬆。我心中的程序員是多才多藝的,是刻苦耐勞的。程序員熱愛生活、積極向
上,程序員是情感豐富的動物。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章