命令式编程面向算法vs声明式编程面向描述。
命令式编程面向:数据结构与算法;
算法 = 控制 + 逻辑;
命令式编程是行动导向(Action-Oriented)的,因而算法是显性而目标是隐性的;
声明式编程将描述与求解分离;
声明式编程面向描述:
面向逻辑、抽象、描述;
逻辑(数学)规则的表达;
计算规则;
结合规则;
处理规则;
特征规则;
描述为主,算法为辅。
声明式编程专注问题的分析和表达而不是算法实现,不用指明执行顺序,一般没有或极少副作用。同时也非常适合于并发式计算。
编程语言的流行程度与其擅长的领域密切相关。函数式语言和逻辑式语言擅长基于数理逻辑的应用,命令式语言擅长基于业务逻辑的、尤其是交互式或事件驱动型的应用。
命令式编程通过一系列改变程序状态的指令来完成计算,声明式编程只描述程序应该完成的任务。命令式编程模拟电脑运算,是行动导向的,关键在于定义解法,即“怎么做”,因而算法是显性而目标是隐性的;声明式编程模拟人脑思维,是目标驱动的,关键在于描述问题,即“做什么”,因而目标是显性而算法是隐性的。
http://www.nowamagic.net/academy/detail/1220528