一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

引入新編程語言的經(jīng)驗教訓(xùn)

  英文原文:Lessons Learned while Introducing a New Programming Language

  引言:這些年我(在工作中)使用過很多編程語言:(馬上能夠想到的有)Cold Fusion、HTML、Javascript、php、 SQL、 CSS,、ASP(經(jīng)典 ASPASP.NET)、C#、Ruby、Flex、Java 以及 Clojure。每個語言都有自身的優(yōu)缺點。作為一名程序員,你可以很容易地指出這些缺點——概括起來就是一句話:

我痛恨所有的編程語言 —— Matt Foemmel

  我認(rèn)為一開始就考慮到這個問題很重要。在某些時候,你會對現(xiàn)在提倡的東西開始厭惡,所以請想象一下別人對它的感受。

  在 2008 年,我在 DRW 的一個代碼庫中引入 Clojure 語言。這篇博客討論了過去幾年中,我在引入新語言的過程中得到的經(jīng)驗和教訓(xùn)。

  選擇語言

  在組織里引入一門新的語言并非易事。如果你想要成功,你需要選擇一門編程語言,它不但能夠滿足廣泛的技術(shù)要求同時還要得到大家的認(rèn)可。在加入 DRW 的時候,我 100% 用 Java 編程,盡管事實上我編寫的大部分代碼只需要在眨眼之間運行完成(250毫秒)。我們編寫代碼要求運行時間比眨眼還要短,Java 是絕對正確的選擇,但使用 Java 編寫其他代碼讓我感覺 Java 成為了一種負(fù)擔(dān)。

  偶爾我會抱怨這種負(fù)擔(dān),我的老板開始對 JRuby 發(fā)生了興趣。我認(rèn)為選擇 JRuby 對我們已經(jīng)是一個勝利,但就我個人而言更想聽到支持非 Java 語言的呼聲。如果考慮 JRuby,那么我認(rèn)為任何高級的動態(tài)類型語言都可以勝任。

  然而,在我對 JRuby 生成好奇心之前,我已經(jīng)開始學(xué)習(xí) Haskell 了。總的說來,在貿(mào)易公司使用的軟件要求運行“快速”。如果我要成功地引入一門新語言,它必須運行得“幾乎和 Java 一樣快”。Haskell 執(zhí)行速度很快我已有所耳聞,它同時也滿足了我的另一個選擇條件:

一門編程語言,如果不能對你思考編程的方式產(chǎn)生影響,就不值得去學(xué)習(xí)。——  Alan Perlis

  我認(rèn)為,如果我發(fā)現(xiàn)一門編程語言“性能足夠好”,發(fā)布程序速度更快,并且能夠提高我們的編程水平,那么在它上面花時間就是值得的。

  我玩過一點 Haskell,但是學(xué)習(xí)曲線似乎太陡峭。學(xué)習(xí) Haskell 需要一些時間,但更重要的是:我們的產(chǎn)品已經(jīng)運行在 JVM 上。如果我需要得到任何幫助,應(yīng)該能夠輕易地融入現(xiàn)有的基礎(chǔ)設(shè)施。想想 Clojure,它的性能足夠好,比 Java 更簡潔,并且比我之前用過的其他語言更加有效。 Clojure 同時也是動態(tài)類型的高級語言(像 Ruby 一樣),所以我希望能夠得到老板的支持。

  讓同事們盡可能地減少學(xué)習(xí)的痛苦是一個很大的要求——我認(rèn)為這是接受新語言的關(guān)鍵。Clojure 看上去是最佳的選擇,因為我們現(xiàn)在已經(jīng)在工作中已經(jīng)使用下列工具:

整天使用 IntelliJ

使用 JUnit 運行所有測試

使用 TeamCity 創(chuàng)建 CI 和 artifact

服務(wù)器上運行 JVM

使用 Yourkit 進(jìn)行動態(tài)分析

  Clojure 能夠滿足我的所有條件,其他同事接受起來也會更容易。

  作為學(xué)習(xí),我更推薦 Haskell 或者 OCaml,但他們并不適合在實際中選用——我懷疑是否能夠成功地將他們應(yīng)用到開發(fā)中。當(dāng)我需要在 Clojure 方面給與專業(yè)指導(dǎo)時,我會依賴其他人認(rèn)可的“最佳”JVM 服務(wù)器設(shè)置。如果一旦選擇了 Haskell 或者 OCaml,我將需要在更多方面成為專家(例如部署、內(nèi)存模型、函數(shù)庫、新開發(fā)工具等等)。

  不論是當(dāng)時還是現(xiàn)在,我都認(rèn)為 Clojure 是在技術(shù)要求和公司環(huán)境下的最佳選擇。

  Hello World

  引入一門新的語言是一個微妙的行為。你需要兼顧很多的相關(guān)內(nèi)容。我不確定同事們會對使用 Clojure 作何反應(yīng),所以我在家里預(yù)先寫好了代碼。雖然大家都需要集成測試,然而沒有人積極行動。于是我開始用 Java 編寫集成測試,然后寫出了 Clojure 的版本。我非常了解 Clojure 并能夠向其他人展示它的簡潔——這是團隊在集成測試中最看重的東西。除此之外,因為測試并不是實際產(chǎn)品運行的代碼,因而并不真正需要考慮實際執(zhí)行速度。

  集成測試是一個引入新語言的好地方,其實任何非產(chǎn)品代碼都是好的選擇。例如,你也可以選擇數(shù)據(jù)庫遷移腳本、日志文件解析器、第三方軟件模擬器或者軟件部署。只要你的選擇不會馬上帶來痛苦,你應(yīng)該能夠很容易地從任何遷移到新語言的失敗中恢復(fù)過來。

  當(dāng)我完成了 Java 和 Clojure 版本的測試以后,我給開發(fā)組里的其他人展示了這兩個版本。我告訴他們?yōu)槭裁次彝扑] Clojure 版本,并詢問他們能不能用 Clojure 做一次嘗試。我也做出承諾,讓他們很難拒絕做這樣的實驗。

hello world

( Credit: Windell Oskay)

  你的使命

it知識庫引入新編程語言的經(jīng)驗教訓(xùn),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美高清狂热视频60一70 | 小视频在线观看免费 | 国产女人伦码一区二区三区不卡 | 国产视频成人 | 国产精品嫩草影院免费看 | 国产黄色片在线看 | 久久成人永久免费播放 | 四虎精品免费永久在线 | 国产高清视频免费最新在线 | 9re视频这里只有精品 | 91伊人影院 | 2020国产精品自拍 | 四虎最新入口 | 国产区精品福利在线观看精品 | 亚洲精品中文字幕乱码三区一二 | 五月婷婷激情在线 | 亚洲视频入口 | 国产一级特黄a大片99 | 免费国产小视频在线观看 | 一本大道香蕉久97在线视频 | 日产精品一区二区免费 | 在线观看一区二区三区视频 | 一区二区三区四区在线免费观看 | 午夜精品一区二区三区在线观看 | 精品国产乱码久久久久久浪潮 | 337p欧美超大胆日本人术艺术 | 日韩毛片免费视频一级特黄 | 色版视频在线观看 | 一级一级特黄女人精品毛片视频 | 欧美成人一级视频 | 黄色avav| 五月开心久久 | 精品999久久久久久中文字幕 | 五月婷婷综合激情网 | 91网址在线观看 | 4399一级成人毛片 | 爱爱一区 | 火辣福利视频 | 99久久精品国内 | 亚洲欧美在线视频观看 | 精品国产91久久久久久久 |