Edward Kmett 于 Haskell 之評價

Haskell使我今仍為程序員狭魂。

十年前罚攀,我身為計算機科學(xué)家之信仰党觅,遭逢些許危機。環(huán)顧四望斋泄,方覺杯瞻,很大程度抖坪,我 甫煞,以數(shù)年前使用至今之相同工具之不同變種摔癣,解決相同問題碘赖。

某些程度上备徐,我遭遇瓶頸祥诽,或許不似專家級初心者(Erik Dietrick 所稱)般低級枫吧,然而最終察覺宴倍,即使我積極努力構(gòu)建一個由我可以從頭到尾編譯的正確代碼組成的大型代碼庫痹束,也只是發(fā)覺自己眼睜睜看著沙堡以遠(yuǎn)快于建造的速度崩塌检疫,甚至更糟,作為開發(fā)者我并無任何進步祷嘶。目之所及屎媳,并無銀彈。

面向?qū)ο缶幊讨荚谔峁┐a重用论巍。但借鑒 POSIWID (the Purpose Of a System Is What It Does)觀點來看烛谊,其旨在逼迫開發(fā)者放棄對改進生產(chǎn)力并平衡代碼重用與特定問題的精確的抽象層的企盼。

在此啟發(fā)下嘉汰,我決心返回并獲取學(xué)位晒来。沿這條路,于完成數(shù)學(xué)碩士學(xué)位后流離于語言學(xué)與生物信息之際郑现,我偶遇了 Haskell湃崩。

彼時,玩耍般寫著自己的編程語言已十五載之久接箫,其皆似 Perl攒读、Python、C++ 之子(因所知僅至此)辛友,摻雜些許不變性薄扁。發(fā)現(xiàn) Haskell 時,我察覺到废累,這門語言非但完成了所有我想嘗試去做的事情邓梅,甚至,它做得更好邑滨。

Haskell 社區(qū)總有比我更好的答案日缨。

此刻,我必須抉擇:或原路折返掖看,鴕鳥般埋頭于沙般裝作從未遇見Haskell匣距;或皈依 Haskell面哥,接納隱藏其后的思想。

此番信仰轉(zhuǎn)變余波綿延數(shù)月毅待。但尚卫,我從未回首。

其后尸红,我學(xué)習(xí)了范疇論吱涉,潛心研究函數(shù)式編程與類型理論。進階到可工作于 Coq 與 Agda 中后外里,我以自己獨特編程風(fēng)格下最具生產(chǎn)力的功重比返回 Haskell 層面休憩邑飒。

回到正軌后,我投身于做任何可以幫助 Haskell 社區(qū)繁榮興旺的事级乐,且終于我可以開始著手實現(xiàn)建立一個我可從頭到尾構(gòu)建的軟件庫的目標(biāo)疙咸。客觀上风科,我相信此時我比任何人維護的 Haskell 代碼都要多撒轮,僅僅靠寫 Haskell 代碼,我就登頂了 Github 最活躍用戶前五名贼穆。嗚呼题山,我隨波而溯,回到了青少年故痊,相較于單純地寫代碼顶瞳,更多地專注于社區(qū)的發(fā)展

為何是 Haskell愕秫?

在嚴(yán)格求值語言中慨菱,最初推算算法的時間空間占用比較簡單,但如此膚淺的簡單必有代償戴甩。嚴(yán)格求值算法的組合常耗費時間計算你并不需要的東西符喝。

考慮這個經(jīng)典例子:take 10 . sort

在嚴(yán)格求值語言中這將會排序整個序列,而我僅需查看其中前十個甜孤,但在非嚴(yán)格求值語言中协饲,比如 Haskell 帶有默認(rèn)惰性求值的數(shù)據(jù)結(jié)構(gòu),僅僅會排序出前十個元素缴川。若你的排序算法是”惰性快速排序“或是在 Haskell 實踐中使用的樹排序茉稠,你的算法會被提升至“快速選擇”,有更好的漸近線性能把夸。

你不必足夠聰明勤奮去融會貫通所有算法細(xì)節(jié)就可以獲得漸近線性能優(yōu)勢而线。嚴(yán)格求值語言會使你停頓注意性能并離題去修復(fù)性能問題終為速度犧牲代碼重用同時為代碼重用犧牲速度。我不愿為此般進退兩難之角所懸吊。

