关于工具的吐槽

从 GNU 项目建立到现在已经很多很多年了,技术早已更新了不知多少代。编程理论,编程语言,编程实践都被业界洗淘了无数遍,理论上来说,很多工具应该早已成熟了并接近最佳实践了。

但令我不解的是,一些非常基础的东西,比如 vim,emacs 以及 terminal。这些东西开发人员来说天天要使用,如同吃饭喝水一样基础。但是在这几十年的技术沉淀和过滤之后,这些工具仍然存在很多明显的 bug。emacs 就不用提了,你很难找到一个完全没 bug 的版本,无论你花多大精力去调配置,总有一些东西莫名其妙的和预期不一致。直到 2017 年,emacs 直接进行跨版本升级仍然是有风险的。除此之外,windows 下并没有一个好用的 terminal,无论是 xshell,mobaXterm,还是 putty,总是存在各式各样的小毛病,其中有些是 bug,还有一些是设计不合理之处。如果说 emacs 是因为太个性化导致插件质量良莠不齐,造成了这么多 bug 的话,那么这些 terminal 不好用就难以解释了。实现一个 terminal 并没有任何复杂之处,这样一个日常使用频率最高的工具都没能在多年的迭代下做扎实么?难道这些年来,windows 下的开发者也在忍着种种不便,视而不见吗? 可能有些人会说,之所以我觉得不好用只是因为我不会用而已。然而折腾工具真的非常浪费时间,我曾花了无数时间调试 emacs,几乎每次换系统环境时都免不了拿出整天整天的时间去解决 emacs 出现的各种各样的奇怪问题。现在转到 windows 平台上,我也花了很多天去调 terminal 环境。最后调试的结果仍是差强人意。我当然了解像 emacs,vim 甚至是 Xshell,如果配置好了,能达到很好用的程度。可是这些工具你拿到手里之后的初始状态是非常不好用的,如同一个半成品一般,为了让它们变成合格的工具,你不得不花很多时间去钻研和学习,如果你要解决的问题非常复杂,排期也十分紧迫,又哪有这么多时间花在工具上呢?目前我运行在 Linux 服务器上的 emacs server 两天崩溃一次,运行在 win10 上的 Xshell 差不多也是这个频率。这些工具的可靠性,仍然存在很大问题。 我对好工具的看法是:能让使用者专心用工具去解决问题,而不是专心于工具本身。因此好的工具最好是拿来就用的,不用花时间折腾调试。好的工具会帮使用者屏蔽掉很多不重要的细节,清除掉多余的功能和装饰,好的工具不会制造麻烦让使用者费神,好的工具只是使用者意志的延伸,对使用者来说接近透明。 从这个角度看,徕卡似乎并不是什么好的工具,因为它的用户会在意工具本身,甚至很多人就是奔着这个工具去的,很有本末倒置之嫌。徕卡的小红标和机身分散了用户原本应该用于拍摄的注意力。那么徕卡的定位是什么呢?奢侈品。奢侈品和工具的区别在于:奢侈品的价值体现在”拥有”而非”使用”。拥有一台徕卡,即使不拍照,也已经能让不少人感到满足了。因此我认为用奢侈品干活是一种非常不切实际的行为。 以 emacs 为例,这么多年了,仍然是单线程模式,如果需要开一个 python 运行环境跑一些稍大的任务,则整个 emacs 都会卡住,这段时间你只有等着,无论 CPU 有多少空闲的核心也无济于事。另外,开一个稍微大一些的文本 buffer,整个 emacs 都会卡顿不已,每次跳转都会有数秒钟延迟。除此之外,诸如 company,anaconda,helm,以及某些语法检测插件,几乎都无法 100%正常工作,虽然每次更新时都会看到它们几个在升级,可每次升完级还是无法排除 bug。