陈述句与祈使句
Aprogramming paradigm是计算机编程的基本风格。
有四种主要的范例:命令式、声明式、功能性(被认为是声明式范例的一个子集)和面向对象。
Declarative programming:是一种编程范例,它表示计算的逻辑(做什么),而不描述其控制流(如何做)。
一些著名的声明性领域特定语言(dsl)示例包括CSS、正则表达式和SQL的子集(例如SELECT查询)
许多标记语言,如HTML、MXML、XAML、XSLT。。。通常是陈述性的。
声明式编程试图模糊程序作为指令集和程序作为关于所需答案的断言之间的区别。
Imperative programming:是一种编程范例,它用改变程序状态的语句来描述计算。声明式程序可以双重地看作是编程命令或数学断言。
函数式编程:是一种将计算视为数学函数的求值并避免状态和可变数据的编程范式。它强调函数的应用,而不是强调状态变化的命令式编程风格。
在纯函数语言(如Haskell)中,所有函数都没有副作用,状态更改仅表示为转换状态的函数。
下面是MSDN中的命令式编程示例,它遍历数字1到10,并查找偶数。var numbersOneThroughTen = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//With imperative programming, we'd step through this, and decide what we want:
var evenNumbers = new List();
foreach (var number in numbersOneThroughTen)
{ if (number % 2 == 0)
{
evenNumbers.Add(number);
}
}
//The following code uses declarative programming to accomplish the same thing.
// Here, we're saying "Give us everything where it's odd"
var evenNumbers = numbersOneThroughTen.Select(number => number % 2 == 0);
两个例子产生的结果是一样的,一个既不比另一个好也不比另一个差。第一个例子需要更多的代码,但是代码是可测试的,命令式方法使您能够完全控制实现细节。在第二个示例中,可以说代码更具可读性;但是,LINQ不能让您控制幕后发生的事情。您必须相信LINQ将提供请求的结果。