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

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

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

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

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

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

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

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2009-08-11 08:46 am (UTC) - Expand

(no subject)

From: [personal profile] alll - Date: 2009-08-11 09:43 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2009-08-13 08:41 pm (UTC) - Expand

(no subject)

From: [identity profile] aamonster.livejournal.com - Date: 2009-08-11 10:01 am (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2009-08-11 12:41 pm (UTC) - Expand

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

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

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

(no subject)

From: [identity profile] mr-aleph.livejournal.com - Date: 2009-08-11 10:16 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 10:18 am (UTC) - Expand

(no subject)

From: [identity profile] mr-aleph.livejournal.com - Date: 2009-08-11 10:47 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 10:55 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 10:17 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 10:23 am (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2009-08-11 12:41 pm (UTC) - Expand

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2009-08-11 10:35 pm (UTC) - Expand

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2009-08-12 11:52 pm (UTC) - Expand

Date: 2009-08-13 08:46 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
У любой, подчёркиваю любой самой пиздатой библиотеки всегда будут проблемы интеграции.
Любой код, используемый повторно, имеет эту клятую проблему.
Интеграция библиотеки заставляет предполагать о идиомах и парадишмах приложения, которое использует эту библиотеку.
Потому не может существовать "единственного решения" даже в (прости хосподи) визуал байсике.

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

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

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

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

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

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

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2009-08-11 10:14 pm (UTC) - Expand

(no subject)

From: [identity profile] aamonster.livejournal.com - Date: 2009-08-12 06:34 am (UTC) - Expand

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

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

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

Date: 2009-08-11 10:37 am (UTC)
From: [identity profile] volodymir-k.livejournal.com
> там же половина советов сводится к "имитируйте функциональное программирование

- Таких цитат там нету
- Если Вы думаете, что они Неявно Намекают, то... авторство этой идеи, боюсь, не их.


Хотелось бы пример, каким образом ActiveRecord vs Table Data Gateway имеет отношение к "функциональщине".

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2009-08-11 10:50 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 10:52 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2009-08-11 11:00 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 10:56 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 10:57 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2009-08-11 11:00 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2009-08-11 11:00 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 11:01 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 11:05 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 11:03 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2009-08-11 11:06 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 11:02 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 10:52 am (UTC) - Expand

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2009-08-11 12:40 pm (UTC) - Expand

(no subject)

From: [identity profile] aamonster.livejournal.com - Date: 2009-08-12 06:38 am (UTC) - Expand

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2009-08-11 12:45 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 12:52 pm (UTC) - Expand

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2009-08-11 02:25 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-08-11 03:22 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2009-08-13 08:52 pm (UTC) - Expand

Date: 2009-08-11 12:25 pm (UTC)
From: [identity profile] guamoka.livejournal.com
Ребе, дело в том, что применение либо не применение паттернов не решают проблемы с головой у разработчика. Поэтому, что с фп, что с паттернами будет результат как со стеклянныс куем:) Кстати, было бы любопытно глянуть на промышленный логгер реализованый на фп языке:) Я думаю, мощь этой травы просто слабо оценна в виду узости целевой аудитории. Может оказаться, что в фп считается удобным- это всего лишь через жопу левой рукой в отличие через жопу правой как в жаббе.

Date: 2009-08-11 01:23 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я думаю, что если на Haskell писать реальный проект, которому нужны логгеры - привлекательность резко потеряется, т.к. логгирование это априори побочные эффекты, а для них нужно тащить за собой IO :)

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 06:34 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 06:39 pm (UTC) - Expand

(no subject)

From: [identity profile] mibori.livejournal.com - Date: 2009-08-11 06:52 pm (UTC) - Expand

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 06:57 pm (UTC) - Expand

(no subject)

From: [identity profile] mibori.livejournal.com - Date: 2009-08-11 07:09 pm (UTC) - Expand

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 07:15 pm (UTC) - Expand

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 07:01 pm (UTC) - Expand

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 07:15 pm (UTC) - Expand

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 07:20 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-11 07:25 pm (UTC) - Expand

(no subject)

From: [identity profile] migmit.vox.com - Date: 2009-08-11 07:36 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2009-08-11 10:37 pm (UTC) - Expand

(no subject)

From: [identity profile] zelych.livejournal.com - Date: 2009-08-12 01:44 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-12 02:01 pm (UTC) - Expand

(no subject)

From: [identity profile] zelych.livejournal.com - Date: 2009-08-12 02:08 pm (UTC) - Expand

Date: 2009-08-11 05:23 pm (UTC)
From: [identity profile] archangel-rhn.livejournal.com
Этот мир совершенно сомнительный для опытных сишников. Даже нету обыкновенных указателей.

Date: 2009-08-11 05:29 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ну блин, ты бы еще отсутствие ассемблерных конструкций вспомнил. Указатели вообще, а тем более в языке с автоматической сборкой мусора это нечеловеческий ад, который не нужен.
Хуже всего, когда из такого языка приходится взаимодействовать с низким уровнем, вроде дров железа или там звуковой подсистемой - я сейчас уже полдня ловлю ошибку нарушения защиты памяти в таком коде, будь он неладен.

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2009-08-13 08:54 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-08-13 09:01 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2009-08-13 09:03 pm (UTC) - Expand

Date: 2009-08-11 06:55 pm (UTC)
From: [identity profile] mibori.livejournal.com
есть :)
и очень хорошо сделанные :)

(no subject)

From: [identity profile] archangel-rhn.livejournal.com - Date: 2009-08-25 06:09 pm (UTC) - Expand

(no subject)

From: [identity profile] mibori.livejournal.com - Date: 2009-08-25 06:13 pm (UTC) - Expand

(no subject)

From: [identity profile] archangel-rhn.livejournal.com - Date: 2009-08-25 11:01 pm (UTC) - Expand

(no subject)

From: [identity profile] mibori.livejournal.com - Date: 2009-08-26 06:14 am (UTC) - Expand

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 15th, 2025 09:57 pm
Powered by Dreamwidth Studios