中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

敢為你最寵愛的編程語言賭100000000美元嗎?

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

  我的命題是這樣的:我需要開發(fā)一個(gè)應(yīng)用程序,如果你能按時(shí)交付,那么我會(huì)支付給你一億美元。并且此程序不涉及一些不可能解決的問題,當(dāng)然各種困難和亂七八糟的問題那是一定的。

  至于你想用什么編程語言來寫,毫無限制,這一點(diǎn)我完全沒有要求。關(guān)鍵是你得完成這個(gè)程序,并且使之能順利工作。

  任何一個(gè)大項(xiàng)目在開發(fā)過程中,需求說明總是會(huì)有所變化。我可以保證不會(huì)胡亂提一些會(huì)混淆你工作方向的要求。例如,你能添加一個(gè)擁有Photoshop所有功能的圖像編輯器,甚至是增強(qiáng)版的嗎?你能實(shí)現(xiàn)韓語和波蘭語之間的自動(dòng)轉(zhuǎn)換嗎?如果網(wǎng)絡(luò)尚在加載中,界面上能不能出來一頭可以操縱著到處轉(zhuǎn)悠的3D立體模糊狀的羊駝?這些要求我統(tǒng)統(tǒng)不會(huì)提。但是我可以預(yù)見以下這些情況的發(fā)生:

  • 需要處理的數(shù)據(jù)比你預(yù)期的大5倍。
  • 因?yàn)檫需要在一些基于ARM的自定義硬件上運(yùn)行,所以必須得是可移植的。
  • 由于英特爾發(fā)布了20核心芯片,所以代碼需要擴(kuò)展到相應(yīng)級(jí)別的處理能力水平。

  以及還可以……接電話。

  但是遺憾的是,我發(fā)現(xiàn)谷歌不想買我的博客了,所以我只能銷掉這個(gè)一億美元的報(bào)價(jià)。唉……真心無奈。

  但是,假設(shè)這個(gè)報(bào)價(jià)是真的呢?你敢就此任務(wù)為你喜歡的編程語言賭上一億美元嗎?這將如何影響你對(duì)編程語言的判斷標(biāo)準(zhǔn)呢?下面是我的觀點(diǎn):

 類庫的重要性遠(yuǎn)遠(yuǎn)超過核心編程語言的功能特征。

  盡管Cayenne有許多相關(guān)的類型(很酷),但是它有創(chuàng)建Flash文件的功能和本地化外觀的交互界面嗎?D語言有富文本的轉(zhuǎn)化類庫嗎?如何通過fpt從Mercury中獲取文件?你真的想自己純手工編寫一個(gè)SVG解碼器嗎?

 成熟和可靠的工具,甚至比類庫更重要。

  有沒有人曾用Dolphin Smalltalk,或Chicken Scheme,或Wallaby Haskell等等試圖解決過某個(gè)類似的問題?有沒有人曾用某種編程語言試著解決此規(guī)模下的所有問題?你是否知道編譯器碰到大型程序其速度不會(huì)成倍降低?分析器又能否處理這些大型程序?你知道怎么追查一個(gè)小小的變化是如何影響函數(shù)編寫,從而導(dǎo)致內(nèi)存出現(xiàn)離奇峰值的嗎?有沒有核心開發(fā)人員使用Windows版本工具,或者這工具被認(rèn)為是二流平臺(tái)?某個(gè)大型項(xiàng)目中的本地編譯能否會(huì)嚴(yán)重影響大部分代碼而導(dǎo)致全局性速度減慢(例如,90年代中期將Erlang轉(zhuǎn)換為C語言就會(huì)發(fā)生這種情況)?

 你的決定比你自己想象的更為依賴語言實(shí)施者。

  一些基礎(chǔ)類教科書上面的問題和實(shí)例教程,我們運(yùn)行的時(shí)候總是特別美好。但是漸漸地,你會(huì)發(fā)現(xiàn)自己非常依賴于編譯器,或者在系統(tǒng)運(yùn)行時(shí),會(huì)產(chǎn)生一些奇怪的情況,雖然這對(duì)于該編程語言創(chuàng)建的問題域毫無關(guān)系,但是會(huì)大大影響你下一個(gè)行為目標(biāo)。

  假設(shè)你有一個(gè)程序,可以操作一個(gè)大型的浮點(diǎn)值集合——浮點(diǎn)數(shù)量高達(dá)數(shù)以百計(jì)的兆字節(jié)。然而有一天,你的對(duì)象羊駝程序OCaml內(nèi)存溢出,死掉了。當(dāng)然你是很聰明的,知道大多數(shù)時(shí)間應(yīng)該封裝好程序中的浮點(diǎn)數(shù)量,等到需要的時(shí)候再取出來用。但是浮點(diǎn)數(shù)組卻大多是不封裝的,所以你用在了大型數(shù)據(jù)結(jié)構(gòu)中。但是這樣做內(nèi)存依然不足。問題就在于“float”在羊駝程序中意味著“double”。C語言允許我們快速地從64位double類型切換為32位float類型,立馬能節(jié)省成百上千兆空間。但是不幸的是,羊駝程序OCaml的實(shí)施者從未考慮過這件事,所以你不得不自己去使用編譯器來做這個(gè)切換。ps,在這里我不是說在指責(zé)OCaml,此浮點(diǎn)類型問題在很多編程語言中都有。

  與此類似,但同樣難以解決的事情還有很多,例如,如果你發(fā)現(xiàn)在某一個(gè)數(shù)據(jù)集合中,垃圾收集器跨越了從“只有關(guān)注的時(shí)候才可見”到“幾秒鐘就能產(chǎn)生bug報(bào)告”的界限。話說,垃圾收集器已經(jīng)經(jīng)過了我們的精心優(yōu)化,并且衍生多代,但是到現(xiàn)在最老的一代依然需要等待清理,等待它檢查過上G字節(jié)的復(fù)雜結(jié)構(gòu)并且做好備份之后,而與此同時(shí),你就只能眼巴巴地等著。你能解決這個(gè)問題嗎?當(dāng)然紙上談兵的那種就不要丟人現(xiàn)眼了。

  這種有形的物質(zhì)獎(jiǎng)勵(lì)法,然而,實(shí)實(shí)在在地影響了我的行為方式。因?yàn)橛羞@么個(gè)一億美元的胡蘿卜掛在我的面前,我非常愿意獨(dú)自去研究各種涉及實(shí)際的問題。純粹的學(xué)術(shù)研究項(xiàng)目,其實(shí)是非常可笑的。我會(huì)用C語言寫好應(yīng)用程序的關(guān)鍵部分,這樣一來,最后結(jié)果就又能回到我的掌控中,也就不至于之后突然發(fā)現(xiàn)語言系統(tǒng)設(shè)計(jì)者有關(guān)于標(biāo)注、排列和垃圾收集器的選擇有悖于我的最終目標(biāo)。 Python和Erlang在大型的商業(yè)項(xiàng)目中廣受歡迎,雖然它們也有各自不同的長(zhǎng)處和短處,但是如果我需要支持一些非UNIX的嵌入式硬件,那么恐怕這兩者都不足以勝任。

  看到這里你有何感想呢?話說如果,假設(shè),真的有這么多錢——一億美元——讓你改變完成任務(wù)的方法,轉(zhuǎn)而用一種可靠又快速的標(biāo)準(zhǔn)方式,何樂而不為呢?

  英文原文:Would You Bet $100,000,000 on Your Pet Programming Language? 翻譯:codeceo

標(biāo)簽: 代碼 谷歌 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:如何向新手程序員介紹編程?

下一篇:Java解世界最難九宮格問題