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

引入新編程語言的經驗教訓

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

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

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

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

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

  選擇語言

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

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

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

一門編程語言,如果不能對你思考編程的方式產生影響,就不值得去學習。——  Alan Perlis

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

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

  讓同事們盡可能地減少學習的痛苦是一個很大的要求——我認為這是接受新語言的關鍵。Clojure 看上去是最佳的選擇,因為我們現在已經在工作中已經使用下列工具:

整天使用 IntelliJ

使用 JUnit 運行所有測試

使用 TeamCity 創建 CI 和 artifact

服務器上運行 JVM

使用 Yourkit 進行動態分析

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

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

  不論是當時還是現在,我都認為 Clojure 是在技術要求和公司環境下的最佳選擇。

  Hello World

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

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

  當我完成了 Java 和 Clojure 版本的測試以后,我給開發組里的其他人展示了這兩個版本。我告訴他們為什么我推薦 Clojure 版本,并詢問他們能不能用 Clojure 做一次嘗試。我也做出承諾,讓他們很難拒絕做這樣的實驗。

hello world

( Credit: Windell Oskay)

  你的使命

it知識庫引入新編程語言的經驗教訓,轉載需保留來源!

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

主站蜘蛛池模板: 一级做a爰久久毛片武则天 一级做a爰毛片 | 亚洲成在人网站天堂一区二区 | 99热国产精品 | 婷婷狠狠干 | 久久精品久 | 国产精品伦子一区二区三区 | 欧美地区一二三区 | 亚洲激情欧美 | 狠狠久久综合 | 国产精品视频无圣光一区 | 亚洲天码中文字幕第一页 | 色狠狠狠狠综合影视 | 久久综合免费视频 | 色网站免费 | 91po国产在线高清福利 | www.久久精品视频 | 国产精品美女久久久久网 | 成人免费看视频 | 国产精品福利资源在线 | 黄色小视频在线观看 | 国产成人综合一区人人 | 亚洲国产激情一区二区三区 | 香蕉97超级碰碰碰免费公 | 国产婷婷一区二区三区 | 国产高清在线精品一区二区三区 | 久久精品乱子伦观看 | 久久亚洲精品中文字幕亚瑟 | 一级韩国aa毛片免费观看 | 国产一二三区在线观看 | 国产一区二 | 9久久免费国产精品特黄 | 久久国内精品自在自线400部o | 国产第一页在线播放 | 天天操天天干天天插 | 中文字幕午夜乱理片 | 国产高清在线精品一区二区三区 | 国产原创精品 | 国产一区二区视频免费 | 亚洲成a人| 日韩精品欧美亚洲高清有无 | 婷婷丁香四月 |