-2

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

4

3 回答 3

1

是的,仅仅是因为您可以为您的 $favorite $paradigm 以宿主语言实现一个解释器。

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

于 2012-05-19T15:32:16.160 回答
0

C++ 最终是汇编,你只需要一个编译器来根据更好的描述为你编写汇编。因此,请确保您可以在汇编中执行 OOP,就像您可以在 C 中执行 OOP 一样;只是许多 OO 概念最终是通过约定和程序员纪律来实现的,而不是受语言结构的强制,结果可能出现大量错误,您的语言工具可能不会很好在帮你找到。

对于大多数范式/语言不匹配,类似的论点也随之而来。很多面向对象的程序都是用 C 语言编写的,所以它甚至可以是一件有点实际的事情,而不仅仅是学术问题。

当您想要删除限制而不是添加限制时,这可能会有点困难。

在诸如 Haskell 和 Mercury 之类的纯强制语言中,您不能在任意纯代码中间突然打破面向对象样式的封装可变状态包(至少在不使用“所有赌注都关闭”功能的情况下)就像unsafePerformIO在 Haskell 或promise_pureMercury 中对编译器撒谎一样,此时您的程序很可能完全无法工作,除非您可以在执行此操作的区域周围包装一个纯接口)。但是,您可以使用这些语言以过程或面向对象的风格编写整个程序,而永远不要离开它们用于执行 IO 的机制。

同样,如果您认为在动态语言中使用鸭子类型是一种范式,那么在具有静态类型的语言中获得类似的东西是非常痛苦的,但是您总能找到一种方法将您的动态类型表示为data。但是你再次发现自己在做一些约定和重新实现的事情,如果你真的使用鸭子打字语言,你会免费获得这些东西。

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

于 2012-05-20T03:16:08.303 回答
-2

不,并非所有语言都可以用于任何范式编程。然而,更流行的——python、c++等都允许你选择你想要的编程方式。甚至 php 也在添加 OO 支持。

于 2012-05-19T07:10:13.303 回答