|
|
1
14
不 . OO和命令式是两个正交的概念。 例如:
面向对象有很多不同的方法。 |
|
|
2
6
大多数OO语言都是命令式的,但是 以某种功能性的方式使用它们。一些函数式语言位于OO框架之上(最明显的例子是.NET上的F#on),为了得到一个大规模的框架以在适当的地方使用,它们牺牲了一些“纯度”。 “主要是OO”语言有更多的空间来帮助函数式编程——更好地支持不变性是最明显的特性,其次可能是更好的类型推断。(至少在谈论C#时是这样,这可能是传统语言试图进入功能门的最重要的例子。) |
|
|
3
4
对
|
|
|
4
2
|
|
|
5
2
我仍然坚信面向对象是一个固有的必要概念。但是作为一个 recent question 为了让我对编程范式有更多的思考,我总结了一个更全面的答案,这有点离题,但顺便也回答了您的问题: 两种主要的编程范例是 陈述范式 ,程序员写下抽象关系(从而告诉编译器 什么 ,程序员写下算法(从而告诉计算机 怎样 得到他想要的东西)。 范例是一种先验的语言不可知论——它更多的是关于你如何思考和构造你的程序的一种方式。然而,语言使用范例的容易程度存在差异:语言语义和语法导致了编写代码的惯用方式。 声明式语言的一个例子是Prolog,命令式语言的一个例子是Fortran(和 真正的程序员可以用任何语言编写FORTRAN程序 ).
这显然是对序列的声明性描述。但是,
这个 功能范式 这个 面向对象范式 本质上是必需的,因为它将计算建模为有状态对象之间的通信,称为消息传递。 有些语言是纯粹的,这意味着所有的计算都符合范式。例如,Haskell是一种纯粹的函数式语言,Smalltalk是一种纯粹的面向对象语言。
|
|
|
6
0
面向对象要素:
. 如果您通过创建一系列对象来模拟状态变化,那么您正在破坏这些不变量,就这么简单。 如果你不同意这个面向对象的定义,请与Alan Kay讨论。 |
|
|
7
0
Wikipedia 列出了其中的大部分。 我将通过使用 Objects with Behaviours 维基百科的特点 物体
很多面向对象语言都有类的概念,但实际上,也有 Prototype-based languages 比如JavaScript。 函数式语言也可以使用类(例如Haskell中的类型类)。但仅仅因为它们有类并不意味着它们是面向对象的或允许面向对象编程。以Haskell为例:您甚至没有对象!没有“身份”这样的概念!您所能做的就是编写纯函数! 仅仅因为有人使用了一个名为“类”的术语,并不意味着他们正在进行面向对象的编程!
对 ,命令式编程是OOP固有的。 |
|
|
Sudhanva c · 如何提高编码技能?[已关闭] 8 年前 |
|
|
hoffm · 为什么Ruby找不到调用方类中定义的常量? 8 年前 |
|
|
Thamme Gowda · “lambda”关键字的较短替代项? 8 年前 |
|
|
AlphaModder · 有没有带有“不寻常”访问修饰符的编程语言? 10 年前 |
|
|
lucasasecas · 有可能静态地使用动态语言吗? 11 年前 |
|
|
Eugenio Laghi · 仅由括号、加号和感叹号组成的语言 11 年前 |
|
dallin · 数组中的逗号运算符是否有名称? 12 年前 |