当前位置:  开发笔记 > 编程语言 > 正文

混合面向对象和函数式编程

如何解决《混合面向对象和函数式编程》经验,为你挑选了7个好方法。

有哪些语言可以促进面向对象和函数式编程?我知道任何支持一流功能的语言都可以被认为是功能性的,但我正在寻找一种专门针对两种编码风格的语法.

使用这样的语言,我想象将所有状态更改隔离到单个代码部分,并使程序的其余部分纯粹功能.只是想到它让我流口水(调试天堂!).

到目前为止,我已经发现了Scala,虽然我刚刚听说过它(它看起来很神奇).在这种"混合风格"范式中是否有任何重要的竞争者?



1> Igor Krivoko..:

最着名的是OCaml和F#(可以模糊地描述为OCaml for .NET).

还有许多其他多范式语言,如Oz,但它们主要具有教学价值.相比之下,OCaml非常实用.它几乎和C一样快,几乎和Haskell一样漂亮:)

像Python和Ruby这样流行的脚本语言也可以让你以功能的方式编程.但是,它们没有提供"经典"函数语言(以及OCaml)具有的最强大的功能之一:模式匹配(不要将其误认为正则表达式).


OCaml和F#当然几乎和Haskell语法一样漂亮,但它们不允许你抽象类型构造函数(没有更高级的类型).Scala并不是那么漂亮,但它确实给你带来了更多种类.如果你只是想编写更漂亮的代码,那很好,但是如果你想要更强大的抽象,那么Caml变种将无法让你在那里.

2> Evan Meagher..:

Javascript:OO和功能.



3> Zifre..:

OCaml的

O'Haskell(面向对象编程甚至可以在普通的Haskell中使用)

Nemerle

可能是新的LISP

此外,许多脚本语言(如Python,Ruby,Lua等)都具有此功能,但缺少函数语言的许多优良功能,如代数数据类型和模式匹配.



4> Rayne..:

据我所知,OCaml和F#是最流行的混合OOP和FP的语言.

大多数语言,如Ruby,混合了函数式编程,但很多人甚至都没有意识到这一点.我发现这样的语言在语法方面还有很多不足之处.



5> Gordon Gusta..:

Haskell:纯粹的功能,几乎没有OO,但继续,潜水.:d

Scala:OO和FP的美妙组合,有可能在十年或二十年内超越Java作为JVM的主要语言.我喜欢它,因为它为java平台带来了函数式编程,这是非常需要恕我直言.

C#:对OO的真棒支持,以及获得更多功能(一流的功能,我们将看到.net 4带来的改进)

F#:.net语言专为功能而设计,而不是最初为OO设计的C#.

Python:非常适合OO,但根本不适合FP

Javascript:支持一流的功能,但不是专为Scala和F#设计的.仍然比python恕我直言略好.

为什么要混合OO和FP?作为踏脚石?


为什么混合OO和FP? - 因为这就是我们的世界.有些方面很好地模仿了永恒的关系,其他方面需要生命周期和状态.

6> Eugene Yokot..:

JavaScript,Python和Ruby可以这样使用,但Scala通过静态输入函数并在JVM下工作来提升一个档次.


为什么有人会用Python来学习函数式编程?:\
Python是学习FP原理的好地方.

7> Scott Wisnie..:

C#.这是必要的,它可以很方便,但也有很多功能特性.Lambdas,迭代器和LINQ都是有用的.

它可能对纯粹主义者没有多大吸引力,但它对我有用.


我觉得它没有冒犯性(对任何人),但这吸引了一些"进攻性"选票; 我建议你重新说出最后一点.这是相当可悲的(不是斯科特,而是"冒犯"),因为这篇文章显然不是"冒犯性的".但我们有.
态度很好.
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有