我的用来鉴别所谓编程语言专家的方法

本文的思想是在与默罕默德谈话中受到的启发得来。[译注:此默罕默德非彼默罕默德。]

0785f3d

在思索“孰是神”的过程中,希腊人发现,与其回答“孰是神”,回答“孰非神”更容易。由此发明了反证法或逆推法。我常用此法来辨别专家真伪。

例如:

“专家”这个词常言过其实。人们时常高估某人在某领域的水平,对于这种认知偏差,心理学界有大量的研究著作。怎样才能知道一个人是不是专家,比方说编程专家?反证法是也。你无法证明某个人是专家,但某种程度上,你可以判断此人不是专家。

我最常问的一个问题是:”对于这个编程语言,它有没有让你讨厌或不爽的地方?” 根据回答判断如下:

  1. 真正的专家不会被这类问题难倒,更不会感到惊讶。他/她很可能对此类问题深思熟虑过。
  2. 专家们通常自有主张。但是我们要看的,并不是有没有主张,而是看此人是否固执己见。什么意思?意思是此人的主张是否有理有据,或者是否有数据支持。此人是否承认自己的主张是有前提条件的,是否接受新思路或新数据且改变先前的主张。
  3. 编程语言固有缺点,但这并不代表这门语言不好。

两个实例:

C++

  1. 认为C++的异常处理不好——谷歌代码规范明令禁止使用异常。
  2. 认为C++引用语法有问题——我个人不爽的是,无法通过函数本身来判断传递参数是不是引用类型。显式引用好过隐式引用。

Python.

  1. Python的封装机制有问题——这需要另辟专文探讨。
  2. Python太慢——这也需要另辟专文探讨。

很明显,我们需要给这第二个回答加上问号,给这个“专家”加上引号。

分享这篇文章:
[英文原文:My favorite question to the programming language expert ]

本文的译者:Ryan Chen

Ryan Chen(英文名)。目前在美国圣地亚哥,高通高级工程师。他的微博是@奋斗中的胖胖。你还可以通过邮箱ryanmailing@gmail.com和他进行交流。

One Response to 我的用来鉴别所谓编程语言专家的方法

  1. Yonghang Jiang says:

    C++异常先不提,反正谷歌那份代码风格已经路人皆知……不过我偶尔还是用用。
    “无法通过函数本身来判断传递参数是不是引用类型。”这是什么意思?参数类型如果是引用的话不是有个&吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注