Обсуждение:Сравнение языков программирования (объектно-ориентированное программирование)

Больше языков

Кто-нибудь, кто знаком с Smalltalk или Objective-C, должен добавить их в сравнения. Спасибо, -- 164.67.59.123 ( talk ) 01:56, 20 октября 2008 (UTC) [ ответить ]

Я знаком, но все, что я здесь вижу, это не Smalltalk.
Эта страница в основном состоит из синтаксического сахара. В Smalltalk (почти) нет синтаксического сахара.
САМАЯ важная функция Smalltalk:

состояние системы изменяется путем отправки сообщений объектам

Когда объект получает сообщение, он реагирует, выполняя метод, который является небольшой процедурой.
Этот метод, в свою очередь, отправляет другие сообщения другим объектам...
Поведение объекта определяется его классом (словарем методов, запускаемых сообщениями).

Вторая особенность Smalltalk:

все является объектом

включая:

  • классы и методы, при этом манипулирование (и создание) классов осуществляется путем отправки им сообщений;
  • параллельный процесс или поток выполнения; таким образом, создание/синхронизация/уничтожение процессов выполняется путем отправки сообщений
  • контекст выполнения, а значит, манипулирование стеком вызовов и т. д. возможно путем простой отправки сообщений в специальную переменную thisContext.
  • Замыкания блоков, которые похожи на анонимные методы, закрывающие контекст другого метода.

Программный доступ к контексту выполнения в сочетании с использованием замыканий блоков позволяет реализовать мощную обработку исключений/сопрограмм и т. д. без какого-либо синтаксического сахара.

Сообщения используются повсеместно, в частности:

  • Синтаксис для объявления класса отсутствует, класс создается/изменяется путем отправки сообщения суперклассу.
  • В языке Smalltalk нет ни условного перехода, ни безусловного перехода/перехода, поэтому нет структур управления. Фактически, прямое ветвление контролируется полиморфной диспетчеризацией сообщений, а обратное ветвление — рекурсией, поэтому структуры управления — это просто сообщения среди прочих, использующие BlockClosure, и новые могут быть изобретены по желанию.
Вселенная объектов, образующих ограниченную систему, постепенно создается путем отправки сообщений уже существующим объектам.

Поскольку эти объекты включают потоки выполнения, систему можно рассматривать как набор взаимодействующих объектов.
Использование сообщения везде подразумевает, что Smalltalk IDE работает напрямую и активно в этой системе в памяти.
Образ этой памяти можно сделать моментальным снимком на диск в любое время и перезапустить позже (вспомните работу в режиме гибернации на ноутбуках).

Сообщения и правильно определенная виртуальная машина, работающая в объединенной системе, обеспечивают такие возможности рефлексии, как:

  • запрос, какое сообщение класс объекта может понять::,
  • создание массива, который собирает все экземпляры определенного класса, в частности, перечисляет все классы в системе
  • перечислить все объекты в системе

Эти возможности позволяют реализовать всю IDE на языке Smalltalk и встроить ее в систему (включая отладчик и компилятор).

Возможности рефлексии достаточно сильны, так что сам синтаксис языка можно оперативно расширять/изменять.

Где эти функции вписываются в эту страницу.
С чем их можно сравнить? — Предыдущий неподписанный комментарий добавлен 77.204.207.50 (обсуждение) 23:39, 16 февраля 2011 (UTC) [ ответить ]

Я удивлен, что Lisp не упомянут. Я не знаю достаточно, чтобы быть полезным, но, вероятно, его следует включить. — Предыдущий неподписанный комментарий, добавленный Aero-Plex ( обсуждениевклад ) 21:04, 2 октября 2011 (UTC) [ ответить ]


В Java нет метода «dispose» — указанная информация неверна и должна быть удалена. См. Object Documentation. — Предыдущий неподписанный комментарий добавлен 98.213.109.106 ( обсуждение ) 05:32, 19 февраля 2013 (UTC) [ ответить ]

сделано, хотя вы могли бы сделать это и сами ;) - Njol  # T · C 18:29, 15 октября 2013 (UTC) [ ответить ]

Содержание таблицы

Что должен показать такой синтаксис: class *variable = new class«(parameters)»;? Ключевое слово classне является именем типа, поэтому синтаксис предложения недействителен. Возможно, если «и »намереваются окружить метасинтаксическую переменную, это может быть понятно, но тогда это должно быть «class_name» *variable = new «class_name» «(parameters)»;. Но почему бы просто не использовать курсив вместо «и »? Rursus dixit. ( m bork 3 !) 02:41, 10 января 2023 (UTC) [ ответить ]

Retrieved from "https://en.wikipedia.org/w/index.php?title=Talk:Comparison_of_programming_languages_(object-oriented_programming)&oldid=1201080259"