一切都是一种表达



我注意到很多语言,比如Ruby和CofeeScript(一个编译器)都支持一切都是表达式。

现在它使语言在某种程度上易于理解,并且表面上看起来确实很整洁,但是我正在寻找一些关于这两种方法的优缺点的学术出版物。

如果出版物中有明确的例子来比较所有东西都是表达式的好处与不是表达式的好处,那将是有益的。

CoffeeScript vs Javascript的例子会很好,但不是必需的。

这个概念确实很酷,但我仍然有点不确定整个想法到底有多具有革命性(很明显,革命性的东西多少是一种观点)。

谢谢!

这本身并没有什么革命性的。面向表达式的方法是一种函数式编程技术。

面向表达式的代码比面向语句的代码更简单,更整洁,因为赋值更少,没有显式的return语句。表达式和命令之间没有区别,可以实现概念上的一致性(参见引用透明性)和自下而上的结构。

一些现代语言已经采用了函数式编程的概念(如c#、Python、Ruby)。

关于函数式实践的好处的一些学术见解:

  • 编程能从冯·诺伊曼风格中解放出来吗?函数式风格及其代数程序——John Backus

有趣的文章:

  • 为什么函数式编程在混合环境中很重要
  • c#正在成为函数式语言吗?

至于关于性能问题的评论,与范式选择相关的可能开销可能可以忽略不计。即使在C语言中,大多数语句也作为表达式求值——然而,在编译语言(C)和解释语言(CoffeeScript)之间进行比较是相当无用的。

从理论上讲,命令式语言更多地以面向机器的方式表示控制流,这可能比函数式语言更容易进行手工优化。

语言性能及其重要性在很大程度上取决于用例。关于JavaScript和基于它的任何代码转换,这个性能讨论是完全不相关的。生产率的提高超过了任何轻微的性能损失。

所说的"everything is an expression ",我假定您指的是http://jashkenas.github.com/coffee-script/

中所描述的内容。

听起来你问的是函数式语言。举个例子,Lisp,它在50年代做过类似的事情。这最终来自Lambda演算,其中代码和数据实际上是相同的东西,您可以将代码当作数据传递(因为它确实是)。

我不知道有什么学术文章专门讨论这个问题,但现在你至少有了更多的关键词来搜索。

相关内容

最新更新