面向对象编程的替代方法?
OOP可能是当今软件devise中最常用的编程范例。 我的问题是 – 什么样的其他范式可以与它竞争,并可以代替oop ? 为了澄清这个问题,我不问其他什么样的范式。 有很多,我想知道哪一个:
- 在实践中已经被使用,不仅在理论上。
- 可以与oop竞争 ,因此可以在没有痛苦或没有痛苦的情况下用于大型项目。
- 可以用来开发具有业务逻辑,数据库等的桌面应用程序。
- 不是和oop的伴侣一起使用,而是可以代替oop。
如果有的话,它有什么优点/缺点,为什么比oop好/差,哪种语言最好用,怎么用stream行语言,有什么devise模式,可以吗完全取代oop?
函数式编程是另一种stream行的编程模式,主要是在学术界。 函数式编程语言的最好例子是Haskell和Standard ML 。
函数式编程和面向对象编程之间的根本区别在于,您是在数据stream而不是控制stream的意义上编程的。 请参阅Simon Peyton-Jones的 函数式编程演示文稿。
Erlang是业界使用的function性编程的一个很好的例子。 它主要用于电信,分布式和容错系统。 查看演示文稿Erlang – Joe Armstrong撰写 的“并发世界的软件” 。
还有更新的function性编程语言,将function性编程与OOP相结合。 两个很好的例子是用于.NET平台的F#和用于Java平台的Scala 。 他们经常可以使用其他语言编写的平台上的现有库。
现在新的编程语言的趋势是多范式 ,其中多种范例如面向对象的编程和函数式编程被结合在相同的语言中。
程序处理是OOP出现之前的一切,已经产生了一些大型的真实世界的应用程序(事实上,其中大部分原本是)和许多操作系统。
它当然可以用于大规模的产品,最小的痛苦,最高的性能
vector关系数据build模用于在全球信息networking架构(networking驻留模型中介)内创build具有领域相关语义的可执行信息模型。
FP – function编程是一个非常stream行的编程范例,已经存在了很长时间,并且在近些年来已经开始变得越来越突出。 FP有利于不可变性,recursion和函数的无副作用。 一些stream行的fp语言的例子是Erlang,Scala,F#,Haskell和Lisp(等等)。
目前没有可以真正取代面向对象的范例。 OOP的好处在于它为你做了大量的工作 – 自动释放资源,validation数据等等,而且它使得代码validation变得容易 – 不用说世界上绝大多数现有的库是用C ++,C#或Java之类的OOP语言编写的。 没有这样的大型图书馆这样的相处的现实是非常令人怀疑的。
在小众或学术界,你会发现很多function编程。 但是,如果你真的想做一个大型的项目,面向对象是唯一的出路。
我认为generics编程将会成为一种新的范式。 但是,它仍然处于开发阶段,只有C ++ / D提供真正好的通用编程。