声明式和程序式编程之间的区别?
在我的一次采访中,他们问我声明性编程和程序编程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比程序更具说明性,因为查询没有指定产生结果的步骤。
简而言之,我有一个真实世界的例子,我需要一杯茶。
程序:
- 去厨房
- 得到糖,牛奶和茶,
- 将它们混合并加热至沸腾
- 把它放在一个杯子里拿给我
声明:
- 给我一杯茶。
在程序语言中,你定义了整个过程,并提供了如何执行的步骤。 您只需提供订单并定义过程将如何提供。
在声明性语言中,您只需设置命令或顺序,然后让系统如何完成该顺序。 你只需要你的结果,而不需要深入研究应该如何完成。
问候,
程序规划:
在程序编程中,程序启动时,遵循一组指令。 这些指令可能会根据某些文件或内存内容而改变,但总的来说,并没有太大的差别。 程序的input通常不是来自实时的用户input,而是来自预先收集的一组数据。
声明式编程:
在声明式事件驱动式编程中,通过可选的动作集中在一个数据体上,程序可以采取它。 例如,文字处理器中的每个“事件”是影响数据,文档的任何鼠标或键盘(或文件)更改。 他们不需要以任何顺序执行。 事件驱动编程采用小程序(事件处理程序)的forms,它们都处理一组公用数据,以便每个小程序都可以使用相同的数据,本例中的文档。
在程序方法中,你编码你的指令来实现结果。 在陈述式的方法中,你要定义需要解决的问题,就像解决问题的知识一样。 看看我在这两种方法中实现的程序或声明方法的例子。
正如您在示例中所看到的,在声明性方法中,您不需要指示如何解决问题。