区别是:函数式语言和命令式语言(含面向对象)编译过程中最大的不同是做完parsing和type checking之后,函数式语言一般会被翻译成一个类似lambda演算的简单语言,然后再转换成低级指令;而命令式语言直接被转换成低级指令。
函数式编程的底层架构和命令式编程的最底层肯定都是汇编。
函数式语言和命令式语言(含面向对象)编译过程中最大的不同是做完parsing和type checking之后,函数式语言一般会被翻译成一个类似lambda演算的简单语言,然后再转换成低级指令;而命令式语言直接被转换成低级指令。
比如说2010年之后Haskell会被编译成一个叫Core的语言,再加一些annotation变成STG语言,然后做些优化转换成Cmm,最后输出C/汇编/LLVM。
Scala中间会把代码输出成一个带类型的lambda演算,然后擦类型做尾递归优化,最后输出到JVM。
延伸阅读:
什么是命令式编程?
命令式编程(英语:Imperative programming),是一种描述计算机所需作出的行为的编程典范。几乎所有计算机的硬件工作都是命令式的;几乎所有计算机的硬件都是设计来运行机器码,使用命令式的风格来写的。较高阶的命令式编程语言使用变量和更复杂的语句,但仍依从相同的典范。虽非计算机程序,但与命令式编程有相似的风格:每步都是指令,有形的世界控制情况。因为命令式编程的基础观念,不但概念上比较熟悉,而且较容易具体表现于硬件,所以大部分的编程语言都是命令式的。
文章标题:函数式编程的底层架构和命令式编程的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38863