编程范式(Programming paradigm)
在面向对象编程的世界,程序是一系列相互作用(方法)的对象(Class Instances),而在函数式编程的世界,程序会是一个无状态的函数组合序列。
不同的编程语言也会提倡不同的“编程范型”。少量语言是专门为某个特定的范型设计的,如Smalltalk和Java支持面向对象编程。而Haskell和Scheme则支持函数式编程。现代编程语言的发展趋势是支持多种范型,如 C#、Java 8+、Kotlin、 Scala、ES6+ 等等。
1.命令式编程(Imperative programming)
计算机的硬件负责运行使用命令式的风格来写的机器码。计算机硬件的工作方式基本上都是命令式的。大部分的编程语言都是基于命令式的。高级语言通常都支持四种基本的语句:
(1)运算语句
一般来说都体现了在存储器内的数据进行运算的行为,而后将结果存入存储器中以便日后使用。高阶命令式编程语言更能解决复杂的表达式,产生四则运算和函数计算的结合。
(2)循环语句
容许少量语句反复运行数次。循环可依据一个默认的数目来决定运行这些语句的次数;或者反复运行它们,直至某些条件改变。
(3)条件分支
容许仅当某些条件成立时才运行某个区块。否则,这个区块中的语句会略去,而后按区块后的语句继续运行。
(4)无条件分支
容许运行顺序转移到程序的其余部分之中。包括跳跃(在很多语言中称为Goto)、副程序和Procedure等。
循环、条件分支和无条件分支都是控制流程。
早期的命令式编程语言,例如汇编,都是机器指令。尽管硬件的运行更容易,却阻碍了复杂程序的设计。
1954年开始开发的FORTRAN,是第一个编译型的编程语言,支持命名变量、复杂表达式、副程序和其余少量功能。后来的二十年中,大量的其余高级命令式编程语言被发明出来。
在1980年后,面向对象编程有迅速的发展;面向对象编程语言均有着命令式的风格,但引入了类和对象的核心概念,从此编程进入了 OOP 时代。
2.面向对象编程(Object-oriented programming,OOP)
怎么为一个模糊不清的问题找到一个最恰当的形容(问题形容)? 笼统(Abstraction)通常是我们用来简化复杂的现实问题的方法。
在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。
对象包含数据(字段、属性)与方法。
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想恰好相反:传统的程序设计主张将程序看作一系列函数的集合,或者者直接就是一系列对计算机下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、解决数据并将数据传达给其它对象,因而它们都可以被看作一个小型的“机器”,即对象。目前已经被证明的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者宣称面向对象程序设计要比以往的做法更加便于学习,由于它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、了解。反对者在某些领域对此予以否认。
当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必需理解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。许多流行的编程语言是面向对象的,它们的风格就是会透由对象来创出实例。
重要的面向对象编程语言包含Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 与 PHP等。
面向对象编程中,通常利用继承父类,以实现代码重用和可扩展性。
3.公告式编程(Declarative programming)
一种编程范式,与命令式编程相对立。
它形容目标的性质,让计算机明白目标,而非具体过程。
公告式编程不用告诉计算机问题领域,从而避免随之而来的反作用。
而命令式编程则需要用算法来明确的指出每一步该怎样做。
公告式编程通常被看做是形式逻辑的理论,把计算看做推导。
公告式编程因大幅简化了并行计算的编写难度,自2009起备受关注。
常见的公告式编程语言有:
数据库查询语言(SQL,XQuery)
正则表达式
逻辑编程
函数式编程
组态管理系统等。
公告式编程透过函数、推论规则或者项重写(term-rewriting)规则,来形容变量之间的关系。它的语言运行器(编译器或者解释器)采用了一个固定的算法,以从这些关系产生结果。
很多文本标记语言例如HTML、MXML、XAML和XSLT往往是公告式的。函数式编程,特别是纯函数式编程,尝试最小化状态带来的反作用,因而被认为是公告式的。不过,大多数函数式编程语言,例如Scheme、Clojure、Haskell、OCaml、Standard ML和Unlambda,允许反作用的存在。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 编程范式(Programming paradigm)