А вот теперь пример безумия
В мире жабы(в смысле языка програмирования) есть какая-то тонкая шиза, которая порождает миллиарды фреймворков.
Вот пример про логгирование. Ну блин, как можно столько наворотить на пустом месте?
Самая хохма там - это то, что некоторые упоминают использование логгеров через дополнительный уровень абстракции. Мне иногда для вывода в текстовый лог и на экран юзеру приходится делать обвязку, дословно дублирующую интерфейс логгера, и меня это напрягает, потому что это натурально тупая копипаста. А народ такое массово использует и не парится.
По-моему, избавление от шизы надо начать с сжигания GoF и фаулера на костре из их книжек. А затем внедрять в мейнстримные языки всякую функциональщину, вроде функций высшего порядка, каррирования и вывода типов, после чего половина врапперов, фасадов и прочего копипастного мрака становится не нужна.
Вот пример про логгирование. Ну блин, как можно столько наворотить на пустом месте?
Самая хохма там - это то, что некоторые упоминают использование логгеров через дополнительный уровень абстракции. Мне иногда для вывода в текстовый лог и на экран юзеру приходится делать обвязку, дословно дублирующую интерфейс логгера, и меня это напрягает, потому что это натурально тупая копипаста. А народ такое массово использует и не парится.
По-моему, избавление от шизы надо начать с сжигания GoF и фаулера на костре из их книжек. А затем внедрять в мейнстримные языки всякую функциональщину, вроде функций высшего порядка, каррирования и вывода типов, после чего половина врапперов, фасадов и прочего копипастного мрака становится не нужна.
no subject
Я когда читаю фаулера, макконнела и прочих - там же половина советов сводится к "имитируйте функциональное программирование на императивных языках" :)
no subject
- Таких цитат там нету
- Если Вы думаете, что они Неявно Намекают, то... авторство этой идеи, боюсь, не их.
Хотелось бы пример, каким образом ActiveRecord vs Table Data Gateway имеет отношение к "функциональщине".
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Типа "а вот чем отличается прокси, фасад и враппер паттерны?"
no subject
Я так понимаю, тут даже само название общепринятое от кого-то из этих отцов-паттерно-основателей идет.
no subject
итить.
no subject
no subject
Если бы приложение автоматически выводилось из базы, или база автоматически выводилась из приложений - то не нужно было плясать с бубном, выбирая "как бы нам лучше их связать".
Смех в том, что я Table Data Gateway реализовывал по меньшей мере десяток раз, а название(и то, что у этого метода вообще есть название) узнал только сегодня. Это хорошо демонстрирует необходимость оных паттернов.
no subject
В чём импеданс-то? Что есть detached объекты? Вот уж "фундаментальная проблема"-то.
Ну писали в 1994-1996 люди году на Oracle 4GL (PL SQL + Reports) -- никакого импеданса не было. Чего не хотите?
> Если бы приложение автоматически выводилось из базы - то не нужно было плясать с бубном, выбирая "как бы нам лучше их связать".
???
Никто и не пляшет. Разные классы приложений требуют разные способы и уровни "связки", которые уже изобретены и описаны.
Замечу, что "вывод приложения" и "вывод DAO слоя" это немного разные вещи. Очевидно, что если приложение не состоит из одной БД, то его "вывести" и невозможно. А "вывод DAO слоя из БД" решена десятки раз, от hibernate-tools до scaffold.
Чувствуется, что Вы чего-то хотите, сами не знаете чего.
no subject
no subject
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
как насчёт возможных ошибок?
no subject
no subject
no subject
Ну, допустим, перл тоже промышленный язык. На нем тоже можно написать такой код, что хрен кто поймет, особенно, кто перла не знает.
На haskell реализация этого quicksort-like алгоритма может выглядеть очень выразительно. Даже для тех, кто не знает языка.
no subject
ФЯПы - тоже всего лишь инструменты.