Dar*_*iak 72 language-agnostic oop paradigms programming-languages
OOP可能是当今软件设计中使用最多的编程范例.我的问题是 - 其他范例可以与之竞争并且可以代替oop?为了澄清这个问题,我不是在询问其他范例是什么.其中有很多,我想知道哪一个:
如果有的话,它的优缺点是什么,为什么它比oop更好/更差,最好用什么语言,在流行的语言中使用它,有任何设计模式,还可以完全取代oop?
Jon*_*nas 46
函数式编程是另一种流行的编程范式,主要是在学术界.函数式编程语言的最佳示例是Haskell和Standard ML.
函数式编程和面向对象编程之间的根本区别在于,您在数据流而不是控制流的意义上进行编程.见演示函数式编程驯服影响由西蒙·佩顿-琼斯的一个很好的介绍.
Erlang是业界使用的函数式编程的一个很好的例子.它主要用于电信,分布式和容错系统.见演示二郎山-软件并发世界由乔·阿姆斯特朗.
还有一些新的函数式编程语言将函数式编程与OOP相结合.两个很好的例子是.NET平台的F#和Java平台的Scala ; 他们经常可以使用其他语言编写的平台上的现有库.
现在,新编程语言的趋势是多范式,其中面向对象编程和函数编程等多种范例被组合在同一种语言中.
Woo*_*ody 10
程序处理是OOP出现之前的一切,已经产生了一些大型的真实世界应用程序(事实上,它们大部分是最初的)和许多操作系统.
它当然可以用于具有最小疼痛和最大性能的大规模产品中
首先请注意,目前使用的许多编程语言(尤其是“高级语言”)都是多范式的。这意味着您永远不会构建纯粹的 OOP 程序(除非您使用 Smalltalk 或 Eiffel 构建大型项目)。
以PHP为例:
基本上,PHP 将许多不同的范式粘合在一起(并且本身就是一种“粘合语言”)。
Java 还实现了许多不是来自面向对象范式(例如来自函数式编程)的概念。
查看维基百科中按类型分类的编程语言列表:https : //en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages(不是 100% 准确)。
函数式编程(声明式编程的子集)
程序化编程
逻辑编程
一般的声明性/领域特定语言
命令式编程
这个列表并不完整,它只是提供一个想法。请注意,在编写大型应用程序时,您通常会使用许多不同的范式,甚至您使用的每种语言都在实现多种范式。
在建模数据时,OOP 通常被认为是构建大型复杂关系的好选择。它并不总是适用于许多其他任务的范式。