L (livelight) wrote,
L
livelight

Category:

Кровавый АОП

Вместо эпиграфа:
#define TRUE (rand() > 0.1 ? TRUE : FALSE) // happy debugging losers


Последние пол-года по работе погружаюсь в тёмные недра кровавого энтерпрайза. Всё на Java, как и раньше, но если раньше мы собирали большую 100500-компонентную платформу собственными инструментами, заточенными под под real-time, то тут пришлось приобщиться ко всяческим модным в мире кровавого энтерпрайза фреймворкам, технологиям, методологиям, парадигмам и прочей НЁХ, с Ораклом и пифиями.

В то время как базовая Ява-платформа под руководством вполне математически подкованных людей идёт, на мой взгляд, в целом в хорошем, годном направлении (особое спасибо за ковариантность возвращаемых значений, добавленную в 5-ой Яве, и исключений, появившуюся в начале времён. Без контравариантности как-нибудь проживём, а над тем, как лямбды борются с бойлерплейтом, грустно посмеёмся), кровавый энтерпрайз под управлением сумасшедших инженеров-фреймворкописателей идёт несколько иным путём. И в этом ему помогают идеи АОП, которое тоже придумали математики, не но такие, которые придумали ООП, а злые :)

Есть ли жызнь в тырпырпрайзной платформе? Есть. Но странная.
Замнёнм для ясности, что особо продвинутые втыкают куски на JavaScript или Python, которые на ходу компилируются в байт-код и засовывается в ту же самую JVM, и на ClassLoader hell. Это мелочи, самое интересное происходит в другом месте:
Сначала Spring делает свои живительные инъекции, потом тех, кто выжил, добивает своими инъекциями guice, после чего это всё это скармливается EJB-контейнеру, но некоторым не хватает даже этих издевательств, и тогда они применяют Аспектно-Ориентированное Программирование. Штоб вы знали, каждый из этих инструментов в той или иной степени перехреначивает попавший в его руки код, так что реально выполняется не [только] то, что написано в сорцах, но [и] что-то ещё, в зависимости от каких-нибудь конфигов (которые, впрочем, обычно ещё можно локализовать), а ещё от кода других компонентов (каковой не всегда ещё обнаружишь), пожелавших понастраивать все эти фреймворки и контейнеры, и чёрт знает чего ещё, но АОП переплёвывает все предыдущие пункты легко и непринуждённо.

Как говорят физики, на каждое тело во Вселенной одновременно действуют все физические законы оной Вселенной, включая ещё не открытые. Шизотерики могут добавлять про мир как голограмму, и вот вы в Крыжополе плюнули на асфальт, а в Китае в результате съели собаку. Кровавый АОП делает примерно то же самое с исполняемым кодом: на программу, насильно представленную в виде многомерного пространства аспектов, внезапно начинает влиять ВСЁ. Все компоненты, которые описывают какой-нибудь аспект, все написанные для них (или не для них) аннотации, все запендюренные в платформу инъекции, все конфиг-файлы (в том числе занимающиеся подключением аспектов... или забывшие это сделать), размазанные тонким слоем по энтерпрайз-платформе, все настройки, похороненные в глубинах БД... В общем, всё! И чтобы понять, как что-то будет работать, надо на всякий случай заглянуть ВСЮДУ. А если что-то случилось, то для того, чтобы понять, почему оно повело себя именно так, надо опять же заглянуть ВСЮДУ.

Вобщем, создатели кровавого энтерпрайза вообще и АОП в частности шли долгим и мучительным путём, но в конце концов смогли добиться того, чтобы на Яве можно было создавать фреймворки для автоматизации многофакторного и многомерного отстрела собственных ног в стиле Си (смотри эпиграф), или C++ (где для этой цели служит гораздо более продвинутый механизм переопределения операторов, так что, увидев какой-нибудь "+" или "=", никогда нельзя было догадаться, что же за код исполнится в этом месте на самом деле, пока не перелопатишь тонны кода), или любого другого, славящегося особо большими расстояниями между местом, где что-то применяется, и местом, где можно посмотреть, что же это за хрень такая здесь будет работать на самом деле.

Оригинал поста: http://livelight.dreamwidth.org/455338.html.
Комментов там: comment count unavailable
Tags: физматпрог
Subscribe

  • Фейсбучиное озеро

    Вот пишут: Когда рухнул фейсбук, первое, что все вспомнили, — ГКЧПутч с «Лебединым озером». Хотя это было гораздо больше похоже на пожар на…

  • Стыренное

    Сказка про работника по имени Балдев (в ней нет попа, зато будет сорок фривольно одетых дев) Жил-был корпоративный Боб. Хороший парень, не сноб,…

  • Про индукцию

    А вот пишут, что увеличивается количество случаев, когда Тик-Ток индуцирует лицевые тики у подростков. Осталось выяснить, где он индуцирует токи.…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments