“良好”的编程语言

总是有同学争论哪种编程语言强势,C,C++抑或Java。

今天刚看《Java语言精粹》这本书,对“精粹“做了一个很好的解释,我摘录下来和大家一起分享。

 

“良好”的编程语言

 

“良好”一个承载了诸多价值的词汇。因此,当我们说一门编程语言(或者它的一部分)“良好”的时候,我们最好想想自己究竟想表达什么?

 

什么能使一门编程语言“良好”?它的良好又归功于语言中的哪些部分?这样的问题常会引发夹杂着火药味的争论。而这样的争论——它们总是在争论,永远不会单纯的探讨——有一种“无止无休”的天性,与诸如“最好的编辑器是什么”、“最恰当的代码格式化方式是什么”,或者“最合适的开源许可是哪种”这样的争论如出一辙。

 

关于这种争论,最声名卓著(抑或最臭名昭著)的开端是Richard Gabriel的一篇随笔“论‘更劣即更优’的崛起”(The Rise of Worse is Better”)。在这篇文章中,Gabriel做了很有说服力的论证:Lisp过去曾经是(现在依然是)比C语言更好的语言,但是由于各种与语言“优良”完全无关的原因,C语言还是赢了。事实上,根据文中的观点,正是因为C语言和UNIX比其他的竞争者(LispMultix)更糟糕,才使得C语言能在程序设计领域成为主导。

 

这种争论的最主要的问题在于它错误的认为“更糟糕”和“更良好”这样的谓词都可以描述直接依附于实体的属性。说的在简单点,这类争论的都假设你可以在真空中,或者以某种绝对的方式来评判一种语言的优劣。

 

对于这些概念来说,这样理解是不对的,尤其不能将这样的理解运用于编程语言上,因为它们只是达成其他目的的途径。人们不应该去争辩x语言由于y语言,更不应该做这样的断定,因为要说“优于”,我们需要第三个条件。当你谈论一种编程语言比另一种编程语言更好之前,我们需要知道你正在用它做什么。同样,如果你想讨论一种编程语言比另一种编程语言更糟糕,你也必须说说正在用它做什么。某种语言做某事可能是更良好或更糟糕的,而用于不同的事情孰优孰劣呢?完全可能得到不同的答案。

 

这很重要,要理解为什么重要,让我们再回到Gabriel关于“更劣即更优”的论点。Gabriel告诉大家:Lisp更简单,是因为他它给予程序员更大的灵活度,被一套更优良的编程工具环绕着,而且更适于代码的快速开发。但是他没有支出的是:在当时C语言可以用在更低廉的硬件上,用C语言编写的代码运行起来比用Lisp编写的代码更快(在廉价的硬件上)。C语言赢得了语言较量这一事实并不能说明人们高估了更差的东西,轻视了更好的东西,只能说明作出决定的人们更多的评估了C语言所擅长的领域,而较少的评估了Lisp所擅长的领域。

 

Gabriel在其主张中假定:使一门编程语言“良好”的因素是程序员个体使用这种语言时的生产率。即使我们相信他的所有主张,所能做出的推断也不过是Lisp对某位程序员个体来说是更好的编程语言。但语言在这方面的特性必须与其运行环境的成本综合考虑,对于后者,C语言做得更好。事实并不是C语言更差,而是它在处理某些问题上更差,而在处理其他问题上更好。C语言之所以能赢得这场语言战争的胜利,原因在于:对于做决定的人们来说,在低廉硬件上运行更快要比提高单个程序员的生产效率更重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值