Подтвердить что ты не робот

Как Ruby более объектно-ориентированный, чем Python?

Мац, изобретавший Ruby, сказал, что он разработал язык более объектно-ориентированным, чем Python. Как Ruby более объектно-ориентированный, чем Python?
4b9b3361

Ответ 1

Если вы берете Python с 1993 года и сравниваете его с Ruby, то последний более объектно ориентирован. Однако после капитальный ремонт в Python 2.2 это уже не так. Я бы сказал, что современный Python является объектно-ориентированным, как он получает.

Ответ 2

Одним из примеров, который обычно используется, является len, который в Python является встроенной функцией. Вы можете реализовать специальный __len__ метод в своих объектах, который будет вызываться len, но len по-прежнему является функцией. В Ruby объекты имеют свойство .length свойство/метод, поэтому он выглядит более объектно ориентированным, если вы говорите obj.length, а не len(obj), хотя глубоко под капотом происходит почти то же самое.

Тем не менее, на протяжении многих лет Python перешел к большей объектной ориентации. В настоящее время все объекты (и неявно определяемые пользователем объекты) наследуются от класса object. Также добавлены метаклассы, и многие из встроенных и основных классов библиотеки были организованы в иерархии с помощью ABC (абстрактные базовые классы).

В моем тяжелом использовании Python я никогда не находил его недостающим в отделе OO. Он может делать все, что я хочу, чтобы делать с объектами. Правда, Ruby чувствует себя несколько более чисто OO, но, по крайней мере, по моему опыту это не было действительно практической проблемой.

Ответ 3

От WikiVS,

& hellip; где в Ruby все функции и большинство операторов на самом деле являются методами объекта, ряд функций Python - это процедурные функции, а не методы.

Следующее интервью с создателем Ruby от Matz предоставляет дополнительный контекст для вашего вопроса и выше.

& hellip;

Стюарт: начнем с небольшой истории. Почему вы решили написать Ruby?

Matz. Еще в 1993 году я разговаривал с коллегой по поводу языков сценариев. Меня поразила их сила и возможности. Я чувствовал, что скрипты - это путь.

В качестве долговременного объектно-ориентированного программирования мне показалось, что программирование OO очень подходит для сценариев. Затем я осмотрел Сеть. Я обнаружил, что Perl 5, который еще не выпустил, собирался реализовать функции OO, но это было не совсем то, что я хотел. Я отказался от Perl как объектно-ориентированного языка сценариев.

Затем я наткнулся на Python. Это был интерпретирующий, объектно-ориентированный язык. Но я не чувствовал, что это "скриптовый" язык. Кроме того, это был гибридный язык процедурного программирования и объектно-ориентированного программирования.

Мне нужен язык сценариев, который был более мощным, чем Perl, и более объектно-ориентированным, чем Python. Вот почему я решил создать свой собственный язык.

& hellip;

Ответ 4

Это простой, почти все в Ruby (включая числа) - это объект; нет скалярных значений.