Обсуждение
Читать и комментировать в ЖЖ ↗
использованию AOP в настоящий момент есть одно серьёзное препятствие
по-настоящему правильная реализация концепции есть только для Java
вся надежда на то, что в следующей итерации JVM станет просто подключать к ней новые языки и, следовательно, процесс портирования AOP-модуля упростится
Комментарий
Реализаций AOP есть множество, и не только для Java. Просто для Java реализаций очень много разных, среди них поэтому легко выбирать плохие и хорошие :)
Серьезные препятствия перечислены в статьях по промышленным применениям: предрассудок, что изменения в тексте программы, вносимые AOP, приводят к меньшей устойчивости сопровождения программы, меньшему пониманию того, как программа работает.
Главное препятствие тут то же, что в функциональном программировании -- требуется особый заворот мозгов, что не каждому программисту легко дается. Отсюда -- малый рынок сбыта, отсюда -- малое число проектов, которые доводятся до товарного вида (все финансирование пока грантовое, или open source -- большие деньги, достаточные для производства продуктов, а не "доказательства концепций" в эту область еще не пришли. И -- непонятно, придут ли, если присматриваться к судьбе "настоящего ООП/Smalltalk" и функционального программирования).
Комментарий
реализаций много, но вменяемая реализация одна: AspectJ. Она принципиально отличается тем, что накладывает аспекты поверх уже скомпилированной программы вмешиваясь в байткод
а FP сейчас как раз на подъёме. В проф-кругах все только о Хаскелле и говорят :)
Комментарий
Так я, вроде, именно про вмешательство в байткод говорю (и ссылку на Piumarta привел, который в VVM обеспечивающие это функции вводит). Не только AspectJ вмешивается в байткод.
Если говорить о "подъеме", то (кроме "логического программирования" типа Prolog, пожалуй ;) сейчас все разные "программирования" на подъеме -- тот же Smalltalk тоже вполне начинает процветать, по мере того, как скорость его приближается к 50% от скорости кода на C, но с сохранением всех его пряников.
Я думаю, после работ Piumarta по синтезу объект-ориентированного и функционального подходов в рамках общей VVM-машины с портированием на десяток платформ в мозгах будет серьезный сдвиг, и можно говорить о новом поколении программирования. Уровень языков (число строк программы на один концепт, который программист пытается сообщить тупому компьютеру) поднимется существенно, оценки Алана Кея и Яна Пиумарты -- число строк в реализации полномасштабной программной среды с нынешних 230000 строк может упасть до 20000 строк. Это значит, что язык может быть выразительней в десяток раз по сравнению с сегодняшним Smalltalk. Ради такого дела в университетах можно и устроить массовый тренинг по заворачиванию мозгов.
Комментарий
Реализаций много: http://en.wikipedia.org/wiki/Aspect-oriented_programming
Какая из них вменяемая, какая нет - черт его знает. Вот только каково практическое применение АОП? Я ищу средство повышения емкости и выразительности языка, скорости разработки, а получаю средство логгирования, абсолютно мне не нужное.
Комментарий
при чём тут логгирование?
Цель AOP очень проста: вынесение избыточно повторяющегося кода во вне не изменяя иерархию объектов
отсюда вытекают и возможные применения
Комментарий
Про трейсинг как основное применение AOP -- это такой миф, на этот миф как очень неудачный антипиар жалуются спецы по AOP. Поглядите на статьи по ссылкам: там совсем-совсем другие примеры (например, кэширование или работа с правами).
Комментарий
Вот при этом тут и логирование. А еще сериализация, маршаллинг, трассировка и еще пяток кроссклассовых задач. И все? Емкостью Сквика и VVM даже и не пахнет.
Комментарий
Новое поколение программирования, похоже, где-то на этом пути - ООП видимо все-таки уже действительно настает конец. Раз уж в Java все это поперло.
Комментарий
Я не понимаю. Ява -- это как раз недоООП. В ООП (Smalltalk) closures были с самого начала.
Комментарий
Дело в том, что лямбда-выражения и функциональные типы - это вообще не ООП. В принципе замыкания-то в Жабе и так есть - вложенные анонимные классы. Тут в другом дело - уже и Java начинает уходить от ООП в сторону FP.
Комментарий
Я понял, у вас и Smalltalk "начал уходить от ООП в момент создания" :)
Комментарий
ST довольно много позаимствовал из лямбда-исчисления (не только замыкания - например - красивая реализация булевских - прямая калька оттуда-же). Что и не удивительно - все-таки весьма значимая и известная вещь, а тогда народ был образованный.
Но дело в том, что сейчас-то идет просто процесс трансформации всего этого в FP. Там в конце еще очень говорящий список фамилий - если знать, кто есть кто.
Комментарий
Вы неправильно понимаете процесс. Стремительно идет интеграция функционального и объектного подходов. Интеграция, а не отход от ООП и переход к функциональному.
Я постил тут (уже неоднократно ;) ссылки про combined object-lambda. Будущее как раз за этим подходом. Лучшее из двух миров, и там в статьях еще теоретическое обоснование, почему любого одного из них -- недостаточно.
Комментарий
"Интеграцию" эту уже лет 20 пытаются осуществить. Оно не скрещивается. Вопрос был только, кто кого сожрет. Сейчас видно кто сжирает.
PS: Собственно и неудивительно - подходы слишком разные - "натурфилософия" против "формальной логики".
Комментарий
Никто никого не сжирает: у вас предвзятый взгляд. Эти "слишком разные подходы" наконец-то объединяются "на равных" -- в рамках общей VVM.
Советую почитать оригинальные тексты Ian Piumarta, чтобы понять суть объединения object-lambda, и почему оно вообще стало возможным. И какие концепты добавляются еще (ибо ООП и лямбдой подходы в программировании не ограничиваются).
Комментарий
Видите ли - FP - это не концепт. Это просто математический формализм. В том и дело - формализм нельзя смешать с "парадигмой" и прочим размахиванием руками. Если "размахивание руками" остается в теме - пролетает формализм. Иначе - формализм сжирает "интуитивные подходы".
Ну это как пытаться сочетать алхимию с химией.
Комментарий
Да-да. Ian Piumarta как раз про формализмы. Формализм object и формализм lambda. Обратите внимание не FP, a lambda.
Ну почитайте тексты, а то с вами неинтересно уже.
Комментарий
Ну дайте ссылку на конкретные статьи - а то, то что мне находится говорит, что Ian Piumarta - молодой INRIA-шный деятель, который пытается высосать что-то "диссертабельное" из 15 лет назад вдоль и поперек истоптанной в том же INRIA темы.
PS: Не никакого "формализма lambda". Есть обычная матлогика, частью которой является лямбда-исчисление (так же как теория типов, теория категорий и проч.). И есть "компьютерная наука". Ну не сочетаются они.
Комментарий
Повторю: http://www.vpri.org/html/words_links/articles_ifnct.htm и еще вот свежая презентация http://www.stanford.edu/class/ee380/Abstracts/070214.html