Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 3576 26-03-2007 20:18 | |
Ответ на »сообщение 3575« (Jack Of Shadows)
___________________________
Аспекты это функциональная надстройка поверх ОО системы.
Понятно что функциональному подходу еще одна функциональная же надстройка над ней не нужна.
Мысль понятна.
Спасибо!
Перерыв по технической причине (утро уже). :)
№ 3575 26-03-2007 20:04 | |
Ответ на »сообщение 3574« (AVC)
___________________________
Чему именно обязаны аспекты в CLOS своим существованием: функциональности Лиспа или развитой в CLOS объектной системе?
По моему я уже ответил. Обьектной системе. В чисто функциональном подходе аспекты на черта не нужны.
Они становятся нужны только тогда когда вы создаете жесткую структуру ООП. Но при этом своим всепроникновением разрушают основные принципы ОО, инкапсуляцию, наследование.
Аспекты это функциональная надстройка поверх ОО системы.
Понятно что функциональному подходу еще одна функциональная же надстройка над ней не нужна.
№ 3574 26-03-2007 19:45 | |
Ответ на »сообщение 3573« (Jack Of Shadows)
___________________________
Ну а что касается аспектов как синтаксического сахара, то например в CLOS (обьектная система лиспа) они есть.
К сожалению, именно CLOS не дает мне окончательного ответа. :)
Чему именно обязаны аспекты в CLOS своим существованием: функциональности Лиспа или развитой в CLOS объектной системе?
№ 3573 26-03-2007 19:38 | |
Ответ на »сообщение 3572« (AVC)
___________________________
Во многих ли ФЯ поддерживаются аспекты (хотя бы в качестве синтаксического сахара)?
Начать с того что в ФЯ аспекты на черта не сдались (также как и design patterns)
В ФЯ эта же самая функциональность реализуется через higher order functions.
Ну а что касается аспектов как синтаксического сахара, то например в CLOS (обьектная система лиспа) они есть.
№ 3572 26-03-2007 19:25 | |
Ответ на »сообщение 3569« (Jack Of Shadows)
___________________________
Они вытекают из принципа higher order functions.
По существу вы передаете метод класса (функцию) как параметр в другую функцию (аспект)
При чем делаете это в декларативном виде. ТО есть описываете взаимосвязи через pointcuts а не передаете методы явно в коде.
( С некоторым сомнением.) Допустим.
Во многих ли ФЯ поддерживаются аспекты (хотя бы в качестве синтаксического сахара)?
Если посмотреть с другой стороны, то довольно похоже на перехват сообщений в ООП.
Т.е. как бы ввели в систему обмена сообщениями своего "шпиона" и дали ему список инструкций, как поступать с сообщениями такого-то вида.
№ 3571 26-03-2007 19:16 | |
Ответ на »сообщение 3566« (Jack Of Shadows)
___________________________
Можно и базовый класс конечно.
А вообще механизм навешивания аспектов чрезвычайно гибок.
Это да.
Больше всего напоминает мощный специализированный препроцессор.
Все это вызывает у меня определенные сомнения.
Метод, позволяющий менять любую деталь в отдельности, -- вряд ли хороший метод программирования, т.к. нет способа обеспечить программные инварианты.
Обязательно должны быть ограничения и какие-то "нельзя".
№ 3570 26-03-2007 19:11 | |
Ответ на »сообщение 3563« (Илья Ермаков)
___________________________
>>>Тупик наследования реализации. "Уж сколько раз твердили миру" - скрывайте реализацию, наследуйтесь только по интерфейсам, создавайте объекты только через фабрики, делайте гомогенные иерархии...
Сколько лет в этом тупике, все никак не упрусь :)
>>>Не слушаются, а потом требуется новые средства в языке плодить, которые позволят "хакнуть" понавернутые иерархии наследования - и заткнуть в середину перехватчики для реализации аспектов...
Опять таки ни разу не потребовались.
"А вы на шкаф заберитесь"(с)Старый анекдот.
Ну почему постоянно приводят примеры безграмотного использования ООП и на этом основании делают вывод о его "неправильности"?
Не надо так эмоционально. А то я тоже могу еще громче кричать: "Уж сколько раз твердили миру" - не понимаешь задачу, нечего стучать по клавишам. Иерархии объектов должны соответствовать классу решаемых задач. Есть чужой модуль с нужной функциональностью, но без исходников - в топку, подведет в самый неподходящий момент. Мало иметь подходящий инструмент, нужно им правильно пользоваться.
№ 3569 26-03-2007 19:10 | |
Ответ на »сообщение 3568« (AVC)
___________________________
Они вытекают из принципа higher order functions.
По существу вы передаете метод класса (функцию) как параметр в другую функцию (аспект)
При чем делаете это в декларативном виде. ТО есть описываете взаимосвязи через pointcuts а не передаете методы явно в коде.
№ 3568 26-03-2007 19:02 | |
Ответ на »сообщение 3541« (Jack Of Shadows)
___________________________
>>>Аспекты это еще один функциональный механизм, который теперь болтами прикручивается к ООП.
Вопрос из одного только чистого любопытства.
А почему аспекты -- именно функциональный механизм?
Они как-то вытекают из принципа референциальной чистоты, как, например, возможность ленивых вычислений?
№ 3567 26-03-2007 18:31 | |
Ответ на »сообщение 3563« (Илья Ермаков)
___________________________
Илья мы это уже слышали, в обсуждении конструкторов. Все через фабрики обьектов.
Действительно, при правильном проектировании проблем не бывает. :))
Так можно что хош отрицать. И конструктора, и аспекты, и сборшик мусора, и обработку исключений.
При правильном проектировании всего этого просто не должно быть :))
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|