一切都是表达

我注意到许多语言如Ruby和CofeeScript(以及转换编译器)都支持所有表达式。

现在它使语言有点简单易懂,而且表面上肯定看起来很整洁,但我想看一些关于这两种方法的正面和负面的学术出版物。

如果这些出版物有明确的例子比较一切都是表达的好处,那么将是有益的。

CoffeeScript与Javascript中的示例会很好,但不是必需的。

这个概念绝对很酷,但我仍然不确定整个想法究竟是多么具有革命性(显然革命性的东西在某种程度上是一种观点)。

谢谢!

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

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

一些现代语言采用了函数式编程概念(例如C#, Python ,Ruby)。

一些关于function实践益处的学术见解:

  • 编程可以从冯诺依曼风格中解放出来吗? function风格及其程序代数 – 约翰巴克斯

有趣的文章:

  • 为什么function编程在混合环境中很重要
  • C#是否成为一种function语言?

至于关于性能问题的评论,与范式选择相关的可能开销可能微不足道。 即使在C语言中,大多数语句都作为表达式进行评估 – 但是,编译语言(C)和解释语言(CoffeeScript)之间的比较相当无用。

从理论上讲, 命令式语言以更多面向机器的方式表示控制流程,这可以允许比function语言更容易的手动优化。

语言表现及其重要性在很大程度上取决于用例。 关于JavaScript及其上的任何代码转换,这种性能讨论完全无关紧要。 生产力的提高超过任何轻微的性能影响。

通过“一切都是表达”,我假设你的意思是http://jashkenas.github.com/coffee-script/

听起来你有什么想法是函数式语言。 例如,考虑一下Lisp,它在50年代就做过这种事情。 这最终来自Lambda微积分,其中代码和数据实际上是相同的,并且您可以传递代码,就好像它是数据一样(因为它是)。

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