?

Log in

No account? Create an account

Предыдущий пост Поделиться Следующий пост
Фрейдизм в программировании
lex_kravetski

Некогда дяденька по имени Зигмунд Фрейд придумал новый подход к лечению ментальных недугов человечества. Метод заключался в раскрытии неосознаваемых пациентом мотивов его, пациента поведения. С одной стороны метод был по своему революционен — ведь до этого идея наличия в мышлении бессознательного не была внедрена в широкие массы. С другой стороны метод был замечателен тем, что снимал со врача всякую ответственность за результат, давая врачу возможность сослаться на глубинные комплексы пациента, с которыми может справиться только пациент, а раз не справился, то не хочет. Врач, дескать, сделал что мог — вскрыл эти самые комплексы.

Ментально больной теперь был уже не одним элементом одной из закономерностей, а яркой индивидуальностью, которая хоть в некоторые закономерности и укладывается, но имеет что-то такое своё, персональное, поэтому лечить его надобно не бездушным фабричным методом, а путём поиска личного и уникального. Ну а когда оно уникальное, то извольте выложить много денюжек — как иначе-то?

Заслуга Фрейда в обнаружении бессознательного очевидна. Описанные ими модели уже местами весьма спорны, но имеют здравое зерно. Зато сам подход — это прорыв в манипуляционных технологиях. После Фрейда каждая наука захотела завести свой фрейдизм — с блэкджеком и шлюхами. То есть, не сама наука, конечно, а те околонаучные деятели, которые всегда мечтали ничего не знать, но купаться при этом в шелках.

Фабричный подход подразумевает разработку технологии. Или, по крайней мере, её изучение. Поиск имеющих предсказательную силу закономерностей требует кропотливой работы и предварительного знакомства с научным методом. Вместо этого фрикам и шарлатанам был дарован метод, опирающийся на объяснения задним числом через трансформации некоторого количества заклинаний.

Человек в здравом уме не мог бы заявить, что всё человеческое поведение базируется на вопросах секса (ну, ещё на каких-то там странных взаимоотношениях со смертью). Из ежедневного опыта каждому очевидно, что это не так. Но теперь все знают, что всё именно базируется. Ведь абсолютно любое проявление человеческой психики можно задним числом объяснить через какой-нибудь сексуальный комплекс. Причём, практически через любой (странно, что это никого не настораживает). Объяснить и тем самым «доказать» научность подхода. Хотя вроде бы гражданам с образованием должно быть понятно, что объяснение задним числом никогда не доказывает верность концепции.

Честно говоря, сваливать всё на Фрейда я бы не стал. Хотя ни одна из его книг мной целиком не прочитана, но среди прочитанного нет явного утверждения, что всё от секса и от бессознательного. В его книжках всё выглядит так, будто рассматривается просто один из возможных аспектов человеческой психики. Всеобщность же сему, по ходу, придали уже последователи Фрейда. Но не суть — быть может, в своей практике он как раз зациклен на оном был, я данный вопрос не изучал.

Главное, метод принят на вооружение и активно используется: объяснение всего на свете задним числом, построенное на трансформациях набора заклинаний. «Хочешь съездить в Ирландию — это всё из-за нереализованных в детстве сексуальных переживаний», да.

Вообще процесс преобразования некоторого научного (хотя бы условно научного) тезиса в заклинание для фриков и шарлатанов ещё ждёт своего исследователя. Ведь не каждый тезис становится таковым. Становятся только некоторые. И хотя ряд присущих им черт вроде бы понятен — простота формулировки, не очень тесная связь с сопряжёнными областями, элемент неожиданности, но в пределах понимания среднестатистического человека (позволяющая ему ощутить себя небыдлом), — однако целиком и полностью изложить теорию превращения тезисов в заклинания я не готов.

