Programming languages 如何衡量;“可理解性”;一种语言?

Programming languages 如何衡量;“可理解性”;一种语言?,programming-languages,computer-science,language-design,human-readable,Programming Languages,Computer Science,Language Design,Human Readable,我经常读到一些编程语言比其他语言更清晰,我多次问自己,是否有一种客观的方法来衡量语言的清晰程度,以便在给定抽象语法的情况下,设计出尽可能清晰和人性化的具体语法。也许存在某种设计模式用于此目的 简言之:如何实现语法的最大清晰度?知道如何量化语言的“清晰性”或“表达性”吗 尝试衡量这些方面是否有意义 谢谢。我想没有。清晰度是主观的,设计模式并不是衡量语言清晰度的好方法(事实上,设计模式通常是为了规避语言的限制而诞生的) 有些人喜欢语义丰富简洁的语言(如perl),并不介意使用符号,而另一些人则喜欢使

我经常读到一些编程语言比其他语言更清晰,我多次问自己,是否有一种客观的方法来衡量语言的清晰程度,以便在给定抽象语法的情况下,设计出尽可能清晰和人性化的具体语法。也许存在某种设计模式用于此目的

简言之:如何实现语法的最大清晰度?知道如何量化语言的“清晰性”或“表达性”吗

尝试衡量这些方面是否有意义


谢谢。

我想没有。清晰度是主观的,设计模式并不是衡量语言清晰度的好方法(事实上,设计模式通常是为了规避语言的限制而诞生的)


有些人喜欢语义丰富简洁的语言(如perl),并不介意使用符号,而另一些人则喜欢使用类似于自然语言的语法,比如你似乎在与计算机对话(如Hypercard)而且并不介意冗长或含糊不清。

像这样的问题通常会导致迂腐的回答

语言就像工具

它们是为满足某些目的而建造的。逻辑编程语言以比面向对象程序更优雅的方式解决某些问题。类似地,许多主流解决方案都可以通过典型的面向对象或过程语言轻松完成

工具使用者的气质和其他因素,在这种情况下,程序员也很重要。有些人已经用Perl实现了漂亮的解决方案,但对我来说,它总是像黑魔法一样。我更喜欢Python的结构简单性。对一些人来说,它对空白的使用是令人憎恶的

如果能够对一种语言的清晰度和表达能力进行评估,那么这充其量只是一种非常主观的评估

然而,一个明确的迹象是该语言中大量的代码生成。一些像brainfuck这样的语言还没有被采用,而Python、Ruby等已经流行起来。尽管如此,这些和许多因素只能作为一个指标。一些语言,尽管结构良好,可能找不到太多的使用者


网络效应也会影响语言的使用。

我已经听过很多次这句话不经意地抛给不同的语言,不同的人会根据不同的标准选择不同的语言

在年,Ruby的设计师松本幸弘(Yukhiro Matsumoto)就用Ruby编写Hello World程序比用Java编写程序要简单得多进行了论证。虽然我不认为这个例子是为了扩展,但作者的观点是,你必须添加到代码中的粗糙程度反映了理解用这种语言编写的程序的困难。也就是说,你得到的注意力越少,程序就越“可读”

现在,根据我的经验,优秀的程序员用他们编程用的所有语言编写清晰的代码,尽管用他们更熟悉的语言编写的代码更清晰。作者的才华以及他在该语言方面的丰富经验最终使语言本身的清晰度或表达力相形见绌


另一个要考虑的问题是可用库的数量和API的质量。如果您必须编写更少的“支持代码”来完成工作,那么很可能生成的程序更清晰,因为它看起来更直截了当。

我发现LOLCODE是所有语言中最容易理解的语言:

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE

您可能对“自然编程”有一些研究感兴趣:

他们试图设计出符合人类期望的语言,而不是试图让人们遵从最简单的计算机。他们是以实验为基础的。例如,研究有多少人在你指导他们“带回的东西不是苹果或梨”时,从一盒水果中带回了一个梨。(我没有跟上他们的成果,但听起来像是一个有希望的项目。)

尽管如此,“清晰性”和“表达性”仍然是难以衡量的东西。当然,也有一些研究对语言之间的相互关系进行了定量测量,比如。一些人从该游戏中提供的解决方案中获取数据,并绘制出“代码大小与性能”等趋势图:

您可能能够根据代码大小的趋势,对通用语言提出一些不可靠的基于度量的命题,以有效地执行给定任务。但接下来,你会对什么是“清晰性”和“表达性”进行相当主观的定义。(我倾向于相信更短的程序可以更快地完成同样的工作,这通常更清晰,但有很多反例。)

所以我想说,如果没有一个明确的目标受众,你可以对测试对象进行可用性研究,那么在对语言进行概括方面,你不会比这些指标做得更好


(注意:我喜欢而且我认为它具有令人难以置信的清晰和表达能力……但只有当你以某种方式使用它时,包括在你进行时发展DSL方言,这不是很多人在编程时的思维方式。然而!)

衡量语言的可理解性不如衡量程序员的可理解性重要。

你也可以看看R.W.Sebesta最新出版的《编程语言的概念》一书。本书中有一章(我不太记得第1章或第2章)讨论评估编程语言的标准

完美是达到的,不是当没有更多的东西可以添加时,而是当没有什么东西可以带走时。Antoine de Saint ExupéryCobol对人类友好;它是用英语写的,就像语法一样!但不幸的是,它对程序员不友好。得出你喜欢的任何结论;)您可能会检查cstheory SE:如何衡量编程语言的简洁性。这一点很好,但可能存在某种“L”