LINUX.ORG.RU
ФорумTalks

исключения и Алан Кей

 , ,


0

1

На сем форуме иногда можно встретить мнения, что все существующие парадигмы программирования являются частным случаем ООП, в определении создателя первоначального варианта термина Алана Кея.

«ООП для меня это сообщения, локальное удержание и защита, скрытие состояния и позднее связывание всего. Это можно сделать в Smalltalk и в LISP.»

Доля истины в этом есть, т.к., можно легко доказать, что процедурное и функциональное программирование в таком определении являются частными случаями ООП, т.к. функции тоже являются объектами. Правда, в случае процедурного программирования придётся закрыть глаза, как минимум, на скрытие состояния.

Однако, концепция исключений (хотя бы в С++ варианте), похоже, всё же не вписывается в концепцию ООП как частный случай. Т.к. исключения являются сигналами, но не сообщениями (за отсутствием конкретных адресатов). Т.е., конкретного объекта, ловящего исключения может и не быть, даже NULL объекта.

Так что, исключения — не частный случай АланКеевского ООП?

Перемещено tailgunner из development

★★★★★

за отсутствием конкретных адресатов

Контекст\скоуп\область видимости - всё это тоже объект. Просто не всякий рантайм языка предоставляет тебе возможность работать с ними на прямую.

Так что адресат есть у всего и всегда. А еще у объектов есть вариации dontunderstand, которым они могут ловит что угодно и пробрасывать дальше (так же как в армии дублируются команды).

int64
()

И да, в идеале сообщения - это тоже объекты. Просто не каждый язык тебе их сразу так представляет.

Что до традиционных мейнстримовых языков с методами, то там сообщения это не методы, как многие полагают, а всякие get\set\call\iterate и прочие штуки. То есть, если вызов метода obj.ololo(x, y) переводить на сообщения, то это посылка объекту obj сообщения get с параметром ololo, а потом тому, что придет, посылка сообщения call с параметрами x, y

Сами сообщения вполне себе объекты. В реальном мире у любого сообщения, что до тебя доносят есть как внешнее, так и внутреннее состояние (смысл).

int64
()
Ответ на: комментарий от int64

Контекст\скоуп\область видимости - всё это тоже объект.

а исключения им и не передают сигнал

next_time ★★★★★
() автор топика
Ответ на: комментарий от next_time

Я это написал к тому, что абсолютно все можно рассматривать как объект. Поток выполнения ровно так же. У него есть состояние - номер операции, стек, етк.

Так что исключения, даже когда они перехватываются самым низким уровнем - прерываниями, это все равно суть передача сообщения.

Помимо прерываний, они могут перехватываться исполнителем высокого уровня рантаймом\интепретатором языка.

int64
()

закрыть глаза

Если закрыть глаза на отсутствие хера, бабушку можно рассматривать как частный случай дедушки

goingUp ★★★★★
()
Ответ на: комментарий от int64

Так что исключения, даже когда они перехватываются самым низким уровнем - прерываниями, это все равно суть передача сообщения.

нет, так как сообщения — это часть концепции, а рантайм/прерывания — реализация

next_time ★★★★★
() автор топика
Последнее исправление: next_time (всего исправлений: 1)
Ответ на: комментарий от goingUp

так бабушка и есть частный случай дедушки и наоборот: генетической информации в каждом человеке достаточно, чтобы воспроизвести себе подобного любого пола

next_time ★★★★★
() автор топика
Ответ на: комментарий от next_time

так бабушка и есть частный случай дедушки и наоборот

Нет. Если А включает в себя Б и Б включает в себя А, то А=Б. И по обе стороны знака равенства будет бабушка и дедушка, а не их генетическая информация.

Ты вообще посмотри со стороны, что за бред ты несешь в ОП. «ООП для меня это сообщения, локальное удержание и защита, скрытие состояния и позднее связывание всего» из этого ты делаешь вывод «что процедурное и функциональное программирование в таком определении являются частными случаями ООП» (неправильный), а потом говоришь, что C++ мол не ООП язык, потому что там исключения.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

а потом говоришь, что C++ мол не ООП язык, потому что там исключения.

где я такое сказал?

И по обе стороны знака равенства будет бабушка и дедушка, а не их генетическая информация.

каждый из которых определяется генетической информацией

next_time ★★★★★
() автор топика
Ответ на: комментарий от next_time

каждый из которых определяется генетической информацией

man «Y-хромосома» и «митохондрия».

baka-kun ★★★★★
()

C++ не ООП, хватит кушать общемифы, objective C, smalltalk - true OOP, C++ скорее некий «мультипарадигменный» инструмент, где каждая парадигма в той или иной степени корявости реализована, что то лучше что то хуже. и так уж честно то OOP в варианте C++ - не самое лучшее.

alwayslate ★★
()
Ответ на: комментарий от next_time

тут вопрос про экзепшены, а не про С++

так я ж и отвечаю про C++ в котором исключения - одна из форм что делает его не OOP lang. Или это тоже надо было пояснить ?

alwayslate ★★
()
Ответ на: комментарий от next_time

каждый из которых определяется генетической информацией

Я как-то изучал общую генетику. Когда вижу как вы свободно используете термин `генетическая информация`, мне становится немного смешно. До этого термина надо ещё «доползти», вы тут используете интуитивное определение. Если же думаешь, что используешь собирательное определение, давай, дерзай - напиши это определение. И, ведь, государству для обслуги нефтяной трубы+охраны не нужны образованные люди ...

pacify ★★★★★
()
Ответ на: комментарий от pacify

Если же думаешь, что используешь собирательное определение, давай, дерзай - напиши это определение.

а зачем?

next_time ★★★★★
() автор топика
Ответ на: комментарий от system-root

от химии до сопромата надо, это тебе не про смолтолк трещать

Я лишь хотел заметить, что кругозор пользователей FidoNet был несколько больше чем ⌀1mm, и тут химия и сопромат не при чём.

pacify ★★★★★
()

Доля истины в этом есть, т.к., можно легко доказать, что процедурное и функциональное программирование в таком определении являются частными случаями ООП, т.к. функции тоже являются объектами. Правда, в случае процедурного программирования придётся закрыть глаза, как минимум, на скрытие состояния.

Докажи. Пока что выглядит, как попытка натянуть сову на глобус.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

А FidoNet-то тут здесь причем

За что прощать-то? FidoNet - иллюстрация того, как грамотно и уважительно должны общаться люди. Я про модерируемые конференции типа RU.UNIX.PROG, RU.WEAPON в конце 90-х начале 2000-х.

pacify ★★★★★
()
Ответ на: комментарий от pacify

За что прощать-то? FidoNet - иллюстрация того, как грамотно и уважительно должны общаться люди. Я про модерируемые конференции типа RU.UNIX.PROG, RU.WEAPON в конце 90-х начале 2000-х.

Ты просто очень внезапно заговорил про Фидо, и я не сразу понял, к чему.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Ты просто очень внезапно заговорил про Фидо

Я успел застать только последние его годы, перед фактической кончиной 2006-2007го. В 2004-2005 в фидо велось много разговоров, какое болото этот «интернет». Но «что делать» было риторическим вопросом. Роман Каршиев должен хорошо помнить это время.

pacify ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.