寻找纯面向对象的语言

Mic*_*has 17 oop programming-languages

我认为面向对象编程被高估了,但我想学习这个范例.我一直在尝试使用QT 4在PHP 5和C++中执行此操作.不幸的是,我倾向于以结构化方式编程,我不使用很多继承也不使用多个实例.我想我必须学习一种纯粹的面向对象语言,迫使我使用上述功能.

我认为最好的选择可能是学习Ruby.您能否确认或命名更好的替代方案?

我主要在x86-64 Linux上工作.

Rob*_*ino 33

面向对象的编程与语法无关.它是一种编程范式.

语言可以强制您使用对象(例如,如果一切都是对象),但使用其中一种语言不会"强迫"您学习面向对象的编程.

我不使用很多继承,也不使用多个实例

您必须了解何时以及为何使用这些技术(数据抽象,封装,多态和继承)来思考对象.在面向对象编程中获得一个很好的参考,并使用您最熟悉的任何语言(支持OOP)来应用这些技术.

  • ““我发明了面向对象这个术语,我可以告诉你 C++ 不是我想要的” -> https://www.youtube.com/watch?v=oKg1hTOQXoY&t=634s (2认同)

Ale*_*ler 22

如果您想要纯OO语言,请尝试使用Smalltalk.一切都是Smalltalk中的一个对象.这不是Java的情况,其中原始类型(int,float)本身不是对象.

如果它不是一个'纯'OO语言,Java是一个很好的选择,因为它更主流.

  • 是的,Smalltalk与事情一样严格.据我所知,除了`self`(相当于其他语言中的`this`)之外,没有运算符和命令,我认为指向"静态"类成员的东西.其他一切都是对象,而其他一切都是对象.这就是代码块是对象,你应用`If`和`ElseIf`方法/消息.因为没有运算符优先规则,所以在进行算术时也必须重新考虑,因为`+`和`*`是应用于数值对象的方法,因此按照出现的顺序进行评估. (2认同)

t0m*_*13b 9

对于纯面向对象的语言,请查看Smalltalk.我现在正在读这篇文章.

希望这可以帮助.


KLE*_*KLE 8

问题是不是真正的语言,但你使用它的方式.

我们不使用OO功能,因为它们很花哨,但是因为我们获得时间(包括长期运行).

我可以建议您的代码审查您的代码吗?你讨论一下吗?你可以复习一下吗?我认为反馈对你的帮助远远超过阅读,或单独编写代码,你不必面对或讨论具体代码的东西.


Max*_*kin 7

在Mono上尝试Java或C#.

理由:

  1. 我尊重Smalltalk,并且应该知道它的概念以更好地理解OOP,但学习语言本身是不切实际的恕我直言.

  2. 虽然Java和C#可能不是"绝对纯粹"的OOP(例如它们已经结合了一些函数式编程方法),但它们本质上是基于OOP的,它们是主流的(因此具有更大的社区)并且它们更容易学习比Smalltalk恕我直言.

  • Mono是一个框架,而不是一种语言.我猜你的意思是C#. (5认同)
  • 借调.如果你想要一个脚本语言,学习Ruby,但如果你想学习一门实用的语言来学习OOP,Java或C#就是这样.Smalltalk在学术界以外的任何地方都没有被广泛使用,埃菲尔也没有; 拥有广泛的支持和问答网站,Java/C#似乎是明显的赢家. (3认同)
  • @fortran:我们应该建议Michas学习Smalltalk-80,然后才能学习_useful_? (2认同)
  • @FrustratedWithFormsDesigner,tommieb75 - 不,所有C#类型(包括int,bool等)都派生自System.Object. (2认同)

Fru*_*ner 7

很多人都在暗示Smalltalk,所以我会与众不同并建议让埃菲尔.;)

学习OO原则的好语言,也有像DBC(Design By Contract)这样的好东西.


Bra*_*nar 6

问题不在于语言.无论您使用何种语言,您仍然可以在一个类中编写所有代码,或者使用类级方法,并最终编写结构化代码.虽然纯粹的OO语言会让它变得更难,但我已经给了很多学生,他们试图将结构化编程变成Java和C#.

我的建议是查看OO编程的一些很好的例子,并看看OO如何使自己适应某些设计模式,这些模式真正展示了OO的功能,使结构编程能够做同样的事情,但代码更少,更多其他程序员可以读取.


San*_*ngi 5

阅读实施Smalltalk的Daniel HH Ingalls 撰写的文章 Design Principles Behind Smalltalk.它决定了OOP的真正本质.