一切都是表达

时间:2011-09-07 00:05:50

标签: javascript ruby expression

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

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

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

CoffeeScript vs Javascript中的示例很不错,但不是必需的。

这个概念绝对很酷,但我仍然不确定整个想法究竟是多么具有革命性(显然革命性的东西有点意见)。

谢谢!

2 个答案:

答案 0 :(得分:4)

这本身并没有什么革命性的。 expression-oriented方法是functional programming方法。

面向表达式的代码比面向语句的代码更简单,更简洁,因为assignments更少且没有明确的return语句。表达式和命令之间缺乏区别可以实现概念统一(参见Referential transparency)和bottom-up结构。

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

  

对功能实践的好处的一些学术见解:

           

有趣的文章:

     

关于性能问题的评论,与范式选择相关的可能开销可能微不足道。即使在C语言中,大多数语句evaluate as an expression - 然而,编译语言(C)和解释语言(CoffeeScript)之间的比较相当无用。

从理论上讲,imperative language代表了更多面向机器方式的控制流程,这可能比手动语言更容易进行手工优化。

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

答案 1 :(得分:0)

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

所描述的内容

有点像你所问的是功能语言。例如,考虑一下Lisp,它在50年代就做过这种事情。这最终来自Lambda微积分,其中代码和数据实际上是相同的,你可以传递代码,就好像它是数据一样(因为它是)。

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