Вместо этого готов сказать, который «фрейдизм» разыскали себе программисты. Называется он «паттерны проектирования». Сто пудов, паттерны проектирования — это метка небыдла на челе программиста. Да. В то время как быдло-психиатр тратит время на поиск сильнодействующего транквилизатора, превращающего пациента в овощ, элитный психоаналитик даёт клиенту поваляться на диване, поговорить о наболевшем и выложить за это кучу баксов. Причём, не один раз, а годами выкладывать. Ну а поскольку многие пациенты действительно здоровы (их отклонения в пределах нормы), то психоаналитик ещё и статистику успехов соберёт. Ой, отвлёкся.

Так вот, элитный, знающий программист на собеседовании сразу заводит речь про паттерны проектирования. А буде собеседователь заведёт речь об ином, так собеседник её обратно к паттернам сведёт. Почему? Потому что оно элитно. Только элита ведь способна прочитать книжку ни о чём, не требующую вдобавок особых знаний, и заучить набор заклинаний из неё. Ну и самое главное, буде речь о другом — так могут про конкретное что-то спросить. А там сразу швах — отсутствие опыта разом даст о себе знать. Зато когда про паттерны, там всё абстрактно: фабрика-швабрика, обсёрвер-швабсёрвер. Хрен придерёшься.

Вообще, паттерн, как честно сознаётся элитная книжка, это такое ничто — концепция подхода, лишённая конкретной реализации. Квант понимания как и что делать. Богато проиллюстрированная примерами от разработчиков на тему «абстрактное знание не всегда ведёт к успеху» — ведь чуть не половина их примеров работает неправильно, а все примеры в целом написаны плохо понятным и неоптимальным по скорости работы образом.

Многие на этом месте говорят: «но ведь паттерны действительно полезны!». Это да, они полезны. Только они были полезны и без названия «паттерн». Причём, они без него ещё и лучше понятны были. Теперь их объединили под красиво звучащей маркой. И классифицировали. Стало лучше? Да, конечно: теперь половина разговоров содержит в себе элитное слово «паттерн». И каждый второй его произносящий не знает, про что он говорит, но зато небыдло.

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

Пацаны, фабрика, фабричный метод и билдер — это одно и то же. Они отличаются несущественной мелочью, напоминающей попытку поделить машины на синие, зелёные и красные. При этом идея фабрики с самого начала включена в саму концепцию объектно-ориентированного программирования. Все эти фишки с наследованием, они для того и нужны, чтобы программисты пользовались фабриками (как их не назови). Примеры фабрик имеются в любой книжке про ООП в разделе про непосредственно объекты. Только авторы этих книг ещё не знали, что сиё — «паттерн».

Пацаны, прокси, адаптер и медиатор — это одно и то же. Только деление тут уже не по цвету, а по форме кузова. Любое делегирование — это в конечном счёте те самые прокси-медиаторные адаптеры. Вы же не думаете, что до появления «паттернов» никто про делегирование не знал? В любой книжке про ООП, в разделе про инкапсуляцию имеются примеры всего этого.

Пацаны, любая библиотека для создания графических интерфейсов пользователя базируется на обсёрверах. Стандартный вывод зачастую делается через синглтон. Это всё давно уже было, пацаны. В этой книжке не изложено тайное знание — там просто не самым лучшем образом обобщён наиболее важный опыт предыдущих поколений. Не надо думать, что вы теперь гуру, раз книжку прочитали.

В любимой вами книжке, пацаны, в число паттернов не включены контейнеры и потоки. Именно поэтому вы, пацаны, выглядите полными идиотами при попытке устроиться на работу программистом. Ибо без понимания концепций контейнеров и потоков ваши «паттерны» даром никому не упали.

Пацаны, вот это вот надо знать. Именно вот это. Не как называется, а как делается. Про контейнеры и потоки. Про наследование, инкапсуляцию и использование всего этого. Ваши понты на собеседованиях, круто замешанные на использовании красивых слов, нафиг не нужны. Вас обманули, пацаны. Хотя и дали вам взамен возможность обманывать ещё больших лохов в данной отрасли.

