11
16
2015
23

[译] Vim 的蔓延

译自 Vim Creep。原文为英文,有很棒的朗读版。


开始的时候,一切都很平常。在初入大学的那一年,你试过它一两次,但是 Nano 和 Pico 更加简单——更像你高中时候在 Windows 和 Mac 机器上已经用过的东西。但随着时间的推移,你在大学的计算机科学课程上经历渐渐丰富,你开始注意到一件事:所有真正厉害的程序员——你花了十页代码的作业,他们随便写了四行就解决了;你艰苦奋斗了几个星期才勉强完成的课程项目,他们竟然在一天之内就超额完成了——他们都不用 Nano 或者 Pico。

一天夜里,为了完成一项午夜就要交付的作业,你正熬夜赶工。偶然间越过一位安静的超级程序员的肩膀,你瞟到了他的屏幕。你的眼睛在已经昏暗的计算机实验室里一排排的显示器中闪烁着,满怀敬畏地见证着代码和文字以不可能的方式闪过屏幕。

你疑惑地问:「你是怎么做到的?」

一个简洁的词从他口中吐出,永远地改变了你的生活:「Vim。」

一开始你很沮丧,更不谈工作成效了。你的浏览器历史里满是 Vim 在线文档的记录;你那些使用 Nano 和 Pico 的朋友认为你疯了;用 Emacs 的朋友央求你改变心意;为了查阅方便,你甚至花钱买了一份 Vim 速查表的纸板。经过了数星期的刻苦训练,你还是习惯性地去拿鼠标,然后又停下,意识到你得去网上学习一下完成一些常见的任务的正确方法。你以前可从来没有想过这个。

随着时间的流逝,你挣扎的次数越来越少了。你不太明白发生了什么,但是 Vim 不再阻碍你了。它的好超过了你的预期。它不再仅仅是一个使用键盘快捷键的文本编辑器——它成为了你身体的一部分。不,它成为了作为一名程序员的你的一部分本能。

只用 Vim 来编辑源码似乎大材小用了。你在你家里的所有机器上都安装了 Vim。你用它来输入一切文字,从电子邮件到学术论文。为了能够随身携带,你往U盘里安装了一个移动版的 Vim,并配有精心调整的个性化的 .vimrc 文件。这样,它陪伴着你,使你心安,让你不论在哪里都有一点家的感觉。

Vim 进入了你网上生活的每一部分。不满足于功能贫乏的 ViewSourceWith,你很快学会了 Vimperator,然后又换成 Pentadactyl。你以前只是在互联网上冲浪,而现在,你就是互联网。当你要写一个 iPhone 应用程序的时候,你做的第一件事情是把 XCode 的默认编辑器换成 MacVim。当你的工作是写 .NET 代码,你立即购买了一份 ViEmu for Visual Studio,因为你对免费的替代品——VsVim——的功能并不满意。

一天夜里,你正在你的工位上埋头苦干,完成一个第二天上午就要到期的项目。你对你自己笑了。普通程序员可绝不能在期限之前完成这样的工作。你录制各种宏;你轻轻地敲动手指,移动着整块整块的代码;你用上了一大堆寄存器;你重写着重构着整个组件,却根本不瞅一眼鼠标。你注意到显示器上映出的影像。一位同事正在你身后睁大了眼睛看着。你微微停顿了一下,让他知道你注意到了他的存在。

「你是怎么做到的?」他问道,语气里充满了敬畏。

你微笑了一下,准备说出那个改变了你的一生的词。那个词,如果你的同事也选择追随的话,他会掉进同样的兔子洞,进入一个充满无限可能的无限组合的世界,那些组合产生出他之前只能在最疯狂的梦中见到的极致高效。他让你记起多年以前那个昏暗的计算机实验室里的自己。带着些许兴奋,你轻轻地说出那个词。

「Vim。」

:wq


翻译比阅读难多了喵 0.0

Category: Vim | Tags: vim 文学 译作
1
3
2012
60

为什么业界很少使用 Haskell?

