命令式语⾔与声明式语⾔
⼤多数程序员考虑编程时,他们都要设想⽤于编写应⽤程序的命令式样式和技术。最受欢迎的通⽤编程语⾔(包括 Python 和其它⾯向对象的语⾔)在样式上绝⼤多数都是命令式的。另⼀⽅⾯,也有许多编程语⾔是声明性样式,包括函数语⾔和逻辑语⾔,还包括通⽤语⾔和专⽤语⾔。
让我们列出⼏个属于各个种类的语⾔。许多读者已经使⽤过这些⼯具中的许多⼯具,但不见得考虑过它们之间的种类差别。Python、C、
C++、Java、Perl、Ruby、Smalltalk、Fortran、Basic 和 xBase 都是简单的命令式编程语⾔。其中,⼀些是⾯向对象的,但那只是组织代码和数据的问题,⽽⾮基本编程样式的问题。使⽤这些语⾔,您命令程序执⾏指令序列:把某些数据放⼊(put)变量中;从变量中获取(fetch)数据;循环(loop)⼀个指令块直到(until)满⾜了某些条件;如果(if)某个命题为 true,那么就进⾏某些操作。所有这些语⾔的⼀个妙处在于:便于⽤⽇常⽣活中熟悉的⽐喻来考虑它们。⽇常⽣活都是由做事、选择、再做另⼀件事所组成的,期间或许会使⽤⼀些⼯具。可以简单地将运⾏程序的计算机想象成厨师、⽡匠或汽车司机。计算机语言种类
诸如 Prolog、Mercury、SQL、XSLT 这样的语⾔、EBNF 语法和各种格式的真正配置⽂件,都声明某事是这种情况,或者应⽤了某些约束。函数语⾔(⽐如 Haskell、ML、Dylan、Ocaml 和 Scheme)与此相似,但是它们更加强调陈述编程对象(递归、列表,等等)之间的内部(函数)关系。我们的⽇常⽣
活(⾄少在叙事质量⽅⾯)没有提供对这些语⾔的编程构造的直接模拟。然⽽,对于那些可以⽤这些语⾔进⾏描述的问题来说,声明性描述远远⽐命令式解决⽅案来得简明且不易出错。例如,请研究下⾯这个线性⽅程组:
清单 1. 线性⽅程式系统样本
10x + 5y - 7z + 1 = 0
17x + 5y - 10z + 3 = 0
5x - 4y + 3z - 6 = 0
这是个相当漂亮的说明对象(x、y 和 z)之间⼏个关系的简单表达式。在现实⽣活中您可能会⽤不同的⽅式求出这些答案,但是实际上⽤笔和纸“求解 x”很烦,⽽且容易出错。从调试⾓度来讲,⽤ Python 编写求解步骤或许会更糟糕。
Prolog 是与逻辑或数学关系密切的语⾔。使⽤这种语⾔,您只要编写您知道是正确的语句,然后让应⽤程序为您得出结果。语句不是按照特定的顺序构成的(和线性⽅程式⼀样,没有顺序),⽽且程序员或⽤户并不知道得出的结果都采⽤了哪些步骤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论