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

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

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

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

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


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

Date: 2009-08-11 10:50 am (UTC)
From: [identity profile] theiced.livejournal.com
ActiveRecord - это паттерн? охренеть.

Date: 2009-08-11 10:52 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, это же известное дело.

Date: 2009-08-11 11:00 am (UTC)
From: [identity profile] theiced.livejournal.com
ну я тупой в вопросах паттернов, тоже дело известное ;]

Date: 2009-08-11 10:56 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Да ладно, сингтон паттерн, вот где умора то. И там еще были какие-то такие смешные, типа сингтона, но сейчас не вспомню.

Date: 2009-08-11 10:57 am (UTC)
From: [identity profile] dmzlj.livejournal.com
синглтон, блин. еда под кнопку 'л' завалилась.

Date: 2009-08-11 11:00 am (UTC)
From: [identity profile] theiced.livejournal.com
охренеть ещё раз ;]

Date: 2009-08-11 11:00 am (UTC)
From: [identity profile] theiced.livejournal.com
дайте догадаюсь - factory - они тоже паттерны, да?

Date: 2009-08-11 11:01 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Это само собой. Еще там callback паттерн. Причем, по моему там несколько паттернов, которые на самом деле представляют собой коллбеки.

Date: 2009-08-11 11:05 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, кстати, там некоторые паттерны друг от друга отличаются очень слабо, такие отличия пригодны скорее, чтобы на собеседованиях разработчиков заваливать.
Типа "а вот чем отличается прокси, фасад и враппер паттерны?"

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

Date: 2009-08-11 11:06 am (UTC)
From: [identity profile] theiced.livejournal.com
не издеваюсь - ну фактори и фактори - фигли там. оказывается паааааттерн.

итить.

Date: 2009-08-11 11:02 am (UTC)
From: [identity profile] metaclass.livejournal.com
Синглетон это вообще смерть известная.

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

Если бы приложение автоматически выводилось из базы, или база автоматически выводилась из приложений - то не нужно было плясать с бубном, выбирая "как бы нам лучше их связать".

Смех в том, что я Table Data Gateway реализовывал по меньшей мере десяток раз, а название(и то, что у этого метода вообще есть название) узнал только сегодня. Это хорошо демонстрирует необходимость оных паттернов.

Date: 2009-08-11 12:40 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
> способы обскакать на кривой козе фундаментальную проблему - импеданс между базой и приложением

В чём импеданс-то? Что есть detached объекты? Вот уж "фундаментальная проблема"-то.

Ну писали в 1994-1996 люди году на Oracle 4GL (PL SQL + Reports) -- никакого импеданса не было. Чего не хотите?

> Если бы приложение автоматически выводилось из базы - то не нужно было плясать с бубном, выбирая "как бы нам лучше их связать".

???
Никто и не пляшет. Разные классы приложений требуют разные способы и уровни "связки", которые уже изобретены и описаны.

Замечу, что "вывод приложения" и "вывод DAO слоя" это немного разные вещи. Очевидно, что если приложение не состоит из одной БД, то его "вывести" и невозможно. А "вывод DAO слоя из БД" решена десятки раз, от hibernate-tools до scaffold.

Чувствуется, что Вы чего-то хотите, сами не знаете чего.

Date: 2009-08-12 06:38 am (UTC)
From: [identity profile] aamonster.livejournal.com
Ну да. Это именно что хорошо демонстрирует их необходимость. Не необходимость книжки про паттерны - необходимость самих паттернов. Из которых треть самоочевидна и не замечаешь, что их используешь, еще треть - обход ограничений языка (пламенный привет Александреску), а оставшаяся треть по разным причинам не всплывала в практике - или задач на них не было, или не додумался до такого решения.

Date: 2009-08-11 12:45 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
А вот Вам на закуску пример функицонального программирования:

quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)

как насчёт возможных ошибок?

Date: 2009-08-11 12:52 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Брейнфак императивный, например. И что? Те кто знает этот язык - поймут что здесь. Те кто не знает - поймут на тех языках, которые знают.

Date: 2009-08-11 02:25 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
Дык J -- язык серьёзный, на нём реально пишут для бизнеса за бабло.

Date: 2009-08-11 03:22 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Ну и отлично. Я не сомневаюсь что там все +- ок, если бы я его знал, то наверное смог бы сказать, что там с кодом.

Ну, допустим, перл тоже промышленный язык. На нем тоже можно написать такой код, что хрен кто поймет, особенно, кто перла не знает.

На haskell реализация этого quicksort-like алгоритма может выглядеть очень выразительно. Даже для тех, кто не знает языка.

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. 25th, 2025 03:58 pm
Powered by Dreamwidth Studios