冒号课堂§2.2:声明范式 - 编程入门网
语言反过来定义编程范式的说法值得商榷,但从中可看出约束式编程的代表性。
[4] 尾递归是一种特殊的递归,其递归调用出现在函数的最后一步运算(尾部)。这类递归很容易通过手工或编译器转化为迭代形式,以优化性能。 [5] 有些声明式语言(例如Lisp的一个变种Scheme)虽然支持迭代,但一般是用尾递归来实现的。从本质上说,这只是一种语法上的甜头(syntactic sugar)。它与普通迭代的区别在于:前者的循环变量是重新绑定(rebind)的,而后者的循环变量是重复赋值(reassign)的。 。总结 函数式编程通过数学函数的表达式变换和计算来求值。 逻辑式编程通过一系列事实和规则,利用数理逻辑来推导或论证结论。 命令式编程中的变量代表抽象化的内存,所存内容可能改变。声明式编程中的变量代表抽象化的符号,所指对象一般不会改变。 声明式编程专注问题的分析和表达而不是算法实现,不用指明执行顺序,一般没有或极少副作用,也不存在内存管理问题。这些都大大降低了编程的复杂度,同时也非常适合于并发式计算。 编程语言的流行程度与其擅长的领域密切相关。函数式语言和逻辑式语言擅长基于数理逻辑的应用,命令式语言擅长基于业务逻辑的、尤其是交互式或事件驱动型的应用。 声明式语言与命令式语言之间并无绝对的界限,它们均建立于低级语言之上,并且互相渗透融合。 在命令式语言中引入函数或过程,是一种向声明式风格的趋近。 编程是寻求一种机制,将指定的输入转化为指定的输出。 三种核心编程范式采用如下不同的机制—— 命令式:自动机机制,通过设计指令完成从初始态到最终态的转变。 函数式:数学变换机制,通过设计函数完成从自变量到因变量的计算。 逻辑式:逻辑证明机制,通过逻辑推理完成从题设到结论的证明。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |