1.编程范式:声明式编程(Declarative)、命令式编程(Imperative)和函数式编程(Functional)

1.声明式编程

声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做

SQL 语句就是最明显的一种声明式编程的例子,例如:

SELECT * FROM collection WHERE num > 5

除了 SQL,网页编程中用到的 HTML 和 CSS 也都属于声明式编程

2.命令式编程

命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么

比如:如果你想在一个数字集合 collection(变量名) 中筛选大于 5 的数字,你需要这样告诉计算机:

  1. 第一步,创建一个存储结果的集合变量 results;
  2. 第二步,遍历这个数字集合 collection;
  3. 第三步:一个一个地判断每个数字是不是大于 5,如果是,就将这个数字添加到结果集合变量 results 中。

代码实现如下:

List<int> results = new List<int>();
foreach(var num in collection)
{
    if (num > 5)
          results.Add(num);
}

很明显,这个样子的代码是很常见的一种,不管你用的是 C, C++,还是 C#, Java, PHP, Python, Ruby, JavaScript等等,都是命令式编程。

其中命令式编程,根据编写风格还可以分为面向过程和面向对象编程。

2.1面向过程编程

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

典型的语言:C语言

2.2面向对象编程

面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

典型的语言:C++, C#, Java, PHP, Python, Ruby,JavaScript都是面向对象,注意,JavaScript面向对象与传统的面向对象不太一样,不过ECMA官方也在尽快弥补这一点。

3.函数式编程

函数式编程和声明式编程是有所关联的,因为他们思想是一致的:即只关注做什么而不是怎么做。但函数式编程不仅仅局限于声明式编程。

函数式编程最重要的特点是“函数第一位”,即函数可以出现在任何地方,比如你可以把函数作为参数传递给另一个函数,不仅如此,你还可以将函数作为返回值。大部分常见的编程语言一半都已经提供了对这种编程方式的支持,比如 JavaScript,再有 C# 中的 LINQ 和 Java 中的 Lambda 和闭包的概念。

典型语言:Haskell语言。

总结

现代的语言很少是一种编程范式,大部分语言都是好几种编程范式从而使语言本身更易用。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/programming/3631.html

(0)
上一篇 2020年2月19日 19:24
下一篇 2020年3月2日 16:33

相关推荐

  • 3.强类型语言与弱类型语言的区别

    (1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量 a,那么程序根本不可能将 a 当作字符串类型处理。强类型定义语言是类型安全的语言。 (2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定…

    编程哲学思想 2020年3月3日
    02.9K0
  • 12.不可变类型(Immutable)和可变类型(Mutable)的区别

    不可变类型(Immutable):值类型或引用类型的数据被赋值后是不可变的,如果被修改需在新内存地址保存新值。 可变类型(Mutable):值类型或引用类型的数据被赋值后是可变的,如果被修改只需在原有内存地址将新值取代旧值。

    编程哲学思想 2020年3月12日
    03870
  • 10.语句(Statement)和表达式(Expression)的区别

    语句(Statement)就像日常生活中说话的句子一样,随意的一句话,不一定有返回值。 表达式(Expression)就像数学计算中的公式一样,是为了计算值而生,通常会有返回值,但表达式的返回值不一定有意义。 “语句“是特殊的“表达式“ Ruby语言中,一切皆“表达式”,“语句”在里面为特殊的“表达式”,比如if语句的…

    编程哲学思想 2020年3月10日
    09720

发表回复

登录后才能评论