当前位置:  开发笔记 > 编程语言 > 正文

在提到编程语言时,"表达"意味着什么?

如何解决《在提到编程语言时,"表达"意味着什么?》经验,为你挑选了4个好方法。

我在"javascript是一种非常富有表现力的语言"这样的句子中经常听到这个词.它只是意味着没有很多规则,或者"表达"是否具有更具体的含义?



1> slim..:

"表达"意味着编写易于理解的代码很容易,无论是编译器还是人类读者.

表达性的两个因素:

直观易读的结构

缺乏样板代码

将这种富有表现力的Groovy与具有较少表达力的Java eqivalent进行比较:

3.times {
   println 'Hip hip hooray'
}

VS

for(int i=0; i<3; i++) {
    System.out.println("Hip hip hooray");
}

有时你会为表达性交换精确度 - Groovy示例有效,因为它假设Java让你明确指定的东西.


@AndresF.从技术上讲,Groovy假设您正在编写标准输出,而Java则强制您明确说明这一点.我认为这是Groovy完全100%的好假设,但就是这样.但我认为OP的观点是错误的,因为我最初有你的反应.经过进一步的反思,我认为关键不在于代码背后的核心功能不太精确,而且*如何*不太精确.在Groovy中,我们不知道如何在幕后执行循环.而循环不是Java背后的幕后花絮.因此,表现力.
你的两个例子中的"精确度"是什么意思?Groovy假设哪些Java使您具体化?(注意:在Java中使用`int`循环变量是Java的工件;它基本上没有意义,并且不再比Groovy的`3.times`更"精确",所以不是这样)

2> Jon Skeet..:

我认为它意味着它能够以易于阅读和简洁的方式表达想法/算法/任务.

通常我将表达的语言与语法糖相关联,尽管情况并非总是如此.C#表达的例子是:

foreach (而不是显式编写迭代)

using声明(而不是明确地写在try /终于)

查询表达式(编写LINQ查询的简单语法)

扩展方法(允许链接方法调用,同样主要用于LINQ)

匿名方法和lambda表达式(允许更容易的委托和表达式树构造)

另一个例子是泛型:在C#获得泛型之前,你无法ArrayList在代码中表达" 只包含字符串" 的想法.(当然,您可以记录它,或者编写您自己的StringList类型,但这并不完全相同.)



3> TofuBeer..:

Neal Grafter有一个博客,关于这个主题有一个很好的引用...

在我看来,语言结构是富有表现力的,如果它能让你编写(和使用)一个没有构造就无法编写(和使用)的API.

我想这意味着你可以更自然地在代码中表达自己的想法.



4> unwind..:

这是一个艰难的过程。

对我而言,这与您表达意图的难易程度有关。这在不同的语言中有所不同,并且在很大程度上取决于您要执行的操作,因此这是泛化的领域。当然,它也是主观的和个人的。

容易想到,高级语言总是更具表现力,但我认为这不是事实。这取决于您要表达的内容,即问题域。

例如,如果要打印具有二进制模式的浮点数0xdeadbeef,则在C中比在Bash中更容易实现。但是,与C相比,Bash是一种超高级语言。另一方面,如果您要运行程序并将其输出收集到文本文件中,则是如此简单,它在Bash中几乎是不可见的,但在C中至少需要一页代码(假定为POSIX环境)。

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有