Edward Kmett 于 Haskell 之评价

Haskell使我今仍为程序员。

十年前,我身为计算机科学家之信仰,遭逢些许危机。环顾四望,方觉,很大程度,我 ,以数年前使用至今之相同工具之不同变种,解决相同问题。

某些程度上,我遭遇瓶颈,或许不似专家级初心者(Erik Dietrick 所称)般低级,然而最终察觉,即使我积极努力构建一个由我可以从头到尾编译的正确代码组成的大型代码库,也只是发觉自己眼睁睁看着沙堡以远快于建造的速度崩塌,甚至更糟,作为开发者我并无任何进步。目之所及,并无银弹。

面向对象编程旨在提供代码重用。但借鉴 POSIWID (the Purpose Of a System Is What It Does)观点来看,其旨在逼迫开发者放弃对改进生产力并平衡代码重用与特定问题的精确的抽象层的企盼。

在此启发下,我决心返回并获取学位。沿这条路,于完成数学硕士学位后流离于语言学与生物信息之际,我偶遇了 Haskell。

彼时,玩耍般写着自己的编程语言已十五载之久,其皆似 Perl、Python、C++ 之子(因所知仅至此),掺杂些许不变性。发现 Haskell 时,我察觉到,这门语言非但完成了所有我想尝试去做的事情,甚至,它做得更好。

Haskell 社区总有比我更好的答案。

此刻,我必须抉择:或原路折返,鸵鸟般埋头于沙般装作从未遇见Haskell;或皈依 Haskell,接纳隐藏其后的思想。

此番信仰转变余波绵延数月。但,我从未回首。

其后,我学习了范畴论,潜心研究函数式编程与类型理论。进阶到可工作于 Coq 与 Agda 中后,我以自己独特编程风格下最具生产力的功重比返回 Haskell 层面休憩。

回到正轨后,我投身于做任何可以帮助 Haskell 社区繁荣兴旺的事,且终于我可以开始着手实现建立一个我可从头到尾构建的软件库的目标。客观上,我相信此时我比任何人维护的 Haskell 代码都要多,仅仅靠写 Haskell 代码,我就登顶了 Github 最活跃用户前五名。呜呼,我随波而溯,回到了青少年,相较于单纯地写代码,更多地专注于社区的发展

为何是 Haskell?

在严格求值语言中,最初推算算法的时间空间占用比较简单,但如此肤浅的简单必有代偿。严格求值算法的组合常耗费时间计算你并不需要的东西。

考虑这个经典例子:take 10 . sort

在严格求值语言中这将会排序整个序列,而我仅需查看其中前十个,但在非严格求值语言中,比如 Haskell 带有默认惰性求值的数据结构,仅仅会排序出前十个元素。若你的排序算法是”惰性快速排序“或是在 Haskell 实践中使用的树排序,你的算法会被提升至“快速选择”,有更好的渐近线性能。

你不必足够聪明勤奋去融会贯通所有算法细节就可以获得渐近线性能优势。严格求值语言会使你停顿注意性能并离题去修复性能问题终为速度牺牲代码重用同时为代码重用牺牲速度。我不愿为此般进退两难之角所悬吊。

今,大多情形使你可能已在严格求值设置下通过特定惰性值或副作用写出惰性算法,但实践中人们不会这样做,因直白明确的惰性大规模使用太有害。他们尝试,他们挫败,之后他们停止。最好结果,你得到似生成器或流之类写成的一些代码。

其他 Haskell 优势不仅止于使惰性算法更好结合,而且纯代码允许平凡的并行或扩展。其使对单线程解决方案进行并行改进更简单,鉴于其他语言中我惧于忘记妥善处理事件发生序(happens-before)语法或忽略限制之类。

最后使我无法离开 Haskell 的因素是社区。(irc.freenode.net) 的haskell频道有1200余用户,且其为我在因特网中所见最一贯和蔼聪明的一群人

Edward Kmett 著于 2013年四月廿一日
转载自Quara

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容

  • Swift的编程范式 编程范式是程序语言背后的思想。代表了程序语言的设计者认为程序应该如何被构建和执行。常见的编程...
    Bobby0322阅读 2,540评论 4 43
  • 原文链接:https://github.com/EasyKotlin 值就是函数,函数就是值。所有函数都消费函数,...
    JackChen1024阅读 5,848评论 1 17
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,186评论 2 35
  • 接下来你看到的,恐怕不能被称作书评,只能说,是看这本书的心路历程吧。我也确实还没有参悟太多,恐怕理解还有所偏...
    月如初fpy阅读 748评论 0 0
  • 我自认是个玻璃心的敏感分子,所以,特别喜欢和羡慕这样的朋友:不管别人怎么说,赞扬也好,批评也罢,即使遇到嘲讽甚至羞...
    元初阅读 426评论 0 0