Когда я вижу на каком-нибудь форуме яростное обсуждение паттернов с обильным использованием слов типа «обсёрвер» (вместо «нотификация» или «подписка»), когда люди заслышав что-то знакомое в излагаемой концепции первым делом кричат «О! Тут у тебя фабричный метод!» (странно, почему не кричат «Ого! Тут у тебя хэш-мапа!!!»), я сразу вспоминаю анекдот про психоаналитиков:

Встречаются два психоаналитика:

— О, типа, привет, давно не виделись. Может, в гости заедешь?

— Конечно. Сейчас только заправлю мой Феррари Энцо и сразу к тебе.

— Хорошо. В общем, найдёшь без проблем — мою шикарную трёхэтажную виллу издалека видно.

— Мне главное со своей не перепутать. Хорошо хоть, я перед ней огромный фонтан для ориентира поставил.

— Вот бы на него с моего самолёта посмотреть.

— Ну ладно, мы же с тобой взрослые люди. Давай просто достанем и померяемся.


но появляется обратная тенденция - популяризация этой спорной идеи день за днём программирует обывателя на то, что его поведение объясняется сексом и секс занимает всё больше жизни и становится действительно основной причиной следствий.

О том же давно думаю...
В современных "медиа", или какое ещё умное слово описывает различные средства доведения информации до тех, кто её радостно хавает, всё объясняется через "межножье".
Что раньше означало уважительное "мужик"? Что в армии отслужил, что сильный, что много достиг, что отметелил трёх хулиганов в тёмном переулке...
А сейчас? За редким исключением - количество "покрытых самок". Если таких нет, или одна и некрасивая - ты по любому лузер, будь ты хоть трижды крут в каких-либо областях.
И так соотносится всё - размер машины, очков, часов, всего чего угодно - непременно коррелирует с размером члена или титек владельца/владелицы.
На плакате же не только рядом с этой машиной, но и рядом со всем, начиная от дома и заканчивая мусорными баками, непременно полуодетые тётки.
И так повсюду - в кино, в мультах, в играх.
Опять же, появилась козырная отмаза - любую пошлость, затупан и т.д. теперь можно оправдать "сексуальными комплексами".
А потом удивляемся, что у нас мораль видите ли упала...

О! Тут у тебя фабричный метод!

Если речь обо мне (а она обо мне), то я не кричал «О! Тут у тебя фабричный метод!». Я констатировал факт, что у тебя фабричный метод (ибо он у тебя БЫЛ) и сразу ПРЕДЛОЖИЛ использовать дополнительные преимущества этого паттерна. То, что человек сделал РАЦИОНАЛИЗАТОРСКОЕ ПРЕДЛОЖЕНИЕ (можешь принимать его или нет и даже называть дурацким, но оно БЫЛО) от твоего внимания ускользнуло. В памяти осталось только громкое "О!", которое тебе лишь послышалось, ибо его НЕ БЫЛО.

И не надо говорить, что ты уже учел эту возможность: ты предлагал подменять библиотеки - а это отнюдь не одно и то же. Подменяя библиотеку, ты заранее, раз и навсегда меняешь поведение программы. Подменяя аргумент в фабричном методе, ты оставляешь эту возможность юзеру, причем в течение работы программы. И юзер может сам решать: в виде какого виджета выводить ДАННЫЙ диалог. Извини за неуклужий русский, для меня это не рабочий язык.

Так вот, знание паттернов действительно дает иногда возможность использовать то, что давно было сделано другими. Аргумент "я бы и так догадался", как видишь, не канает: мог догадаться, а мог и не догадаться. В принципе, никто не мешает обходиться без паттернов (точнее, вообще без них не обходился ни один программист, но можно их не знать или делать вид, что не знаешь, используя "интуEтивно"). Дает это незнание (делание вид, что не знаешь, интуЕтивное знание) преимущества программисту? Не думаю. Дает преимущество их знание (и признание того, что знаешь)? Для меня очевидно, что да. Знание паттернов реально помогает программировать; из этого не следует, что их надо использовать к месту и не к месту. Но последнее утверждение относится и к концепциям ООП, и к программированию вообще, и к любой когда-либо созданной методе.

