我学习编程,声明和必要的模式的两个主要的范例。我有以下我的教科书和维基百科做出暧昧的语句,如硬盘时间:

声明: - 着眼于“做什么”的电脑做的。 - 是自由的“副作用” - 无控制流程

势在必行: - 侧重于对电脑应该“如何”做。 - 如何做到这一点的动作序列方面

你会如何区分这两个编程范式?如果你能在上面所作的发言展开,这将是非常有益的。

有帮助吗?

解决方案

SQL是经典的声明性语言:你说“看看这个表,给我符合这些条件的所有行”(在你使用现实生活连接,选择列表,不管,但它是基本相同的语句) 。正如您上面所指出的,这句话告诉计算机你想要什么,而不是如何去做。

内部,数据库系统在像C语言实现,并且您的SQL查询将被翻译成如下势在必行步骤:

while (another row to process)
    read row from disk
    for (every test)
        if (test fails)
            continue to next row
    add row to result-set

其中一个关键的事情,这里要注意的是明确的控制流:,而的和的如果的。这些将不会出现在声明性语言。

其他提示

编程顺序执行势在必行可以操纵的底层状态语句。

一些Java中的命令性编程:

Customer customer = null;

// first create a customer and have the variable reference it
customer = new Customer(); 
// the state of the customer variable has changed

// set the id on whatever object is *currently* being referenced by the variable
customer.setId(1);
// the state of the Customer object has changed

customer.setFirstName("Bob");
customer.setLastName("McBob");

请注意,如果你做了以上失灵,它会导致空指针异常:

Customer customer = null;
customer.setFirstName("Foo");   // the customer variable is still null at this point
customer = new Customer();   // too late!

声明性编程不具有状态或顺序,只是声明。

下面是一个简单的例子 - 这个XML片段可以考虑声明性:

<NewCustomers>
  <Customer>
    <Id>1</Id>
    <FirstName>Bob</FirstName>
    <LastName>McBob</LastName>
  </Customer>
</NewCustomers>

它不会谈论客户对象将如何得到建立,只是声明的部分。如何上面得到解释和执行达到编程环境。

HTML和Web浏览器各自范式的不错的例子,分别。 HTML(和CSS)是的声明的语言 - 你告诉网络浏览器的什么的标记,但不是的如何的做到这一点。换句话说,像<h1>My title</h1>一行代码告诉浏览器的什么的显示 - 文本“我的标题”的标题标签 - 但现在如何实际画在屏幕上<。 / p>

在web浏览器,但是,一般写在势在必行方式。这需要那些声明标记定义和实际指示计算机如何绘制这些元素在屏幕上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top