Фэндом

Smalltalk по-русски

Потомки Smalltalk

239статей на
этой вики
Добавить новую страницу
Обсуждение8 Поделиться

Влияние Smalltalk можно обнаружить почти во всех языках, созданных на протяжении 1980-х. Со второй половины 1990-х оно несколько слабеет, поскольку к тому моменту выросло целое поколение людей, считающих объектно-ориентированным языком C++.

Прямые потомки Smalltalk Править

Прямыми потомками Smalltalk предлагается считать только языки, сохранившие следующие его свойства: всё без исключения является объектом; объекты живут в виртуальном образе. Семейство прямых потомков Smalltalk невелико:

Языки, испытавшие влияние Smalltalk и/или Self Править

  • Io
  • Ruby
  • Objective C (по крайней мере, существует такое мнение)
  • Objective Modula-2 (если верить Wikipedia)
  • Python (в несколько меньшей степени)
  • Dylan
  • F-Script (???)
  • AppleScript (???)
  • NewtonScript (???)
  • JavaScript (???)
  • Bistro гибрид? Java + Smalltalk!
  • Newspeak -- новая разработка, которую ведут в недрах Cadence. В настоящее время в Cadence работают три человека, известных в мире Smalltalk: Gilad Bracha, Vasili Bykov, Eliot Miranda. Наши аналитики продолжают анализ данных...

Smalltalk и Objective-C Править

Можно ли считать Objective-C "языком, испытавшим влияние Smalltalk", если в нем объектно-ориентированная модель Smalltalk почти полностью (кроме блоков и сборщика мусора) интегрирована в Си?

Примеры:

1. отправление сообщения (obj - получатель, он же - экземпляр класса (объект или класс, классы - стандартные объекты), message - сообщение (селектор); если param и label непонятны, спрашивайте; "//" - с этого места и до конца строки комментарий (комментарий в стиле BCPL, распространен в "{"-языках, вроде Си, Си++, Java)

[obj message]; //селектор сообщения "message" [obj message:param1]; //селектор сообщения "message:" [obj message:param1 label2:param2]; //селектор сообщения "message:label2"

влияние Си на Смолтолк в Obj-C:

[obj message:param1 ...]; //сообщение с переменным списком параметров (см. vararg в C)

2. интеграция модели (обозначения прежние)

id obj2 = [obj1 message]; //сообщение возвращает результат, если в его декларации не указано обратное. По умолчанию, возвращаемое значение - self (то же самое, что self в Смолтолк), тип данных id (любой объект, динамическая типизация). Объект принадлежит к некоторому классу, имя этого класса можно использовать для статической типизации. Классы - объекты класса Class, определенного в среде времени исполнения (рантайме).

Class* xx = [obj1 message]; //отправка сообщения объекту типа "класс"

[[obj1 message1 message2:[obj2 message3]]; //получатель - результат [obj1 message1, параметр селектора - результат [obj2 message3]

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики