kastaneda: (Default)
[personal profile] kastaneda
Злобная статья про паттерны.
Чисто пацанский комментарий.

Всё отчётливее понимаю, хули «промышленный» софт такой раздутый.

Date: Monday, December 11th, 2006 11:03 am (UTC)
From: [identity profile] diggya.livejournal.com
Смотрим на Брукса. На самом деле современный софт - это высшее проявление искусства менеджера, напарить то чего нет и обьяснить почему это так дорого.

PS. Последняя неделя у меня проходит под лозунгом "долго, дорого и хреново". Почему - незнаю.

Date: Monday, December 11th, 2006 11:28 am (UTC)
From: [identity profile] diggya.livejournal.com
Всё просто - спеки на интерфейсы и полетели. У каждого софта есть свой масштаб. Даже при написании. Если его пишет 3 человека - можно нах большую часть, если 10 - начинаем писать спецификации, если 100 - пишем спецификации на всё. Но блядь нет, все думают что калькулятор пишется командой из 4000 программистов.

Date: Monday, December 11th, 2006 08:01 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Короче говоря, пора организовывать профсоюз freelance developers, деревню "Вольные Программёры", ставить большущую тарелку и вызывать своих блядей жить-поживать.

Date: Monday, December 11th, 2006 07:59 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Дело в том, что "Божество Паттерн" (см. мой коммент [livejournal.com profile] netch) толкается не манагерам, а девелоперам. Манагеры тут сбоку, хватаются за любую модную фразу и начинают её насиловать. Вспомни, что случилось с явой -- тут в целом та же проблема.

Date: Monday, December 11th, 2006 06:47 pm (UTC)
netch: (Default)
From: [personal profile] netch
http://rsdn.ru/article/funcprog/fp.xml
кроме прочего, активная апологетика того, что "в нормальных языках паттерны не нужны".
ну и вообще симпатичная статейка

Date: Monday, December 11th, 2006 07:57 pm (UTC)
From: [identity profile] fester-ua.livejournal.com
Полезный вопрос -- что есть паттерн.
У меня, к примеру, есть на всё, на чём я пишу, с весьма дохуя стандартных решений для большого набора стандартных ситуаций. Их, наверное, можно назвать паттернами. Но я не состою в GoF, не учусь в MIT и не здороваюсь за руку с Полом Грэхемом и Джоэлом Спольски, поэтому меня, чисто подвального девелопера, никто слушать не будет.
Паттерн -- это всего лишь некое типовое решение, проверенное для типовых задач.
Я в принципе не против паттернов. Говорить, что "в нормальных языках" они не нужны -- это бред, иначе не назовёшь. У любого программиста есть свой набор паттернов. Наверное, я бы даже назвал паттерном банальности класса прохода по list'у -- только не говорите мне, что существует 30 вариаций решения этой задачи, сертифицированных по RFC.
То, что есть паттерны в терминах GoF -- то же самое. Типовой набор типовых решений типовых задач.
Но, как говаривал Остап Бендер, "не делайте из еды культа!". Ставить знание типовых решений во главу угла, фильтровать работников на собеседованиях на основании (не)знания десятка терминов -- это безусловно зло. Как, впрочем, и обожествление любой другой вещи.
Короче, в двух словах. Паттерны -- нормальная штука. Божество "Паттерн" -- зло.

ps: простите за сумбурность изложения, но одесское вино даёт себя знать :D

Date: Tuesday, December 12th, 2006 07:46 am (UTC)
netch: (Default)
From: [personal profile] netch
Тут есть ряд... мнэээ... нюансов:) Активная возня за паттерны, если можно заметить, происходит только в определённой среде. Фактически эту среду можно свести к одному названию - C++ (ну и чуть-чуть для явы и шарпа, и то с натяжкой), и к некоторому достаточно специфическому классу задач, который я пока что не могу чётко определить словами, но отличающемуся сложностью объектной структуры. Специфика задач - отдельная тема, но специфика средств наводит на мысль, что что-то не так с самими средствами.

Если посмотреть внимательно на труды "банды четырёх" или хотя бы отдельно Александреску - видно, что
1) те шаблоны, которые рассматриваются в этих трудах - с одной стороны, существенны для определённого класса задач; с другой стороны, они резко нетривиальны. Это уже совсем не интуитивно понятные действия вроде "если нужно что-то сделать со всеми элементами списка, надо организовать поэлементный перебор в цикле". Это нетривиальные, отработанные не только короткой практикой, но и теорией решения. Даже простейший Singleton. Даже детская задачка "как сделать assert времени компиляции".
2) тема паттернов особенно привязана к C++. А C++ сейчас - это в первую очередь механизм шаблонов (templates), который сейчас доведен до состояния, эквивалентного машине Тьюринга, то есть теоретически способен сгенерировать что угодно на стадии компиляции. Но - опять же - с необходимостью весьма нетривиальной логики при разработке: это хорошо видно в книге Александреску.

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

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

А вот в чём он IMO прав - это в том, что в средах с существующим reflection (тут уже менее важно, это статически типизированная и компилированная среда, как Java, или динамическая и интерпретируемая, как Python) шаблонизация резко теряет свою важность. И это сейчас - тот путь, который полезен практически всем.

Date: Thursday, December 14th, 2006 03:11 pm (UTC)
From: [identity profile] ormuz.livejournal.com
IMHO большой кусок оных "классических" паттернов низачем больше не нужны кроме борьбы с ужасами сиплюсплюса. вне сиплюсплюса, действительно, вряд ли нужны. Но лишь эти, плюсовые, паттерны.

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

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

Date: Friday, December 15th, 2006 05:50 pm (UTC)
From: [identity profile] dragon-j.livejournal.com
с интересом прочитал.
с удивлением осознал, что в тексте не понял ничего, кроме редкой вспышки узнавания отдельных слов.
интерес и удивление связаны с тем, что лет восемь назад ваял на C++ по десятке тысяч строк кода с активным использованием шаблонов.

Date: Friday, December 15th, 2006 06:43 pm (UTC)
netch: (Default)
From: [personal profile] netch
Моя твоя немного не понимай.
1. Что именно было прочтено из?
2. Вообще-то паттерны != шаблоны.

Date: Tuesday, December 12th, 2006 02:30 am (UTC)
From: [identity profile] zmeuka.livejournal.com
Едрён батон.
Вспоминаются сборники стандартных алгоритмов по ГОСТ.
Если бы тогда морочились объектами, такие сборники смело можно было бы объявлять "стандартными паттернами".

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

Date: Tuesday, December 12th, 2006 01:50 pm (UTC)
netch: (Default)
From: [personal profile] netch
Пуркуа? Вполне логично - состояние сессии дрыхнет в виде данных, передаваемых между запусками, вышел из цикла и пошёл трудиться...

Одно плохо - надо явно сохранять состояние на диске...

September 2025

M T W T F S S
12345 67
891011121314
15161718192021
22232425262728
2930