天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

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

我痛恨所有的編程語(yǔ)言 —— Matt Foemmel

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

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

  選擇語(yǔ)言

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

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

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

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

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

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

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

整天使用 IntelliJ

使用 JUnit 運(yùn)行所有測(cè)試

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

服務(wù)器上運(yùn)行 JVM

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

  Clojure 能夠滿足我的所有條件,其他同事接受起來(lái)也會(huì)更容易。

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

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

  Hello World

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

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

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

hello world

( Credit: Windell Oskay)

  你的使命

it知識(shí)庫(kù)引入新編程語(yǔ)言的經(jīng)驗(yàn)教訓(xùn),轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 日本亚洲精品色婷婷在线影院 | 成人网视频在线观看免费 | 久青草国产97香蕉在线视频 | 国产伦精品一区二区三区精品 | 人人爽久久久噜噜噜丁香AV | 色欲久久99精品久久久久久AV | 夜色私人影院永久入口 | 97人妻丰满熟妇AV无码 | 久久影院一区 | 国产精品野外AV久久久 | 好硬好湿好大再深一点动态图 | 蜜桃精品成人影片 | 三级黄色在线视频中文 | 国产毛片女人高潮叫声 | 69久久国产露脸精品国产 | 精品一区二区三区四区五区六区 | 超清无码波多野吉衣与黑人 | 欧美视频毛片在线播放 | 快播电影官方网站 | 18禁在线无遮挡羞羞漫画 | 波多野结衣网站www 波多野结衣教师系列6 | 国产福利不卡在线视频 | 娇妻在床上迎合男人 | 40岁东北老阿姨无码 | 免费视频精品38 | 国内视频在线精品一区 | 亚洲一区二区三不卡高清 | 日本无码人妻丰满熟妇5G影院 | 亚洲精品喷白浆在线观看 | 欧美成人精品高清在线观看 | 蜜柚影院在线观看免费高清中文 | 久久精品午夜一区二区福利 | 最近2019中文字幕免费版视频 | 厨房玩朋友娇妻中文字幕 | 国产高清美女一级a毛片久久w | 久久人妻无码毛片A片麻豆 久久人妻熟女中文字幕AV蜜芽 | 中文成人在线 | 国产三区在线成人AV | 母乳女神春日もな | 丰满大屁俄罗斯肥女 | 国产精品久久久久久亚洲影视 |