metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-08-11 10:19 am

А вот теперь пример безумия

В мире жабы(в смысле языка програмирования) есть какая-то тонкая шиза, которая порождает миллиарды фреймворков.
Вот пример про логгирование. Ну блин, как можно столько наворотить на пустом месте?

Самая хохма там - это то, что некоторые упоминают использование логгеров через дополнительный уровень абстракции. Мне иногда для вывода в текстовый лог и на экран юзеру приходится делать обвязку, дословно дублирующую интерфейс логгера, и меня это напрягает, потому что это натурально тупая копипаста. А народ такое массово использует и не парится.

По-моему, избавление от шизы надо начать с сжигания GoF и фаулера на костре из их книжек. А затем внедрять в мейнстримные языки всякую функциональщину, вроде функций высшего порядка, каррирования и вывода типов, после чего половина врапперов, фасадов и прочего копипастного мрака становится не нужна.

[identity profile] veter-r-r.livejournal.com 2009-08-11 08:07 am (UTC)(link)
Самое страшное, что они потом реально разбираются в своих пяти слоях абстракции для вывода "Hello world" в логи. Вот тогда-то я понимаю, почему у них зарплаты в два раза больше.

[identity profile] dmzlj.livejournal.com 2009-08-11 08:12 am (UTC)(link)
Да. Именно сжигать книги GoF. А апологетов подвергать негативному мотивированию, пока не поймут Правду.

[identity profile] theiced.livejournal.com 2009-08-11 08:37 am (UTC)(link)
а чо за GoF?

[identity profile] mr-aleph.livejournal.com 2009-08-11 08:40 am (UTC)(link)
да ну... GoF-талмуд имеет право на существование... он ведь фактически об умении видеть абстракции в паутине конкретных сущностей, а без этого нигде ничего не получится...

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

[identity profile] mr-aleph.livejournal.com 2009-08-11 08:40 am (UTC)(link)
а чем вам эта книга не угодила?

[identity profile] g-rub.livejournal.com 2009-08-11 08:41 am (UTC)(link)
Gang of Four.
Паттерны проектирования, всё такое.

[identity profile] metaclass.livejournal.com 2009-08-11 08:44 am (UTC)(link)
Gang of Four, Design Patterns.
На пару с Мартином Фаулером это корень зла всех паттернов, слоев абстракции, фасадов, проксей, врапперов и прочих вещей, которые из проектов делают гирлянды мелких копипастных классов.

[identity profile] theiced.livejournal.com 2009-08-11 08:46 am (UTC)(link)
ааа - я пробовал эти каки чейтать - это для индусов.

[identity profile] henu3detb.livejournal.com 2009-08-11 09:04 am (UTC)(link)
А что не так с GoF?

[identity profile] volodymir-k.livejournal.com 2009-08-11 09:16 am (UTC)(link)
Хунвейбинство.

Вы, дотнетчики, просто привыкли, что существует Одно Решение от Единственного Источника. И что этот источник на вас плюёт, не желая расширять библиотеки. Ваш log4net не вошёл ведь в стандарт? А у явистов в какой-то форме пошёл.

Фреймворков логгирования не миллион, а три. Ну четыре.

Хотя да, я во многих проектах видел свои обёртки, но они всегда имели свои особенности.

[identity profile] metaclass.livejournal.com 2009-08-11 09:21 am (UTC)(link)
Так одно решение - это очевидно лучше чем четыре, даже если оно не вошло в стандарт(которого и нет, в общем-то). Если кому-то понадобится новая функциональность - проще ж пропихнуть ее в один фреймворк и оно появится у всех.
По-моему, очевидно, что у правильно поставленной задачи не может быть четыре отличающихся правильных решения, а только одно. Четыре решения означают или неправильную постановку задачи, или частные случаи одного правильного решения.

[identity profile] 1ceheart.livejournal.com 2009-08-11 09:25 am (UTC)(link)
Это вы, ребе, под макось не писали. Все жабовыверты - детский лепет по сравнению с седалищным энцефалитом разработчиков из Apple. Начиная от некрозоопедоязыка Objective C 2.0, и заканчивания применением паттернов™ везде, где только можно.

