命令式编程是一种描述计算机所需作出的行为的编程典范。几乎所有计算机的硬件工作都是命令式的;几乎所有计算机的硬件都是设计来运行机器码,使用命令式的风格来写的。较高阶的命令式编程语言使用变量和更复杂的语句,但仍依从相同的典范。
命令式编程(英语:Imperative programming),是一种描述计算机所需作出的行为的编程典范。几乎所有计算机的硬件工作都是命令式的;几乎所有计算机的硬件都是设计来运行机器码,使用命令式的风格来写的。较高阶的命令式编程语言使用变量和更复杂的语句,但仍依从相同的典范。虽非计算机程序,但与命令式编程有相似的风格:每步都是指令,有形的世界控制情况。因为命令式编程的基础观念,不但概念上比较熟悉,而且较容易具体表现于硬件,所以大部分的编程语言都是命令式的。
语句
大部分的高级语言都支持四种基本的语句:
运算语句一般来说都表现了在存储器内的数据进行运算的行为,然后将结果存入存储器中以便日后使用。高阶命令式编程语言更能处理复杂的表达式,可能会产生四则运算和函数计算的结合。
循环语句容许一些语句反复运行数次。循环可依据一个默认的数目来决定运行这些语句的次数;或反复运行它们,直至某些条件改变。
条件分支语句容许仅当某些条件成立时才运行某个区块。否则,这个区块中的语句会略去,然后按区块后的语句继续运行。
无条件分支语句容许运行顺序转移到程序的其他部分之中。包括跳跃(在很多语言中称为 Goto)、副程序和 Procedure 等。
循环、条件分支和无条件分支都是控制流程。
早期的命令式编程语言都是计算机本身的机械语言。在这些语言中,指示非常简单,令硬件的运行更容易,却阻碍了复杂程序的设计。1954 年开始开发的 FORTRAN,是首个在复杂程序的设计中除掉机器码的编程语言。它是编译型的编程语言,容许命名变量、复杂的表达式、副程序和其他功能,这些功能在命令式语言中都非常普遍。后来的二十年中,可以看到大量的其他高阶命令式编程语言出现。在 1980 年后,面向对象编程有迅速的发展;面向对象编程语言均有着命令式的风格,但增添了支持对象的功能。
命令式和程序式编程
程序编程是一种命令式编程,其中程序是从一个或多个过程(也称为子程序或函数)构建的。这些术语通常用作同义词,但程序的使用会对命令式程序的出现以及它们的构造方式产生巨大影响。重度过程编程是一种结构化编程形式,其中状态更改本地化为过程或仅限于显式参数和从过程返回。从 20 世纪 60 年代开始,结构化编程和模块化编程一般被推广为提高命令性程序的可维护性和整体质量的技术。面向对象编程背后的概念试图扩展这种方法。
程序编程可以被视为朝着声明性编程迈出的一步。程序员通常可以简单地通过查看过程(和相关注释)的名称,参数和返回类型来判断特定过程应该做什么,而不必查看它如何实现其结果的细节。同时,完整的程序仍然是必不可少的,因为它在很大程度上修复了要执行的语句及其执行顺序。
命令式和面向对象语言的历史
最早的命令式语言是原始计算机的机器语言。在这些语言中,指令非常简单,这使得硬件实现更容易,但阻碍了复杂程序的创建。 FORTRAN 由 John Backus 在 1954 年开始的国际商业机器公司(IBM)开发,是第一种在创建复杂程序时消除机器代码所带来障碍的主要编程语言。 FORTRAN 是一种编译语言,允许命名变量,复杂表达式,子程序以及命令式语言中常见的许多其他功能。接下来的 20 年里,许多其他主要的高级命令式编程语言得到了发展。在 20 世纪 50 年代末和 60 年代,ALGOL 的开发是为了使数学算法更容易表达,甚至可以作为某些计算机的操作系统目标语言。 MUMPS(1966)将命令式范式带到逻辑极端,完全没有任何陈述,完全依赖于命令,甚至使 IF 和 ELSE 命令彼此独立,只能通过名为$的内部变量连接。测试。 COBOL(1960)和 BASIC(1964)都试图使编程语法看起来更像英语。在 20 世纪 70 年代,Pascal 由 Niklaus Wirth 开发,C 由 Dennis Ritchie 在贝尔实验室工作时创建。 Wirth 继续设计 Modula-2 和 Oberon。为了满足美国国防部的需求,Jean Ichbiah 和霍尼韦尔的一个团队在经历了为期 4 年的项目定义语言要求后,于 1978 年开始设计 Ada。该规范于 1983 年首次发布,并于 1995 年,2005 年和 2012 年进行了修订。
20 世纪 80 年代,对面向对象编程的兴趣迅速增长。这些语言在风格上势在必行,但增加了支持对象的功能。 20 世纪的最后二十年看到了许多这样的语言的发展。 Smalltalk-80 最初由 Alan Kay 于 1969 年构思,于 1980 年由施乐帕洛阿尔托研究中心(PARC)发布。借鉴另一种面向对象语言中的概念–Simula(被认为是世界上第一个面向对象的编程语言,于 20 世纪 60 年代开发)-Bjarne Stroustrup 设计了 C ++,一种基于 C 语言的面向对象语言.C ++的设计始于 1979 年第一次实施于 1983 年完成。在 20 世纪 80 年代末和 90 年代,基于面向对象概念的着名命令式语言是由 Larry Wall 于 1987 年发布的 Perl; Python,由 Guido van Rossum 于 1990 年发布; Visual Basic 和 Visual C ++(包括 Microsoft 基础类库(MFC)2.0),分别于 1991 年和 1993 年由 Microsoft 发布; PHP,由 Rasmus Lerdorf 于 1994 年发布; Java 由 Sun Microsystems 于 1995 年发布,JavaScript 由 Brendan Eich(Netscape)发布,Ruby 由 Yukihiro“Matz”Matsumoto 于 1995 年发布。微软的.NET Framework(2002)在其核心是必不可少的,其主要内容也是如此目标语言,VB.NET 和在其上运行的 C#;但微软的 F#,一种功能语言,也在它上面运行。