<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件工程實踐者

    統(tǒng)計

    留言簿

    友情鏈結(jié)

    閱讀排行榜

    評論排行榜

    多語言編程

    本文是對Steve Vinoski. Multilanguage Programming. IEEE Internet Computing, Vol. 12, No. 3, MAY/JUNE 2008, pp. 83-85 的總結(jié)。

    本文的主要觀點是:在軟件開發(fā)中,要為特定的任務(wù)選擇最合適的開發(fā)語言。

    作者首先介紹了在軟件集成和軟件開發(fā)中涉及的術(shù)語/技術(shù)浩如煙海,但是開發(fā)者卻只堅持某種技術(shù),而必須使用其它技術(shù)來解決問題。這種現(xiàn)象在開發(fā)語言領(lǐng)域也是一樣。開發(fā)者總是使用自己喜歡的語言,而非解決問題最優(yōu)的語言,會造成設(shè)計方案的不優(yōu)。

    作者指出在日常開發(fā)中了解和使用多種編程語言可以帶來顯著的好處,因為沒有任何一門語言適用于解決所有問題。而語言的存在也主要是由于它適于解決某些特定方面的問題(在解決某些問題方面比其它語言好),因此,不斷有語言出現(xiàn)和消亡。在編程語言設(shè)計和開發(fā)中涉及許多需要權(quán)衡的因素,因此,這為許多不同的方案和變體預(yù)留了空間。

    作者指出,大部分單一語言開發(fā)者傾向選擇用于通用目的的語言(像Java、C++等),而不是特定的編程語言。通用的編程語言可用于解決更廣范圍的問題,但它們通常都是提供的折中的解決方案,不是太好,也不是太壞。當(dāng)然,一些單一語言開發(fā)者盡力去挖掘語言的高級特性,來將語言的能力發(fā)揮到極致,但這些程序員仍然受制于這門語言實際的限度。

    作者指出語言的選擇對開發(fā)效率是一個重要因素,選擇正確的語言所帶來的開發(fā)效率的提升是巨大和值得這么去做的。作者以對XML的處理為例闡述了此觀點。通用語言,例如Java在處理XML方面沒有專門設(shè)計上的支持,這使得開發(fā)人員在使用通用語言處理XML方面忍受這種不匹配,來進(jìn)行拙笨的開發(fā),造成非優(yōu)的解決方案。在這種情況下,為了提高效率,他們通常采用一些代碼生成技術(shù),把XML構(gòu)造塊影射為靜態(tài)編程語言的構(gòu)造塊(通常是類)來盡量緩解這種阻抗,即便如此,這種方式仍然是十分脆弱的。因為把高度靈活的XML構(gòu)造塊轉(zhuǎn)化為嚴(yán)格的靜態(tài)的數(shù)據(jù)類型很容易造成彼此版本的不匹配。XML文檔的任何改變都需要新的代碼生成、重新構(gòu)建、....這使得通過代碼生成獲得的一點點好處又被不斷維護(hù)帶來的成本所抵消。相比之下,Python、Perl、Erlang等語言都提供了XML處理模塊,甚至還帶版本化功能。更好的像ECMAscript for XML (E4X)和Scala,提供了對XML字面量的支持支持,開發(fā)人員可以直接在語言語法中寫XML。消除了阻抗,帶來了更簡化的代碼和更清晰的功能。

    作者指出,選擇適當(dāng)?shù)恼Z言所帶來的效率的提升還體現(xiàn)在對代碼的維護(hù)上。作者援引Fred Brooks在《人月神話》中引用的的研究發(fā)現(xiàn)說,所需開發(fā)和維護(hù)的工作量與指令的數(shù)目(可以理解為代碼行)是指數(shù)關(guān)系,而且這與所采用的語言無關(guān)。假設(shè)這個指數(shù)值是1.5的話,那么如果代碼行是原來的3倍的話,那么就需要5倍的開發(fā)和維護(hù)成本,如果代碼行變?yōu)樵瓉淼?倍,就需要11倍的開發(fā)和維護(hù)成本,如果代碼行變?yōu)樵瓉淼?0倍,那么就需要32倍的開發(fā)和維護(hù)成本。選擇正確的語言,不僅可以減少代碼行,更快的提供解決方案和對需要的響應(yīng),這個過程可以變?yōu)榉e極的循環(huán),更少的代碼帶來更好的缺陷和更容易的增強(維護(hù)),這又使得用戶更高興,提供免費的廣告宣傳和反饋,進(jìn)一步促進(jìn)軟件的發(fā)展。

    作者指出,多語言編程的一個問題就是如何使它們協(xié)同工作。這可以分為兩類。如果是用于分布式應(yīng)用集成(即不同的應(yīng)用用不同的語言),那么網(wǎng)絡(luò)本身就通過協(xié)議提供了一個中立的方案,可以通過網(wǎng)絡(luò)消息等。如果不是分布式應(yīng)用,當(dāng)前的主流開發(fā)語言,比如微軟的CLT(公共語言運行時)所支持的語言越來越多,命令式的、動態(tài)的、函數(shù)式的,或腳本的。類似的,JVM也從一個單語言平臺演化為一個可以支持許多語言的平臺,包括JRuby、Scala、Groovy、JavaScript、E4X、Jython和其它的。而且,在JVM上,這些語言都容易學(xué),因為都是基于字節(jié)碼,這些語言可以與Java進(jìn)行互調(diào)。因此,JVM提供了一個非常好的方式來為應(yīng)用的不同部分選擇最適合的語言。

    作者還指出目前阻礙多語言編程的因素主要有兩個:一個管理因素;另一個開發(fā)者認(rèn)為學(xué)習(xí)新語言難度很大。對于第一個因素,管理者通常認(rèn)為只采用一種語言易于管理,因為大家都用同樣的語言,可以容易的替換開發(fā)人員,而且某個開發(fā)人員寫的代碼,大家也都能看懂,避免陷入只有少數(shù)人才能看懂和維護(hù)的局面。作者認(rèn)為這種管理者對軟件開發(fā)和維護(hù)所涉及的成本沒有充分考慮。在一個JVM或CLR基礎(chǔ)之上,選擇合適的語言可以減少代碼規(guī)模和開發(fā)維護(hù)的工作量,從而降低系統(tǒng)的總成本,而且,較小的系統(tǒng)需要更少的開發(fā)者,這又是一個巨大的成本減少。對于第二個因素,相比通用語言來說,那個特定的語言,像Lisp、Python等都很簡練,核心概念并不多,初學(xué)者可以很快發(fā)現(xiàn)它們更具有生產(chǎn)力,而且,以往語言的經(jīng)驗可以幫助你學(xué)習(xí)新語言。如果你掌握的語言越多,你就能更容易的學(xué)習(xí)一門新語言,也能發(fā)現(xiàn)解決問題的最好方式。

    最后,作者以“畢竟,難道我們真的認(rèn)為我們已經(jīng)學(xué)到我們所需要的最后一門(終極)語言了碼?”結(jié)尾。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    歡迎您對自己所在的開發(fā)組織對于多語言編程、融合的實踐和經(jīng)驗發(fā)表看法,謝謝!

    posted on 2009-12-16 12:51 軟件工程實踐者 閱讀(1876) 評論(1)  編輯  收藏 所屬分類: 軟件工程

    評論

    # re: 多語言編程 2009-12-16 12:52 人生是由回憶組成的

    正應(yīng)了老鼠媽對孩子所說的,學(xué)習(xí)一門語言是多么重要啊。  回復(fù)  更多評論   

    主站蜘蛛池模板: 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产免费无遮挡精品视频| 黄页免费在线观看| 国产精品无码亚洲精品2021| 亚洲视屏在线观看| 国产亚洲综合久久系列| 免费国产成人高清在线观看麻豆| 91在线视频免费播放| 桃子视频在线观看高清免费视频| xxxxx做受大片在线观看免费| 亚洲av日韩专区在线观看| 亚洲人成电影网站| 亚洲黄色片在线观看| 日本红怡院亚洲红怡院最新| 亚洲区日韩区无码区| 四虎永久免费地址在线观看| 永久免费bbbbbb视频| 免费在线观看的网站| 国产国产人免费视频成69堂| 久久久精品免费视频| 九九99热免费最新版| 一本到卡二卡三卡免费高| 综合偷自拍亚洲乱中文字幕| 亚洲丶国产丶欧美一区二区三区 | 99久久久国产精品免费牛牛四川 | 亚洲国产成人一区二区三区| 国产成人精品日本亚洲专区61| 亚洲国产精品13p| www.亚洲精品| 亚洲精品第一国产综合精品99| 免费a在线观看播放| 国产在线播放免费| 免费人成视频在线观看视频| 免费夜色污私人影院在线观看| 免费吃奶摸下激烈视频| 亚洲 小说区 图片区 都市| 亚洲伊人久久综合影院| 国产偷国产偷亚洲高清日韩| 亚洲精品成人网站在线观看| 亚洲狠狠久久综合一区77777| 日韩亚洲Av人人夜夜澡人人爽|