任何语言都可以用于任何范式的编程吗?

时间:2012-05-19 07:04:14

标签: oop functional-programming paradigms

任何语言都可以用于任何范式的编程吗?例如,C没有类,但可以在OOP中编程。有些语言(例如汇编)我在OOP中看不到。

3 个答案:

答案 0 :(得分:1)

是的,只是因为您可以使用宿主语言为您最喜爱的$范例实现解释器。

但实际上,这是不可行,有效或正确的。

答案 1 :(得分:0)

C ++最终是程序集,你只需要一个编译器就可以从更好的描述中为你编写程序集。所以你可以确保你可以在汇编中进行OOP,就像你在C中做OOP一样;只是许多OO概念最终都是通过约定和程序员规则来实现的,而不是被语言结构所强迫,结果是大量的错误成为可能,你的语言工具可能不会很好帮助你找到。

大多数范式/语言不匹配都会出现类似的论点。很多面向对象的程序已经用这种方式编写了,所以它甚至可以做一些实际的事情,而不仅仅是一个学术问题。

当你想要的是删除限制而不是添加它们时,可能会有点困难。

在Haskell和Mercury等纯度执行的语言中,你不能突然在任意纯代码的中间突破面向对象样式的封装可变状态包(至少不使用“所有赌注都是关闭“Haskell中的unsafePerformIO或Mercury中的promise_pure等功能,这些功能可能会对编译器产生影响,此时您的程序可能完全无法工作,除非您可以在您执行的区域周围包含纯接口这个)。但是,您可以在这些语言中以过程或面向对象的方式编写整个程序,从不离开他们用来执行IO的机制。

同样,如果你考虑在动态语言中使用duck typing作为一种范例,那么使用静态类型在语言中获得类似的东西是非常痛苦的,但你总能找到一种方法来表示你的动态类型数据。但是你再次发现自己正在使用常规和重新实现的东西,如果你真的使用鸭子打字语言,你可以免费获得。

我很确定很难找到一种语言(可用于编写通用程序)无法适应在任何你喜欢的范例中编写代码。适应可能不会产生非常有效的代码(有时它可以;适应C或汇编到任何范例通常可以像你调整该范例一样有效),并且它几乎肯定会非常低效。程序员时间的条款。

答案 2 :(得分:-2)

不,并非所有语言都可用于任何范例的编程。然而,更受欢迎的 - python,c ++等都可以让你选择你想要的编程方式。即使php正在添加OO支持。