Между прочим, "любимая книга" любима в том числе и за то, что четко объясняет, когда надо применять тот или иной паттерн, а когда его ни в коем случае применять НЕЛЬЗЯ. А интуиция чаще всего подводит именно с последним.

И шарлатаном может оказаться не только психоаналитик, но и вполне нормальный хирург или стоматолог. Из чего не следует, что хирургия и стоматология суть лженауки :)

P.S. Кстати, я мог бы сказать то же самое, вообще не употребляя слов "тут у тебя фабричный метод" - ничего бы по сути от этого не поменялось. Табуирование слов весьма распространено в некоторых культурах, люди как-то перебиваются. Впрочем, подмена простых терминов (а "фабричный метод" - очень простой и четко определенный термин) сложными и есть признак понтов и шарлатанства. Это то же самое, что дураков называть альтернативно одаренными (то, что ты это делаешь с иронией, я понимаю :))

Re: О! Тут у тебя фабричный метод!

> Если речь обо мне (а она обо мне),

Ты ж на собеседование ко мне не пришёл. Поэтому твои слова как-то не так раздражают.

> И не надо говорить, что ты уже учел эту возможность: ты предлагал подменять библиотеки - а это отнюдь не одно и то же. Подменяя библиотеку, ты заранее, раз и навсегда меняешь поведение программы.

Подмена библиотек несколько не так делается. Обычно где-то задаётся некоторая конфигурация, которая реализует некоторый набор интерфейсов. Подмена библиотеки — подмена реализации. Самый распространённый и известный случай — jdbc.

> Так вот, знание паттернов действительно дает иногда возможность использовать то, что давно было сделано другими. Аргумент "я бы и так догадался", как видишь, не канает: мог догадаться, а мог и не догадаться.

Я говорю: всё украдено уже до нас. Все эти методы были задолго до.

> P.S. Кстати, я мог бы сказать то же самое, вообще не употребляя слов "тут у тебя фабричный метод"

Претензия не к тебе.

> Паттерны проектирования — это список заклинаний, позволяющий красиво описать сделанное другими при
> неспособности сделать что-то подобное самостоятельно.

Думаю, что паттерны - это точки опоры, когда люди могут говорить об одном и том же, используя одинаковые слова. Это довольно удобно - заменять большое описание одним словом. Если кто-то перегибает палку и возводит паттерны в ранг чего-то священного, то это его проблемы.

Поппер писал:

Я могу проиллюстрировать это на двух существенно различных примерах человеческого поведения: поведения человека, толкающего ребенка в воду с намерением утопить его, и поведения человека, жертвующего жизнью в попытке спасти этого ребенка. Каждый из этих случаев легко объясним и в терминах Фрейда, и в терминах Адлера. Согласно Фрейду, первый человек страдает от подавления (скажем, Эдипова) комплекса, в то время как второй — достиг сублимации. Согласно Адлеру, первый человек страдает от чувства неполноценности (которое вызывает у него необходимость доказать самому себе, что он способен отважиться на преступление), то же самое происходит и со вторым (у которого возникает потребность доказать самому себе, что он способен спасти ребенка). Итак, я не смог бы придумать никакой формы человеческого поведения, которую нельзя было бы объяснить на основе каждой из этих теорий. И как раз этот факт — что они со всем справлялись и всегда находили подтверждение — в глазах их приверженцев являлся наиболее сильным аргументом в пользу этих теорий. Однако у меня зародилось подозрение относительно того, а не является ли это выражением не силы, а, наоборот, слабости этих теорий?

Re: Ответ на вашу запись...

Тут Поппер всё правильно пишет.

Реальная гигантская заслуга фрейда перед психологией - открытие подсознательного как такового.

Далее полная фигня (впрочем для первопроходцев оно характерно, на то они и певопроходцы), вызванная весьма специфичным материалом с коим он работал (Богатые домохозяйки). У этих действительно все было на "огурцы" наверчено. Психика же нормального, социализированного, имеющего работу или (и) общественные интересы человека намного сложнее.


Кроме специфического материала, у самого Фрейда был полный чердак тараканов.