"А теперь смотрите, как мы легко и удобно можем сохранить значение типа int в файл: [простыня на три страницы шизобреда]." - это вот у них норма жизни. Я ни разу не утрирую :(

[personal profile] alll 2009-08-11 09:43 am (UTC)(link)
Ну да, а учителя фехтования - корень всех бытовых убийств по пьянке, всех этих "сорок ножевых ранений из которых пятнадцать смертельных".

[identity profile] dmzlj.livejournal.com 2009-08-11 09:58 am (UTC)(link)
Чувак, прочитал - и думает что понимает, Как Надо. Если бы книжка была написана в ключе, "как можно", а не "как нужно", и если бы авторы не думали, что изобрели какую-то фундаментальную хрень, а не пачку частных, но не лишенных иногда остроумности приемов - то все могло бы сложиться иначе.

Но когда проектировщик думает, что задачу надо декомпозировать на паттерны GoF - все, приплыли.

[identity profile] aamonster.livejournal.com 2009-08-11 09:59 am (UTC)(link)
(ненавидяще) Ну нельзя же так напоминать людям об их несчастье (это про функциональщину).

Впрочем, надеюсь, с уходом на C# мне полегчает...

[identity profile] aamonster.livejournal.com 2009-08-11 10:01 am (UTC)(link)
По сравнению с Александреску они белые и пушистые.

[identity profile] mr-aleph.livejournal.com 2009-08-11 10:16 am (UTC)(link)
вы давно GoF читали?

[identity profile] metaclass.livejournal.com 2009-08-11 10:17 am (UTC)(link)
Эту книгу можно читать только после того, как сам придумал хотя бы часть приведенных в ней паттернов. Тогда она воспринимается более правильно, чем если ее сначала читать, а потом пытаться все задачи натягивать на паттерны.

[identity profile] dmzlj.livejournal.com 2009-08-11 10:18 am (UTC)(link)
В 2000-м или 99-ом, что-ли. Зато вот людей, ушибленных GoF видел за это время столько... Как и примеров их творчества.

[identity profile] volodymir-k.livejournal.com 2009-08-11 10:21 am (UTC)(link)
> Так одно решение - это очевидно лучше чем четыре

Нет, неочевидно.
Не хотят люди зачем-то в одной ОС сидеть. Хотят разных ОС.

> проще ж пропихнуть ее в один фреймворк и оно появится у всех

Я эту мысль не понимаю. Если мне (1%) хочется логгировать контекст пользователя, другому (1%) слой кода, а третьему (тоже 1%) описанный в доке "класс сообщения", то никто никуда не пихает, а пишут свои обёртки.

> у правильно поставленной задачи не может быть четыре отличающихся правильных решения

Задач, если Вы не заметили, штук 20. Разных. Почитайте про стоки логов, форматтеры, конфигураторы (особенно NDC), анализаторы, аудит, про адаптивное исправление. Идей много.

И довольно наивно слушать, что существует некий супермозг, который "правильно поставит задачу" на всю историю сразу. Логгинг вообще-то не считался стандартной задачей, скажем с Си нету такого в stdlib. Люди начали писать для себя, другим понравилось, вот и появилась тема.

[identity profile] metaclass.livejournal.com 2009-08-11 10:22 am (UTC)(link)
Нет, не полегчает, там тоже "паттерны, GoF, получить бесплатно граф из 10000 классов в нагрузку с червями и жабами".

[identity profile] dmzlj.livejournal.com 2009-08-11 10:23 am (UTC)(link)
Так пока не прочитал - не поймешь, что ты придумал. Не, GoF это адъ. Я как сейчас помню - чтение GoF совпало с разработкой парсера-конвертера RTF. А там в примерах как раз ОНО.
Оба!!! подумал я. И оказался поимет два раза (Builder и Chain Of Responsibility, как щас помню). Пока понял, что авторы врядли сильно глубоко вникали в задачи, которыми пытались иллюстрировать свои паттерны. А еще там был паттерн, иллюстрированный с ошибкой и не реализующийся на том ЯП, на котором описывался. Или это у Лармана было...

А еще у меня в тиме тогда был чувак, который мне как-то заявил, что учится мыслить паттернами. Вот тут-то меня и накрыло окончательно.

[identity profile] aamonster.livejournal.com 2009-08-11 10:27 am (UTC)(link)
Туда потихоньку закладывают функциональщину. По мелочам, не усердствуя - но самую нужную. Лямбды, безымянные функции, автоматический вывод типов для локальных переменных...

[identity profile] volodymir-k.livejournal.com 2009-08-11 10:29 am (UTC)(link)
Книги Фаулера можно и сжечь, и не читать, только потом Вы будете изобретать точно такие же свои велосипеды, только кривые. Я недавно прочитал и узнал кучу "своих" "изобретений".

И непонятно, зачем Вы зациклились на функциональщине. Это далеко не серебряная пуля, у неё есть свои проблемы, свои классы ошибок. Самое смешное, что на Западе её пиарят как средство для облегчения multicore, а в русской тусовке -- что Там Вся Правда.

[identity profile] metaclass.livejournal.com 2009-08-11 10:34 am (UTC)(link)
Функциональщина и метапрограммирование как раз отменят половину паттернов за ненадобностью, а вторая половина будет реализовываться проще, чем сейчас :)
Я когда читаю фаулера, макконнела и прочих - там же половина советов сводится к "имитируйте функциональное программирование на императивных языках" :)

Page 1 of 4