OOP可能是当今软件设计中使用最多的编程范例。我的问题是 - 其他范例可以与之竞争并且可以代替oop ?为了澄清这个问题,我不是在询问其他范例。其中有很多,我想知道哪一个:
如果有的话,它的优点/缺点是什么,为什么它比oop更好/更差,哪种语言最好使用它,如何在流行语言中使用它,有任何设计模式,它可以完全取代oop吗?
答案 0 :(得分:41)
Functional programming是另一种流行的编程范式,主要是在学术界。函数式编程语言的最佳示例是Haskell和Standard ML。
函数式编程和面向对象编程之间的根本区别在于,您在数据流而非控制流的意义上进行编程。请参阅 Simon Peyton-Jones 的演示文稿Taming Effects with Functional Programming,以获得详细介绍。
行业中使用的函数式编程的一个很好的例子是Erlang。它主要用于电信,分布式和容错系统。请参阅 Joe Armstrong 的演示文稿Erlang - Software for a concurrent World。
还有一些新的函数式编程语言将函数式编程与OOP相结合。两个很好的例子是.NET平台的F#和Java平台的Scala;他们经常可以使用其他语言编写的平台上的现有库。
现在新编程语言的趋势是Multi-paradigm,其中面向对象编程和函数编程等多种范例被组合在同一种语言中。
答案 1 :(得分:10)
程序处理是OOP出现之前的一切,已经产生了一些大型的真实世界应用程序(事实上,它们大部分是最初的)和许多操作系统。
它当然可以用于具有最小疼痛和最大性能的大规模产品
答案 2 :(得分:4)
首先请注意,当前使用的许多编程语言(特别是“高级语言”)都是 multi-paradigm 。这意味着您永远不会构建纯粹的OOP程序(除非您使用Smalltalk或Eiffel来构建大型项目)。
例如,查看 PHP :
基本上,PHP将许多不同的范例粘合在一起(并且本身就是一种“粘合语言”)。
Java还实现了很多概念,这些概念并非来自面向对象范例(例如,来自函数式编程)。
在Wikipedia中按类型查看编程语言列表:https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages(不100%准确)。
功能性编程(指令性编程的子集)
过程编程
逻辑编程
一般的声明性/特定领域语言
一般性的编程程序
此列表不完整,只能给出一个想法。请注意,在编写大型应用程序时,通常会使用很多不同的范例,甚至您所使用的每种语言都在实现多种范例。
在对数据建模时,通常将OOP视为构造大型复杂关系的不错选择。对于许多其他任务而言,并非总是如此。
答案 3 :(得分:2)
向量关系数据建模用于在全局信息网络体系结构(网络驻留模型代理)内创建具有域相关语义的可执行信息模型。
答案 4 :(得分:1)
FP - 功能编程是一种非常流行的编程范例,已经存在了很长时间,并且近年来开始变得越来越突出。 FP支持不可变性,递归和函数的不变性,没有副作用。流行的fp语言的一些例子是Erlang,Scala,F#,Haskell和Lisp(等等)。
答案 5 :(得分:-5)
目前没有可以真正取代OOP的范例。 OOP(受益)的问题在于它为您做了大量工作 - 自动发布资源,验证数据等,并且可以轻松验证代码 - 更不用说世界上绝大多数现有的库用C ++,C#或Java等OOP语言编写。如果没有这样大规模的图书馆,那么相处的现实是非常值得怀疑的。
在利基或学术界,你会发现很多功能编程。但是,如果你真的想做一个大型项目,OOP是唯一的出路。
我认为通用编程将成为一种新的范例。但是,它仍然处于开发阶段,只有C ++ / D才能提供真正优秀的通用编程。