今吞获,大多情形使你可能已在嚴(yán)格求值設(shè)置下通過特定惰性值或副作用寫出惰性算法况凉,但實踐中人們不會這樣做谚鄙,因直白明確的惰性大規(guī)模使用太有害各拷。他們嘗試,他們挫敗闷营,之后他們停止烤黍。最好結(jié)果,你得到似生成器或流之類寫成的一些代碼傻盟。

其他 Haskell 優(yōu)勢不僅止于使惰性算法更好結(jié)合速蕊,而且純代碼允許平凡的并行或擴展。其使對單線程解決方案進行并行改進更簡單娘赴,鑒于其他語言中我懼于忘記妥善處理事件發(fā)生序(happens-before)語法或忽略限制之類规哲。

最后使我無法離開 Haskell 的因素是社區(qū)。(irc.freenode.net) 的haskell頻道有1200余用戶诽表,且其為我在因特網(wǎng)中所見最一貫和藹聰明的一群人唉锌。

Edward Kmett 著于 2013年四月廿一日
轉(zhuǎn)載自Quara

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市竿奏,隨后出現(xiàn)的幾起案子袄简,更是在濱河造成了極大的恐慌,老刑警劉巖泛啸,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绿语,死亡現(xiàn)場離奇詭異,居然都是意外死亡候址,警方通過查閱死者的電腦和手機吕粹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岗仑,“玉大人昂芜,你說我怎么就攤上這事∨馄眩” “怎么了泌神?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長舞虱。 經(jīng)常有香客問我欢际,道長,這世上最難降的妖魔是什么矾兜? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任损趋,我火速辦了婚禮,結(jié)果婚禮上椅寺,老公的妹妹穿的比我還像新娘浑槽。我一直安慰自己蒋失,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布桐玻。 她就那樣靜靜地躺著篙挽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镊靴。 梳的紋絲不亂的頭發(fā)上铣卡,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音偏竟,去河邊找鬼煮落。 笑死,一個胖子當(dāng)著我的面吹牛踊谋,可吹牛的內(nèi)容都是我干的蝉仇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼殖蚕,長吁一口氣:“原來是場噩夢啊……” “哼轿衔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嫌褪,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呀枢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笼痛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裙秋,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年缨伊,在試婚紗的時候發(fā)現(xiàn)自己被綠了摘刑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡刻坊,死狀恐怖枷恕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谭胚,我是刑警寧澤徐块,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站灾而,受9級特大地震影響胡控,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旁趟,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一昼激、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦橙困、人聲如沸瞧掺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辟狈。三九已至,卻和暖如春像捶,著一層夾襖步出監(jiān)牢的瞬間上陕,已是汗流浹背桩砰。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工拓春, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亚隅。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓硼莽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煮纵。 傳聞我的和親對象是個殘疾皇子懂鸵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift的編程范式 編程范式是程序語言背后的思想。代表了程序語言的設(shè)計者認(rèn)為程序應(yīng)該如何被構(gòu)建和執(zhí)行行疏。常見的編程...
    Bobby0322閱讀 2,600評論 4 43
  • 原文鏈接:https://github.com/EasyKotlin 值就是函數(shù)匆光,函數(shù)就是值。所有函數(shù)都消費函數(shù)酿联,...
    JackChen1024閱讀 5,978評論 1 17
  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多终息。不是我不學(xué)習(xí),這世界變化快贞让! 有時候還是蠻懷念十幾周崭、二...
    碼園老農(nóng)閱讀 5,323評論 2 35
  • 接下來你看到的,恐怕不能被稱作書評喳张,只能說续镇,是看這本書的心路歷程吧。我也確實還沒有參悟太多销部,恐怕理解還有所偏...
    月如初fpy閱讀 810評論 0 0
  • 我自認(rèn)是個玻璃心的敏感分子摸航,所以,特別喜歡和羨慕這樣的朋友:不管別人怎么說舅桩,贊揚也好酱虎,批評也罷,即使遇到嘲諷甚至羞...
    元初閱讀 454評論 0 0