Awk*_*der 5 language-agnostic programming-languages functional-programming declarative imperative
我正在阅读Tomas Petricek和Jon Skeet的'Functional Programming',我理解声明和命令式编程之间的区别.
我想知道的是原始运算符和函数是如何实现的,是由命令式运算符和函数构造的声明性语言.
干杯
AWC
如果我理解你的问题,我认为这不是一个严格的规则.例如,您可以使用像Lisp这样的函数语言来为自己创建解释器.在这种情况下,实现细节以功能方式实现(因为Lisp是一种函数式语言).
此外,如果您的语言是图灵完成,您可以使用它来实现任何其他语言的解析器/解释器/编译器.有必要的图灵完备语言和功能/声明性图灵完备语言.
但是所有代码最终都是针对汇编或机器代码完成的,这本质上是必要的.从理论上讲,我上面所说的是真的,但显然不是在实践中:).
作为一个有趣的历史,LISP是一个完全理论的结构; 它是计算机语言的数学符号.它仍然是理论上的,直到LISP的eval
功能由Steve Russel在IBM 704的机器代码中实现:
根据Paul Graham在Hackers&Painters中报道的内容,p.185,麦卡锡说:"史蒂夫罗素说,看,为什么我不编程这个评估...,我告诉他,你好,你是理论与实践混淆,这个评估是为了阅读,而不是用于计算.但是,他说干就干,做了它.也就是说,他编在我的论文中的eval到IBM 704的机器代码,修复错误,然后标榜这是一个Lisp解释器,它肯定是.所以,在这一点Lisp的有基本上它今天的形式......"(强调我的)
再一次,理论与实践之间的微妙之处.:)