落入成功之谷

103 阅读3分钟

前言:此篇为译文,原文为Jeff Atwood(Stackoverflow的创始人)与2007年的一篇旧文,近期看的nextjs框架教程里引用了此文,读完很喜欢就将其翻译为中文,翻完才知道他的部分博文早已被翻译集结成册叫《高效能程序员的修炼》在中国出版,我特意淘了一本二手翻看了一下,并无收录此篇,故按原计划发出。


Eric Lippert(c#语言标准委员会成员之一)在用c++编程的风险中说:

我时常觉得c++就是我的“绝望之谷”,无内存管理的c++太容易掉入各种陷阱,缓冲溢出,内存泄漏、重复释放、分配器错配,使用释放过的内存等,有无数的办法把堆栈搞崩,而这些仅仅是内存相关的问题,还有更多的问题陷阱等着你踩。c++常常把你扔进绝望之谷,而你只能靠自己去爬回软件质量的大山。

那是c++本身的问题,它放大了你的弱点,没能把你保护好。当你写c++代码时,就像环行在绝望之谷的边缘,一步走错就彻底完蛋。

falling-into-pit.jpeg

假如有一种编程语言能防止你跌入绝望之谷,是不是很好?可避免事故的机制对于编程语言来说,并不是什么值得称赞的事,因它本该如此。假如除此之外,你用的编程语言还能让你毫不费力的落入成功之谷,这样岂不是更好?

成功之谷:和山峰相反,也和那种经历艰难险阻获取成功的历程不同,我们想要我们的客户通过使用我们的平台和框架,能随随便便的走上成功的模式。有多随便呢,比我们随便就会碰到困难的那种随便还要随便。

Rico Mariani(原微软架构师)在谈论编程语言设计的时候创造了这个词。当你选择c#,python,ruby来替代c++时,可能会牺牲一些性能,但回报是避开了可怕的绝望之谷,并且更有机会落入成功之谷。

Brad Abrams(微软.net框架的设计者之一)指出,这个理念不仅是在编程语言范畴,一个优秀的API设计也应该让开发者能落向成功之谷。

[Rico]告诫我们去思考如何构建一个平台能让开发者能写出更好的代码,仿佛随随便便就能把事给做对了。这个观念引发了我的共鸣,这是优秀API设计的核心点,我们设计的API应该引导开发者走向正确的方位。

我认为这个理念涵盖的范围更广,适用于任何类型的应用程序:大的,小的,web,命令行等等等。我时常说一个设计优秀的系统总是能轻松引导对的方式,抵触错的方式。如果应用设计的合理,我们的用户就会势不可挡的落向成功之谷,一些人可能会多花些时间,但最终还是能到达成功谷底。

如果用户无法自己把事做成,或者无法在合理的时间内做成,那不是他们的错。是我们没有让他们能轻松的落入成功之谷。


相关引用

  1. 原文链接:blog.codinghorror.com/falling-int…
  2. 绝望之谷,原典故为绝望之井,由美国心理学家为研究临床抑郁症而设计的装置,通过将猴子将其放入其内隔离1年,使其产生抑郁症,然后再对其进行治疗实验,相关链接:zh.wikipedia.org/zh-cn/%E7%B…