три замечания
1) Паттерны - это прежде всего язык для общения проектировщика и кодера.- это НЕ средство дизайна и именно по этому фасад , прокси и адаптер это разные вещи при том что родовая концепция - доступ у них одна.
2) самый забавный GOF паттерн после синглтона ;) это шаблонный метод, ведь без этой идеи использование виртуальных функций невозможно в принципе.

3)хотя я и не могу запоснить все названия , но книга GOF DP конечно книга полезная, некоторые концепции я оттуда почерпнул , например стратегия и даже использовал , очень пригодилось.

Re: Ответ на вашу запись...

> три замечания 1) Паттерны - это прежде всего язык для общения проектировщика и кодера.

Вся содержательная часть была до внедрения концепции. Все эти фишки — фабрика, подписка и т.п. лично я использовал задолго до выхода книжки и повсеместного распространения термина. Причём, мы называли всё это именно «фабрика», «подписка»… Но тогда не было такого количества бакланов, которые использовали все эти красивые слова, не понимая их физического смысла. Благодаря книги таких теперь в избытке.

Другой анекдот, более баянистый
- Папа, а почему ты лечил этого человека пять лет, а я вылечил его за две недели?
- Эх, сынок... Да потому что ты учился на его деньги

По личному опыту скажу, что, конечно, свет клином на паттернах не сошёлся, но знать их полезно, сильно упрощает процесс объяснения как ты что-то сделал.

Примерно так:
--Что ты вырастил в саду?
--Ну круглое такое зелёное, кусаешь - хрумкает
--???

Гораздо проще так:
--Что ты вырастил в саду?
--Яблоки.

Т.е. сели люди и договорились как просто называть простые вещи.

Да и в разработке тоже порой помогают. Можно, опятьже, самому додуматься как например оповещать слушателей модели в многопоточном приложении, не такая уж и проблема, но потом сидишь и думаешь, а не упустил ли я какой момент, а не возникнет ли тут рассинхронизация какая нибудь нехорошая. А задачка-то типовая, т.е. гораздо проще посмотреть как это умные люди делают, но как это найти? Ага: Гугл, "паттерны многопоточного программирования".

Re: Ответ на вашу запись...

Идея — клёвая. То, чем она обросла — фрейдизм в программировании. Вот про это статья.

По-моему, бессознательное Фрейда, это - язык, которым мы все успешно или не успешно пользуемся. Фрейд предлагал изучать семантическую символику, из которой состоит язык больного, и на этой основе делать заключения о заболевании. Сексопатология стоит на одном уровне со многими другими нарушениями психики, ролевыми,когнитивными, этническими, и все это отражается в языке.

Боюсь, Вас тут не поймут :) Но Фрейд не "просто подсознательное открыл". Строго говоря он его не открывал. Зато он положил основу изучения структуры психики. То есть совершил прорыв методологического характера - остальное пошло паровозом.

Отлично. Все то же самое можно рассказать а "Теориях Менеджмента".

> Некогда дяденька по имени Зигмунд Фрейд придумал новый подход к лечению ментальных недугов человечества. Метод заключался в раскрытии неосознаваемых пациентом мотивов его, пациента поведения.С одной стороны метод был по своему революционен — ведь до этого идея наличия в мышлении бессознательного не была внедрена в широкие массы.

# Она и сейчас не внедрена. А тогда "широкими массами" были специалисты-психологи.

> С другой стороны метод был замечателен тем, что снимал со врача всякую ответственность за результат, давая врачу возможность сослаться на глубинные комплексы пациента, с которыми может справиться только пациент, а раз не справился, то не хочет. Врач, дескать, сделал что мог — вскрыл эти самые комплексы.

# Это примерно как всрытие природы онкологии дает врачу возможность сослаться на "глубинные проблемы пациента", если тот умрет. Но правда жизни в том, что врач еще к тому начинает понимать, от чего умер пациент, а также получает возможности разработки инструментария для лечения злокачественных новообразований. Конечно, можно забить, но есть мнение - пациентам от этого легче не станет.

