Это субъективный термин, используемый для продвижения языков. Я видел, как раньше говорили, что C # и Java являются настоящими объектно-ориентированными языками по сравнению с C ++, потому что все должно быть в классе (без глобальных функций или переменных) и все объекты наследуются от одного класса Object.
Для Ruby это может относиться к тому, как Ruby рассматривает все как объект, поэтому вы можете написать 1.to_s
вместо чего-то вроде str(1)
или String.valueOf(1)
. Это потому, что Ruby не делает различий между значением и ссылочными переменными. В Javascript нет классов, и вы просто создаете расширяемые объекты, которые можно клонировать для повторного использования. Этот стиль программирования известен как Программирование на основе прототипов .
C ++, с другой стороны, рекламируется как мультипарадигмальный язык, который позволяет использовать несколько подходов, таких как объектно-ориентированное, универсальное и процедурное программирование. Это не придерживается одной парадигмы.
Но да, это просто субъективный термин, который может означать что угодно. Обычно это относится к тому, уделяет ли язык больше внимания объектам, а не к другим элементам языка, таким как функции, шаблоны и т. Д. В статье Википедии по SmallTalk он называется «чистым» объектно-ориентированным языком, и описание относится к Рубин также:
Smalltalk - это «чистый» ОО-язык,
это означает, что, в отличие от Java и C ++,
нет разницы между значениями
которые являются объектами и ценностями, которые
примитивные типы. В Smalltalk,
примитивные значения, такие как целые числа,
логические и символы также
объекты, в том смысле, что они
экземпляры соответствующих классов,
и операции над ними вызываются
отправка сообщений. Программист может
изменить классы, которые реализуют
примитивные значения, так что новое поведение
можно определить для их
экземпляры - например, для реализации
новые структуры управления - или даже так
что их существующее поведение будет
изменилось. Этот факт обобщен в
часто звучащая фраза «В
Smalltalk все это объект "
(что было бы более точно
выражается как «все значения являются объектами»,
как переменные нет).