声明式和程序式编程之间的区别?

在我的一次采访中,他们问我声明性编程程序编程types之间的区别。

他们与例子有什么区别?

PS:除了这两个面向对象编程之外,还能告诉我哪些types的编程语言? 因为他们也可能会问其他的编程语言之间的区别。 还有类似这样的问题,但太分散了。

陈述

描述一个结果,并通过一个黑盒子得到它。 势在必行。 例子:

  • YACC
  • 树冠
  • SQL
  • 常用expression
  • XSLT
  • 标记,troff,CSS,VHDL

程序或命令

在不同程度的抽象中描述algorithm和处理步骤。

  • C,大多数传统语言
  • PHP,大多数
  • 在某种意义上来说,所有主要语言

面向对象

  • 趋于处于程序类别中,通常指的是展现从基本types到派生types都inheritance方法和状态的types层次结构的语言,还包括不寻常的基于原型的JavaScript。 这里是其他类别的单独维度。

实用

你把这个留下了 函数式编程强调应用没有副作用和不可变状态的函数。 上面的声明系统展示了函数式编程的某些方面。

  • scheme
  • 二郎神
  • OCaml的
  • 哈斯克尔
  • Lisp,取决于。 (Lisp也许值得自己独特的类别)
  • Clojure,有点
  • ruby,有点less
  • F#
  • 斯卡拉

声明式编程就是在不需要说明的情况下说出你想要的内容。 通过程序编程,您必须指定确切的步骤来获得结果。

例如,SQL比程序更具说明性,因为查询没有指定产生结果的步骤。

简而言之,我有一个真实世界的例子,我需要一杯茶。

程序:

  1. 去厨房
  2. 得到糖,牛奶和茶,
  3. 将它们混合并加热至沸腾
  4. 把它放在一个杯子里拿给我

声明:

  1. 给我一杯茶。

在程序语言中,你定义了整个过程,并提供了如何执行的步骤。 您只需提供订单并定义过程将如何提供。

在声明性语言中,您只需设置命令或顺序,然后让系统如何完成该顺序。 你只需要你的结果,而不需要深入研究应该如何完成。

问候,

程序规划:

在程序编程中,程序启动时,遵循一组指令。 这些指令可能会根据某些文件或内存内容而改变,但总的来说,并没有太大的差别。 程序的input通常不是来自实时的用户input,而是来自预先收集的一组数据。

声明式编程:

在声明式事件驱动式编程中,通过可选的动作集中在一个数据体上,程序可以采取它。 例如,文字处理器中的每个“事件”是影响数据,文档的任何鼠标或键盘(或文件)更改。 他们不需要以任何顺序执行。 事件驱动编程采用小程序(事件处理程序)的forms,它们都处理一组公用数据,以便每个小程序都可以使用相同的数据,本例中的文档。

在程序方法中,你编码你的指令来实现结果。 在陈述式的方法中,你要定义需要解决的问题,就像解决问题的知识一样。 看看我在这两种方法中实现的程序或声明方法的例子。

正如您在示例中所看到的,在声明性方法中,您不需要指示如何解决问题。