> Ментально больной теперь был уже не одним элементом одной из закономерностей, а яркой индивидуальностью, которая хоть в некоторые закономерности и укладывается, но имеет что-то такое своё, персональное, поэтому лечить его надобно не бездушным фабричным методом, а путём поиска личного и уникального.

# Извини, Лекс. Но тут ты ерунду написал. Все с точностью наоборот, с пониманием структуры психики появились у универсальные методы работы с ней. До этого фактически не было вообще ничего.

> Ну а когда оно уникальное, то извольте выложить много денюжек — как иначе-то?

# Как думаешь - до Фрейда Шарко мало денег брал?

> Заслуга Фрейда в обнаружении бессознательного очевидна. Описанные ими модели уже местами весьма спорны, но имеют здравое зерно.

# Они совсем не спорны. Они подтверждены десятками лет клинической практики.

> Зато сам подход — это прорыв в манипуляционных технологиях.

# Это скорее к Юнгу и Берну. Фрейд не занимался практически групповой динамикой, как и манипуляционными техниками - тоже не занимался.

Re: Ответ на вашу запись...

> # Это примерно как всрытие природы онкологии дает врачу возможность сослаться на "глубинные проблемы пациента", если тот умрет.

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

> # Извини, Лекс. Но тут ты ерунду написал. Все с точностью наоборот, с пониманием структуры психики появились у универсальные методы работы с ней. До этого фактически не было вообще ничего.

Если бы только они появились — всё было бы в шоколаде. Однако школы с «индивидуальным подходом к каждому» живут и здравствуют.

> # Как думаешь - до Фрейда Шарко мало денег брал?

Врачи вообще много берут. Но некоторые их них в отместку хотя бы лечат.

> # Они совсем не спорны. Они подтверждены десятками лет клинической практики.

«Всё от секса» — не подтверждено. Объяснения задним числом — это не доказательства.

> # Это скорее к Юнгу и Берну. Фрейд не занимался практически групповой динамикой, как и манипуляционными техниками - тоже не занимался.

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

Паттерны -- херня. XML -- вот золотой ключик программиста! Можно не просто перед коллегами. Раскрученность данного формата в индустрии делает его условием получения заказа. XML не просто имеет массу приемуществ, он ещё улучшает вашу сексуальную жизнь!

Re: Ответ на вашу запись...

Кстати, да. Фраза «у нас поддерживается XML», она завораживает как надо. Вот на фразу: «у нас поддерживается HTML» почему-то уже не так активно клюют.

> В любимой вами книжке, пацаны, в число паттернов не включены контейнеры и потоки.

А под контейнером что имеется в виду - Composite, или wrapper (в каком-то из смыслов), или еще что-то?

Re: Ответ на вашу запись...

Под «контейнером» подразумевается контейнер. Ну там, списки, карты и т.д и т.п.

Хочу быть небыдлом. Можно для быдла вкратце - "паттерны программирования" - это об чем?

Прочитал ветку с коментами и меня поразили вопросы, которые вы задаете на собеседовании. Помоему они говорят только об уровне знаний человека, а не умении. Например, я незнаю как реализовать хеш-таблицу, но знаю где это можно посмотреть и потом её реализовать. Умею ли я программировать или нет?

По своему опыту могу сказать, что одно из основных качеств - это способность думать не на языке программирования.



Re: Ответ на вашу запись...

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

Они сразу же показывают опыт работы. Контейнеры — это та штука, которая есть в 99% программ. Если человек не в курсе, что это такое, то он — хреновый программист. И, как видно, писал только «здравствуй, мир» в различных вариациях.

> Например, я незнаю как реализовать хеш-таблицу,

Это как бы не мой вопрос.

> но знаю где это можно посмотреть и потом её реализовать. Умею ли я программировать или нет?

Не все вещи можно просто взять и где-то посмотреть. Например, размер типа int можно. Алгоритм сортировки — можно. А вот взять и узнать способы использования списков и таблиц — нельзя. Можно посмотреть только что это такое. Но тут как бы знание о том, как выглядит велосипед, не даёт мгновенно возможности на нём поехать.