如何确定编程语言是冗长还是简洁?


17

编程语言通常可以描述为冗长简洁

根据我的理解,冗长的语言易于阅读和理解,而简洁的语言简洁明了,但更难于阅读。定义中是否应该考虑其他事项?

当今许多流行的编程语言似乎是冗长的,并且这两个术语仅用于描述一种语言,相对于另一种语言而言,该语言或多或少。

我们如何确定一种编程语言是否比另一种更为冗长/简洁?

示例:C#比Java更冗长吗?

Answers:


30

根据我的理解,冗长的语言易于阅读和理解,而简洁的语言简洁明了,但更难于阅读。

这是错误的。详细表示许多符号。简洁意味着更少的符号。

这与易于阅读或理解无关

有些人觉得冗长的COBOL易于阅读,而另一些人则感到困惑,因为只需很少的符号就需要很多符号。

有些人觉得简短的I / J / K和APL易于阅读,因为该程序很短。其他人则因为符号晦涩难懂而难以阅读。

Terse / Verbose与易于阅读或理解无关。

定义中是否应该考虑其他事项?

否。terse和verbose的定义很好。

重要的是这些定义与“易于阅读和理解”无关

当今许多流行的编程语言似乎都很冗长。

真?

我们如何确定一种编程语言是否比另一种更为冗长/简洁?

计算令牌以完成任务。

Add 2 TO A GIVING B.

7代币

b = a + 2;

6个代币

http://dictionary.reference.com/browse/verbose

http://dictionary.reference.com/browse/terse


5
+1表示“ Terse / Verbose与易于阅读或易于理解没有关系”。我总是想到数学符号,如果正确地做的话,它会非常密集但仍相对可读。
2011年

5
@sunpech:这就是英语单词的意思。“冗长”意味着很多单词。“简洁”意味着更少的单词。与可读性无关。只是字数统计。我所做的就是用“令牌”替换“单词”。只是英文,没什么特别的。
S.Lott

1
我们可能还会考虑令牌的长度。Common Lisp看起来比较罗word,因为许多关键字都很长,这也增加了COBOL的冗长性。
David Thornley

1
@弗兰克·希勒(Frank Shearar):绝对不正确,请考虑一下学生学习数学所需的时间。它是尽可能难以理解的(严肃的数学),即使经过6年的中学教育,大多数人仍然无法认真阅读它。并不是说不可读是一件坏事!但是至少可以说,说数学是一种易于理解的符号。
David Mulder 2012年

2
@DavidMulder:数学符号变化很大,所以我怀疑我们都犯了夸张的罪过。您肯定认为代数,集合论和基本演算的表示法是透明的吗?另一方面,我认为张量的抽象符号是不可读的废话。(但是后来,我也没有花时间正确地学习这种表示法。)
Frank Shearar 2012年

6

我们如何确定一种编程语言是否比另一种更为冗长/简洁?

通过比较等效或相似的语言构造,尤其是如何用一种语言对比另一种语言来解决相同或等效任务。

C#比Java更冗长吗?

Java通常比C#更冗长。最明显的区别包括委托和lambda表达式,其中Java需要定义,子类化和实例化不同的接口,以实现使用C#中的单个lambda表达式可能完成的工作。


1
爪哇现在支持与Java 8 lambda表达式docs.oracle.com/javase/tutorial/java/javaOO/...
shanraisshan

1
@shanraisshan:是的,随着时间的推移它会变得更好,但是AFAIK Java仍然有些冗长。例如,在链接到的文档中,代码包含很多p.getAge()语句。在C#中,我将创建一个property Age,该属性带来与成员函数相同的封装度getAge,但是可以p.Age代替编写。
布朗

1
同样,尽管Java得到了改进,但C#也不是完全静态的目标……新功能,因为诸如生成器函数和异步/等待之类的答案也使C#代码比Java等效代码短。
Jules

3

给非程序员一个代码段,并要求他/她解释该代码段试图做什么。如果您得到最接近的答案,则它很冗长。如果您得到WTF表达式,那就很简洁。


2

该措施称为表现力语言的性。为此的典型指标是测量实现相同功能所需的标准代码行或语句。

Wiki中的一些值-在以下方式中实现一条语句/行的一种功能需要多少条C代码语句/行:

  • C-语句:1行:1
  • C ++-语句:2.5行:1
  • Fortran-语句:2.5行:0.8
  • Java-语句:2.5行:1.5
  • Perl-语句:6行:6
  • Smalltalk-语句:6行:6.25
  • Python-语句:6行:6.5

我认为以下事实之一表明FORTRAN在某种程度上比C更具表达能力(!),而另一种说法则相反,它指出C ++对C的等同表达(!!)总结了此类“度量标准”的有用性”。
Jules
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.