这是 Stackoverflow 中一篇答案的粗略翻译,原文地址 http://stackoverflow.com/a/2302230/296473已失效

  1. 没有人听说过它。没有人会使用他们根本不知道的东西。

  2. 不够流行。人们认为最流行的语言就是最好的语言,因为如果它不好的话,它就不会流行。实际上这根本不成立。最流行的语言最流行,仅此而已。Haskell 不流行是因为它不流行。这就是 Haskell 里经常用到的「递归」。不管来自命令式编程世界的人们怎么说,递归在现实世界中非常常见。

  3. 它不一样。人们总是害怕新事物。

  4. 它很难。人们认为 Haskell 难学难用。这显然和第三点有关。Haskell 里充斥着一些高深晦涩的术语,如「单子就是自函子范畴中的独异点,有什么问题吗?」(译注:这句话真难译 :-( )。普通人可理解不了这个。

  5. 有风险。大多数公司不想第一个吃螃蟹。Haskell 的用户太少了,所以很少有用户愿意尝试它。(看吧,又是递归。)

  6. 招不到程序员。首先,按第二点,会 Haskell 的人很少。然后,大多数人相信第四点,所以找不到愿意学习的程序员。使用一门招不到程序员的编程语言风险太大了。(好吧,我们回到第五点了。)

  7. 库。这可能是最重要的一点,所以我多说一些。

    A. 质量。有很多库,可是质量参差不齐。大多数 Haskell 库(Hackage)是个人的业余项目,文档欠缺。有些不完整,有些已经不再能用,有些在特定情况下会出错。

    B. 多个不兼容的库。能够使用 Haskell 连接到数据库。但问题是,存在一堆这样的库,让人很难分辨出哪些是被支持的库,哪些在几年前就已经烂掉了。而且,在 Haskell 中连接数据库也不像开个 ODBC 连接那样简单。针对每种数据库,每个库都用不同的后端。在数据库支持的广泛性上 Haskell 做得不错,连新出现的 Mongo 或者 Cassandra 数据库都支持。开源可能没有给予 Haskell 以深度,但给予了其以广度。

    C. Windows。几乎所有重要的库(比如加密、二进制数据文件格式、网络协议、数据压缩、连接数据库等)是 C 语言库的包装。它们在 Windows 上编译不了。因为 Windows 是市场上最大的目标平台,这是个大问题

  8. 效率无法预测。由于对 Haskell 缺乏了解,很多人甚至都不知道这一点。很多人直接就认为「Haskell 效率低下」。这不对。事实是,很难预测一个 Haskell 程序的效率。微妙的、没有明显关联的不同有时可能导致效率的巨大差异。(译注:蝴蝶效应啊?)

  9. 正确性。大多数公司对正确性并不重视。它们不在意质量。它们只要尽可能迅速地把代码扔出去赚大把大把的钞票就好了。如果代码有 bug 的话,它们就向客户卖补丁。把代码写对没用;重要的是快速把代码写出来。Haskell 会用优美的解来回馈那些坐下来深入分析问题的人。大多数公司不喜欢这样;他们只要尽可能快地把产品搞出来,以后再修正它,如果还有以后的话。

的确有少数地方正确性很重要。这些地方基本上要么是级别甚高的安全系统,要么是金融系统。(译注:交集不为空?)就我所知,Haskell 在这些领域还是比较流行的。

最后说两点:

  • 我还记得不是太久前人们还叫嚷着「C++ 是给菜鸟的玩具!你应该用像 C 这样真正的编程语言。」现在再看看有多少大型 C++ 程序?

  • 人们总是在说 Lisp 是「下一个里程碑性语言」。他们说了多久?已经 40 年了?Lisp 比几乎所有主流编程语言都要老。现在看看有多少大型 Lisp 程序?

我不知道 Haskell 的命运终将如何。我觉得,Haskell 好的思想会被像 C# 或者 F#、OCaml 这样的杂交语言偷取。人们依旧不会使用 Haskell。它太不一样了。

不管怎么说,关于为什么业界不用 Haskell,见以上观点。它太罕见、太不流行、太奇特,库也不完善。大约就是这样。


后记:

也许,照耀大地的永远是在众恒星中普普通通的太阳,人们永远不会知道在宇宙的某个角落里曾经诞生过一颗绝美无比的小星星。这个世界是不完美的,否则如果它是完善的,缺少了不完美,它还完美吗?这个世界是不公平的,流星划过苍穹,带给多少人希望,而它自己却身殒,不留下一点痕迹。

Category: Haskell | Tags: Haskell 译作

Mastodon | Theme: Aeros 2.0 by TheBuckmaker.com