Re: Самый сложный для понимания паттерн
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 12.11.11 08:22
Оценка: 4 (2) +4 :)))
S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?

MVC конечно. Никто точно не знает что должно быть в Model. Вообще никто не знает что делает Controller . Но паттерн все используют .
Re: Самый сложный для понимания паттерн
От: 0x7be СССР  
Дата: 11.11.11 11:14
Оценка: 1 (1) +5
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн?

Я за Visitor.
Re[9]: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.11.11 03:00
Оценка: -1 :))) :)
Здравствуйте, samius, Вы писали:

ГВ>>С опытом чего? Неужели, применения паттернов?

S>да. Опыт — сын ошибок трудных (ц).

Вот тебе несколько профилактических высказываний:

— Premature pattern is a root of evil. Pattern never be mature.
— Когда я слышу "применение паттернов" моя рука тянется к пистолету.
— Не трогай паттерн — вонять не будет.
— Паттерн — не воробей, вылетит — не поймаешь.
— Пусти паттерн за стол, он и ноги на стол.
— Кто рано встаёт, тот избегает применения паттернов.
— Не стёр паттерн — день зря прошёл.
— Трудно жить, применяя паттерны.
— Отказаться от применения паттернов намного проще, чем бросить курить. Ты не куришь? Значит, полдела уже сделано!
— Умный по паттерну не пойдёт, умный паттерн обойдёт.
— Глупый паттерн робко прячет тело жирное в утёсах.
— Допустим, я применяю паттерны. Допустим, я одурел (впрочем, я повторяюсь).
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[9]: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.11.11 02:37
Оценка: 16 (2) +1 :)
Здравствуйте, samius, Вы писали:

S>>>Но сказано хорошо. Единственная проблема — как читатель должен понять, дорос ли он до паттернов?

S>>>Когда я их читал — был уверен что дорос . Потом, с опытом, уверенность пропала.
ГВ>>С опытом чего? Неужели, применения паттернов?
S>да. Опыт — сын ошибок трудных (ц).

Эм... То есть по мере накопления опыта в заведомо неправильной практике (применения паттернов) ты дошёл до осознания того, что ты "не дорос" до такой практики? Ну, мои поздравления. Так всегда случается с неправильными вещами: чем больше их применяешь, тем, кажется, хуже ты в них ориентируешься. На самом деле, всё обстоит строго наоборот: твой мозг тебе сигналит о том, что ты делаешь глупости, только почему-то ты его не слушаешь. Короче, у тебя возникает когнитивный диссонанс: делаешь всё вроде бы "правильно", а результат получается не тем, который ждёшь. Притом, чем больше опыта, тем больше "дистанция" между тем, что сказано в "паттерне" и тем, что ты видишь на самом деле, поскольку связи-то в мозгу нарабатываются совсем не зависимо от того, что написано в очередной плохо переведённой книжице. Дальше есть два варианта. Первый, неправильный — накручивать себя по части того, что ты не дорос (читай, холить и лелеять комплекс неполноценности). Второй, правильный — перестать "применять паттерны". Вообще. Совсем. И написать на RSDN постинг: "I hate patterns" в порядке нарративной психотерапии.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Самый сложный для понимания паттерн
От: rm822 Россия  
Дата: 11.11.11 20:15
Оценка: 13 (2) :)
S>Какой, вы считаете, самый сложный паттерн?
God object + "банка с червями"
Это очевидно самые сложные паттерны, т.к. именно их применением завершается жизненный цикл проекта
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Самый сложный для понимания паттерн
От: vdimas Россия  
Дата: 11.11.11 13:02
Оценка: 9 (1) +2
Здравствуйте, samius, Вы писали:

S>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


Мост еще толкуют кто куда.

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

Кстати, не ожидал в википедии по шаблонам проектирования такую главу:

Критика

Иногда шаблоны консервируют громоздкую и малоэффективную систему понятий, разработанную узкой группой. Когда количество шаблонов возрастает, превышая критическую сложность, исполнители начинают игнорировать шаблоны и всю систему, с ними связанную. Нередко шаблонами заменяется отсутствие или недостаточность документации в сложной программной среде.
Есть мнение, что слепое применение шаблонов из справочника, без осмысления причин и предпосылок выделения каждого отдельного шаблона, замедляет профессиональный рост программиста, так как подменяет творческую работу механической подстановкой шаблонов. Люди, придерживающиеся данного мнения, считают, что знакомиться со списками шаблонов необходимо тогда, когда программист «дорос» до них в профессиональном плане — и не раньше. Хороший критерий нужной степени профессионализма — выделение шаблонов самостоятельно, на основании собственного опыта. При этом, разумеется, знакомство с теорией, связанной с шаблонами, полезно на любом уровне профессионализма и направляет развитие программиста в правильную сторону. Сомнению подвергается только использование шаблонов «по справочнику».
Шаблоны могут пропагандировать плохие стили разработки приложений, и зачастую слепо применяются.


Лучше не скажешь. В следующий раз можно сразу в википедию отсылать.
Re: Самый сложный для понимания паттерн
От: hardcase Пират http://nemerle.org
Дата: 11.11.11 10:46
Оценка: :))
Здравствуйте, Sorc17, Вы писали:

S>Какой, вы считаете, самый сложный паттерн?


Сочетание божественного объекта и мегаметодов.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Самый сложный для понимания паттерн
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.11.11 11:37
Оценка: :))
Здравствуйте, Enomay, Вы писали:

S>>>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн?

0>>>Я за Visitor.
SC>>Да, Посетитель самый сложный, по крайней мере из GoF.

E>с какой стороны он самый сложный?


Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.
Re: Самый сложный для понимания паттерн
От: okman Беларусь https://searchinform.ru/
Дата: 12.11.11 11:28
Оценка: +2
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


Если паттерн сложный, то это антипаттерн. IMHO.
Все основные паттерны довольно просты и даже тривиальны.
Единственная и ненужная сложность в том, чтобы разобраться "как принято" реализовывать
тот или иной паттерн, включая такие детали как именование, вместо того, чтобы
просто назвать и реализовать его понятным для себя и других образом и продолжить
заниматься работой, а не научно-творческими изысканиями (не страдать фигней, проще говоря).
Re[6]: Самый сложный для понимания паттерн
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.11.11 13:25
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, samius, Вы писали:


S>>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


V>Мост еще толкуют кто куда.


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

лучше бы упоминали expression problem с описанием дуализма, что бы читатель мог выбирать направление расширения.

V>Кстати, не ожидал в википедии по шаблонам проектирования такую главу:

V>

Критика


V>Лучше не скажешь. В следующий раз можно сразу в википедию отсылать.

тут толпа спецов, которым википедия не авторитет
Но сказано хорошо. Единственная проблема — как читатель должен понять, дорос ли он до паттернов?
Когда я их читал — был уверен что дорос . Потом, с опытом, уверенность пропала.
Re: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 11.11.11 21:54
Оценка: +1
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


ИМХО, прежде всего, такая оценка зависит от того, с каким количеством ситуаций, отражённых в паттернах, оценивающий сталкивался до того, как узнал о паттернах. Чем меньше ситуаций он прошёл самостоятельно, тем выше будут оценки сложности. И с другой стороны, если паттерн тебе не понятен, значит, с большой вероятностью, он тебе попросту не нужен и тебе не нужно им заморачиваться.

В действительности, когда ты столкнёшься с каким-нибудь классом SomeObjectsFactory отсылки к литературе по паттернам, как правило, ничего не дадут — всё равно придётся изучать спецификацию. И в этом контексте я бы вообще поставил паттернам оценки сложности +11 (трудно и не нужно), поскольку вместо того, чтобы разбираться с тем, что реально нужно (особенности работы ISomeObjectsFactory), не ровён час, придётся ещё и думать о том, как это проецируется на "классику". Короче, получится куча размышлений по какому-то очень надуманному поводу.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[10]: Продолжим
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.11.11 03:15
Оценка: :)
- Есть два способа применения паттернов: плохой и неправильный.
— Незваный паттерн хуже дурного начальника.
— Паттерн с возу — программисту легче.
— Бестолковый паттерн утомляет хуже работы.
— Тяп-ляп — и паттерн!
— От паттерна паттерн не ищут.
— Паттерн мой — враг мой (прежде ума глаголет).
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[10]: Самый сложный для понимания паттерн
От: samius Япония http://sams-tricks.blogspot.com
Дата: 12.11.11 07:41
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, samius, Вы писали:


S>>>>Но сказано хорошо. Единственная проблема — как читатель должен понять, дорос ли он до паттернов?

S>>>>Когда я их читал — был уверен что дорос . Потом, с опытом, уверенность пропала.
ГВ>>>С опытом чего? Неужели, применения паттернов?
S>>да. Опыт — сын ошибок трудных (ц).

ГВ>Эм... То есть по мере накопления опыта в заведомо неправильной практике (применения паттернов) ты дошёл до осознания того, что ты "не дорос" до такой практики? Ну, мои поздравления. Так всегда случается с неправильными вещами: чем больше их применяешь, тем, кажется, хуже ты в них ориентируешься. На самом деле, всё обстоит строго наоборот: твой мозг тебе сигналит о том, что ты делаешь глупости, только почему-то ты его не слушаешь. Короче, у тебя возникает когнитивный диссонанс: делаешь всё вроде бы "правильно", а результат получается не тем, который ждёшь. Притом, чем больше опыта, тем больше "дистанция" между тем, что сказано в "паттерне" и тем, что ты видишь на самом деле, поскольку связи-то в мозгу нарабатываются совсем не зависимо от того, что написано в очередной плохо переведённой книжице. Дальше есть два варианта. Первый, неправильный — накручивать себя по части того, что ты не дорос (читай, холить и лелеять комплекс неполноценности). Второй, правильный — перестать "применять паттерны". Вообще. Совсем. И написать на RSDN постинг: "I hate patterns" в порядке нарративной психотерапии.


Эту стадию я уже прошел.
Паттерн это просто способ сделать что-то. Один из способов, со своими преимуществами и недостатками, со своей ценой. Какой смысл ненависти к способу? Проблему представляет не способ, а его слепое использование по случаю и без.
Re[10]: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.11.11 14:51
Оценка: -1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, samius, Вы писали:


S>>>>Но сказано хорошо. Единственная проблема — как читатель должен понять, дорос ли он до паттернов?

S>>>>Когда я их читал — был уверен что дорос . Потом, с опытом, уверенность пропала.
ГВ>>>С опытом чего? Неужели, применения паттернов?
S>>да. Опыт — сын ошибок трудных (ц).

ГВ>Эм... То есть по мере накопления опыта в заведомо неправильной практике (применения паттернов) ты дошёл до осознания того, что ты "не дорос" до такой практики? Ну, мои поздравления. Так всегда случается с неправильными вещами: чем больше их применяешь, тем, кажется, хуже ты в них ориентируешься. На самом деле, всё обстоит строго наоборот: твой мозг тебе сигналит о том, что ты делаешь глупости, только почему-то ты его не слушаешь. Короче, у тебя возникает когнитивный диссонанс: делаешь всё вроде бы "правильно", а результат получается не тем, который ждёшь. Притом, чем больше опыта, тем больше "дистанция" между тем, что сказано в "паттерне" и тем, что ты видишь на самом деле, поскольку связи-то в мозгу нарабатываются совсем не зависимо от того, что написано в очередной плохо переведённой книжице. Дальше есть два варианта. Первый, неправильный — накручивать себя по части того, что ты не дорос (читай, холить и лелеять комплекс неполноценности). Второй, правильный — перестать "применять паттерны". Вообще. Совсем. И написать на RSDN постинг: "I hate patterns" в порядке нарративной психотерапии.


Начни с себя. "нарративной " — это уже паттерн. "когнитивный диссонанс" — снова паттерн. "комплекс неполноценности" — обратно паттерн. Опаньки !

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

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

Отсюда очевидно, что если за эталон взять некоего идеального программиста, эдакий God-Developer, то получится, что ему не нужны никакие паттерны и тд и тд. Но только ему паттерны и не нужны.
Re[11]: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.11.11 00:31
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

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


Ты это... Не путай последовательность и меня так не пугай. Сначала обычно предпринимают некие действия по решению вполне конкретной задачи, нередко даже хаотичные (поиск). Потом так или иначе находят удачную последовательность, которую могут зафиксировать в некотором виде. И уже потом этот эту последовательность можно разбить на части, выделить некоторые части в виде шаблонов (паттерны)... Иначе у паттерны просто негде выделять. Если нет конкретных решений, нет и шаблонных решений.

Другими словами: шаблон — это обобщение совокупности конкретных решений, но не наоборот. Не путать с программированием в терминах обобщённых типов.

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


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

I>Например в шахматах никто не орёт что не надо применять паттерны. Есть например принятый гамбит, отказанный гамбит, контргамбит и более конкретные вроде сицилианская защита, королевский гамбит, дебют ххх и тд и тд. Другой вопрос, что принятие решений основывается не на самих паттернах, а более базовых вещах, в шахматах это фигуры, комбинации и позиция.


В шахматах с "применёнными паттернами" не приходится потом жить пользователям и разработчикам. Так что, аналогия плохая.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Самый сложный для понимания паттерн
От: о_О
Дата: 20.11.11 21:54
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, Sorc17, Вы писали:


S>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


A>Знатокам паттернов: насколько быстро вы определите паттерн в вопросе по ссылке?


A>https://groups.google.com/d/topic/comp.lang.c++/CdjoOi0e_Ig/discussion


Эталонный пример говнокода
Re[5]: Самый сложный для понимания паттерн
От: Mishka Норвегия  
Дата: 23.11.11 10:32
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Mishka, Вы писали:


M>>>>P.S. Визитор фигня, обычный дабл диспач


AVK>>>Ну вот ты и продемонстрировал, что паттерн посетитель не понял.


M>>Не смеши.


AVK>Да куда уж тут смешить, тут грустить надо


Я тебе даже больше скажу: принципы, заложенные в основе ОО — полное надувательство и причина всех проблем в современном IT. И визитор — это сравни удалению гланд через задний проход. Корявая идея ОО = корявый паттерн чтоб его поправить. То же ведь придумали данные с методами в одном классе держать...
Самый сложный для понимания паттерн
От: Sorc17 Россия  
Дата: 11.11.11 10:41
Оценка:
Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re: Самый сложный для понимания паттерн
От: Pavel_Agurov Россия  
Дата: 11.11.11 10:58
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


Сложный для чего? Для понимания? Для написания? Для внедрения в готовый код?
Re: Самый сложный для понимания паттерн
От: о_О
Дата: 11.11.11 11:05
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?

3
Re[2]: Самый сложный для понимания паттерн
От: Sorc17 Россия  
Дата: 11.11.11 11:08
Оценка:
Здравствуйте, Pavel_Agurov, Вы писали:

P_A>Здравствуйте, Sorc17, Вы писали:


S>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


P_A>Сложный для чего? Для понимания? Для написания? Для внедрения в готовый код?


Для понимания
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re[2]: Самый сложный для понимания паттерн
От: Stroustrups cat  
Дата: 11.11.11 11:17
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Здравствуйте, Sorc17, Вы писали:


S>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн?

0>Я за Visitor.

Да, Посетитель самый сложный, по крайней мере из GoF.
Re[3]: Самый сложный для понимания паттерн
От: Enomay  
Дата: 11.11.11 11:30
Оценка:
S>>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн?
0>>Я за Visitor.
SC>Да, Посетитель самый сложный, по крайней мере из GoF.

с какой стороны он самый сложный?
Re[5]: Самый сложный для понимания паттерн
От: l33thaxor  
Дата: 11.11.11 17:06
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, Enomay, Вы писали:


S>>>>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн?

0>>>>Я за Visitor.
SC>>>Да, Посетитель самый сложный, по крайней мере из GoF.

E>>с какой стороны он самый сложный?


S>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


Мои коллеги не могут понять паттерн Template Method. Я уже вторую неделю им втолковываю. Даже сам уже всё понял , а они до сих пор не въезжают!
Re[6]: Самый сложный для понимания паттерн
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.11.11 19:15
Оценка:
Здравствуйте, l33thaxor, Вы писали:

L>Здравствуйте, samius, Вы писали:


S>>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


L>Мои коллеги не могут понять паттерн Template Method. Я уже вторую неделю им втолковываю. Даже сам уже всё понял , а они до сих пор не въезжают!


Это нормальный процесс. Теперь пусть они попытаются объяснить паттерн кому-нибудь еще. Сам так делаю
Re[7]: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 11.11.11 22:00
Оценка:
Здравствуйте, samius, Вы писали:

V>>Кстати, не ожидал в википедии по шаблонам проектирования такую главу:

V>>

Критика

V>>Лучше не скажешь. В следующий раз можно сразу в википедию отсылать.
S>тут толпа спецов, которым википедия не авторитет

Википедия в последнее время несколько поздоровела. Так что, можно понемногу начинать пользоваться.

S>Но сказано хорошо. Единственная проблема — как читатель должен понять, дорос ли он до паттернов?

S>Когда я их читал — был уверен что дорос . Потом, с опытом, уверенность пропала.

С опытом чего? Неужели, применения паттернов?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Самый сложный для понимания паттерн
От: Abyx Россия  
Дата: 11.11.11 22:12
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Здравствуйте, Sorc17, Вы писали:


S>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн?

0>Я за Visitor.

он прост в понимании (использовании посетителей) но сложен в реализации (в языках не поддерживающих двойную диспетчеризацию)
например boost.variant использует посетителей, и использовать boost.variant просто и удобно
а вот реализовать свой "фреймворк" для посетителей — сложно.

но это проблема конкретного языка, а не паттерна. как говорится у ГоФ (если н ошибаюсь), "когда мы пишем на Си, полиморфизм для нас становится паттерном, т.к. язык его не поддерживает"

вообще паттерны по определению должны быть простыми и понятными, так чтобы можно было посмотреть на код и сказать — это фасад, а это фабричный метод,
и с пониманием обычно проблем нет — "адаптер" адаптирует, "итератор" итерирует, и т.п.
In Zen We Trust
Re[8]: Самый сложный для понимания паттерн
От: samius Япония http://sams-tricks.blogspot.com
Дата: 12.11.11 00:03
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, samius, Вы писали:


V>>>Лучше не скажешь. В следующий раз можно сразу в википедию отсылать.

S>>тут толпа спецов, которым википедия не авторитет

ГВ>Википедия в последнее время несколько поздоровела. Так что, можно понемногу начинать пользоваться.

Я-то пользуюсь. Не без косяков, конечно. Доверяй, но проверяй. Но некоторые форумчание прямо насмех поднимают, видя ссылки на википедию.

S>>Но сказано хорошо. Единственная проблема — как читатель должен понять, дорос ли он до паттернов?

S>>Когда я их читал — был уверен что дорос . Потом, с опытом, уверенность пропала.

ГВ>С опытом чего? Неужели, применения паттернов?

да. Опыт — сын ошибок трудных (ц).
Re[11]: И наиглавнейшее
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.11.11 03:22
Оценка:
Когда в хвосте начало, то в голове точно — паттерн!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[12]: И наиглавнейшее
От: neFormal Россия  
Дата: 12.11.11 08:24
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Когда в хвосте начало, то в голове точно — паттерн!


С утра паттерн — весь день свободен!
...coding for chaos...
Re[11]: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.11.11 15:26
Оценка:
Здравствуйте, samius, Вы писали:

S>Эту стадию я уже прошел.

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

Тогда всё значительно лучше, чем мне сперва показалось.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Самый сложный для понимания паттерн
От: Lloyd Россия  
Дата: 12.11.11 15:30
Оценка:
Здравствуйте, l33thaxor, Вы писали:

S>>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


L>Мои коллеги не могут понять паттерн Template Method. Я уже вторую неделю им втолковываю. Даже сам уже всё понял , а они до сих пор не въезжают!


Попробуйте объяснить Стратегию, а потом скажите, что Template Method — это частный случай Стратегии, когда пользователь статегии и класс, который ее реализует, — один и тот же.
Re[6]: Самый сложный для понимания паттерн
От: vdimas Россия  
Дата: 12.11.11 17:19
Оценка:
Здравствуйте, l33thaxor, Вы писали:

L>Мои коллеги не могут понять паттерн Template Method. Я уже вторую неделю им втолковываю. Даже сам уже всё понял , а они до сих пор не въезжают!


Хм... уточни, хорошо ли они понимают понятие "абстракция" и как полиморфизм является ее инструментом? И далее, через способ реализации полиморфизма на виртуальных методах выйдешь прямо на Template method.
Re[2]: Самый сложный для понимания паттерн
От: vdimas Россия  
Дата: 12.11.11 17:33
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

S>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


EOH>MVC конечно. Никто точно не знает что должно быть в Model. Вообще никто не знает что делает Controller . Но паттерн все используют .


Потому что в чистом виде не используют, а раскладывают всего на 2 составляющие. View обычно имеет дело только с model, и в этом плане оно классической Document-View, а контроллером называют весь код вокруг, который создает и отвечает за время жизни View, а так же в ответ на события View делает что-то полезное с моделью и самим View. Т.е. классический Document-View, потому что Controller обычно не есть конкретный объект (или всего один объект), это именно что весь код вокруг да около.

На самом деле MVP и прочие разновидности — это ответ на потребность писать тесты для контроллера в отсутствии реального View и даже Model. А сделав всех участников этой троицы абстрактными, придем к окончательному его воплощению в виде MVVP.
Re[3]: Самый сложный для понимания паттерн
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 14.11.11 14:09
Оценка:
V>а контроллером называют весь код вокруг, который создает и отвечает за время жизни View, а так же в ответ на события View делает что-то полезное с моделью и самим View

Особенно это хорошо заметно в таком маленьком нишевом фреймворке как Cocoa.
Re[5]: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.11.11 14:23
Оценка:
Здравствуйте, samius, Вы писали:

E>>с какой стороны он самый сложный?


S>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


Похоже, что это и есть "сложный"
Re: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.11.11 14:26
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


А что значит "сложный" ? Как определить эту самую сложность да так что бы можно было сравнивать один паттерн с другим по этой самой сложности ?

Судя по ответам в топике, люди по разному понимают этот термин, т.к. есть и такие "мне понятно — значит паттерн простой"
Re[6]: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.11.11 14:29
Оценка:
Здравствуйте, l33thaxor, Вы писали:

S>>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


L>Мои коллеги не могут понять паттерн Template Method. Я уже вторую неделю им втолковываю. Даже сам уже всё понял , а они до сих пор не въезжают!


Значит они не понимают какой то составляющей в этом паттерне. Очень часто люди плохо понимают, что такое виртуальные функции. А вот проблемы с такими вещами, как обязанности и депенденсы это вобщем то норма даже у людей с большим опытом/зп.
Re[2]: Самый сложный для понимания паттерн
От: sidorov18 США  
Дата: 17.11.11 14:30
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

EOH>MVC конечно. Никто точно не знает что должно быть в Model. Вообще никто не знает что делает Controller . Но паттерн все используют .


И вообще, зачем, реально, этот паттерн в конкретном проекте..
Re[2]: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.11.11 14:31
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, Sorc17, Вы писали:


S>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


ГВ>ИМХО, прежде всего, такая оценка зависит от того, с каким количеством ситуаций, отражённых в паттернах, оценивающий сталкивался до того, как узнал о паттернах. Чем меньше ситуаций он прошёл самостоятельно, тем выше будут оценки сложности.


А что значит сложность ? То, что ты пишешь, больше похоже на трудности при освоении, а что такое сложность —
Re[6]: Самый сложный для понимания паттерн
От: samius Япония http://sams-tricks.blogspot.com
Дата: 17.11.11 15:32
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, samius, Вы писали:


S>>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


I>Похоже, что это и есть "сложный"


Как раз о тебе вспоминл, когда писал ответ.
Re[7]: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.11.11 15:53
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Так-то он совсем не сложный. Просто среди понявших его очень легко обнаружить совершенно различное понимание паттерна.


I>>Похоже, что это и есть "сложный"


S>Как раз о тебе вспоминл, когда писал ответ.


Это хорошо, что у тебя уже есть реакция. Осталось её закрепить.
Re: Самый сложный для понимания паттерн
От: Wolverrum Ниоткуда  
Дата: 17.11.11 23:24
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?

Фабрике я поставлю 1. Очень простая концепция.
Тут еще упоминали мост и посетитель. 2 и 1 соответственно.
Шаблонный метод — 2.
Строитель — 2.
Стратегия — 1.
Состояние — 3.
Интерпретатор, команда — 3.
Одиночка, фасад — 1
Адаптер — 3.
Посредник, прокся — 1.
Декоратор — 3.
Короче, простые они, паттерны "четырех"

Цепочка ответственности, композит as-is, приспособленец — хз, применить не довелось.

Самый угребищный в плане понимания паттерн для меня — это event-delegate. Вот уже лет 8 не понимаю, что с ним можно делать
Re[3]: Самый сложный для понимания паттерн
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 18.11.11 00:13
Оценка:
Здравствуйте, Ikemefula, Вы писали:

S>>>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


ГВ>>ИМХО, прежде всего, такая оценка зависит от того, с каким количеством ситуаций, отражённых в паттернах, оценивающий сталкивался до того, как узнал о паттернах. Чем меньше ситуаций он прошёл самостоятельно, тем выше будут оценки сложности.


I>А что значит сложность ? То, что ты пишешь, больше похоже на трудности при освоении, а что такое сложность —


А ты топикстартера спроси. Я полагаю, что в уго устах "сложный" как раз и означает "трудный" (часто встречающаяся замена). Сама по себе сложность вполне объективна: пересчитываем сущности, пересчитываем связи — и всё.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Самый сложный для понимания паттерн
От: Mishka Норвегия  
Дата: 18.11.11 11:06
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


Самый сложный для начинающих — inversion of control. Это как в бридже двойной сквиз, вроде как понятно и очень красиво, но вот когда ситуация как раз для него, народ теряется.

P.S. Визитор фигня, обычный дабл диспач, надо только увидеть его в реальном проекте один разок и всё станет ясно.
Re[12]: Самый сложный для понимания паттерн
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.11.11 11:14
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Ты это... Не путай последовательность и меня так не пугай. Сначала обычно предпринимают некие действия по решению вполне конкретной задачи, нередко даже хаотичные (поиск). Потом так или иначе находят удачную последовательность, которую могут зафиксировать в некотором виде. И уже потом этот эту последовательность можно разбить на части, выделить некоторые части в виде шаблонов (паттерны)... Иначе у паттерны просто негде выделять. Если нет конкретных решений, нет и шаблонных решений.


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

Одна из проблем с самими паттернами в том, что люди акцентируют внимание на вариантах паттерна и реализациях этих вариантов. Это как бы нужно, но гораздо важнее исходная проблема, которая разрешается паттерном. Вот на ней и нужно акцентировать внимание. Это делают Физерс и Кент Бек, а вот ГоФ заходят с конца и смещает акцент на картинки и код. Собственно неудивтельно, что Кент Бек подкалывает их в своей книге.

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

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


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


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

Поскольку задачи могут быть только похожими, принятие решения должно основываться на имеющемся коде и требованиях и тд. Грубо говоря, сначала нужно идентифицировать проблему, вычислить само решение, а уже потом подобрать качественную реализацию. Проблема, после того, как ты её задетектил, будет описываться абстрактно и часто это будет паттерн, например "один читатель, много писателей". Решение тоже как правило описывается абстракциями, по другому мозг просто не умеет работать. Многие из эти абстракций будут паттернами. Конкретная реализация будет зависить от выбора.

Идея в том, что наработаные решения как правило реализуются быстрее и качественнее, нежели просто уникальный кастомный код. Соответсвенно нужно как можно точнее идентифицировать проблему и как можно точнее подбирать решение этой проблемы, после чего подобрать реализацию. Если выбрали паттерн, то всегда будет N-типовых реализаций этого паттерна и никто не обязан следовать буквально учеебнику вроде ГоФ. Это еще одна проблема — многие понимают паттерны слишком буквально и даже если задетектили проблему правильно, нашли решение, то часто выбирают ту реализацию, котоая приведена в букваре.Это снова проблема не паттерная, а принятия решения о конкретной реализации.

I>>Например в шахматах никто не орёт что не надо применять паттерны. Есть например принятый гамбит, отказанный гамбит, контргамбит и более конкретные вроде сицилианская защита, королевский гамбит, дебют ххх и тд и тд. Другой вопрос, что принятие решений основывается не на самих паттернах, а более базовых вещах, в шахматах это фигуры, комбинации и позиция.


ГВ>В шахматах с "применёнными паттернами" не приходится потом жить пользователям и разработчикам. Так что, аналогия плохая.


В шахматах у тебя нет воможности поправить своё решение, ты будешь просто давиться этим до конца партии. а в софте — есть и мне сильно кажется это сильно упрощает дело. Например ты можешь попробовать кучку вариантов или тупо рефакторить код от случая к случаю. При этом сущесвтующая разница в этом вопросе не даёт оснований принимать решения опираясь тоьлко на паттерны, книги или чьи то формулы ("паттерны не нужны").
Re[2]: Самый сложный для понимания паттерн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.11.11 19:38
Оценка:
Здравствуйте, Mishka, Вы писали:

M>P.S. Визитор фигня, обычный дабл диспач


Ну вот ты и продемонстрировал, что паттерн посетитель не понял.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re: Самый сложный для понимания паттерн
От: alexeiz  
Дата: 20.11.11 21:23
Оценка:
Здравствуйте, Sorc17, Вы писали:

S>Может вопрос слегка глупый, просто я новичок Какой, вы считаете, самый сложный паттерн? Если бы вы самому сложному поставили 10 баллов по шкале сложности, то сколько бы вы поставили абстрактной фабрике?


Знатокам паттернов: насколько быстро вы определите паттерн в вопросе по ссылке?

https://groups.google.com/d/topic/comp.lang.c++/CdjoOi0e_Ig/discussion
Re[3]: Самый сложный для понимания паттерн
От: alexeiz  
Дата: 21.11.11 01:28
Оценка:
Здравствуйте, о_О, Вы писали:

A>>Знатокам паттернов: насколько быстро вы определите паттерн в вопросе по ссылке?


A>>https://groups.google.com/d/topic/comp.lang.c++/CdjoOi0e_Ig/discussion


о_О>Эталонный пример говнокода


Те, паттерны здесь никак нельзя применить?
Re[4]: Самый сложный для понимания паттерн
От: о_О
Дата: 21.11.11 08:20
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, о_О, Вы писали:


A>>>Знатокам паттернов: насколько быстро вы определите паттерн в вопросе по ссылке?


A>>>https://groups.google.com/d/topic/comp.lang.c++/CdjoOi0e_Ig/discussion


о_О>>Эталонный пример говнокода


A>Те, паттерны здесь никак нельзя применить?


можно. proxy
Re[5]: Самый сложный для понимания паттерн
От: alexeiz  
Дата: 21.11.11 15:29
Оценка:
Здравствуйте, о_О, Вы писали:

о_О>Здравствуйте, alexeiz, Вы писали:


A>>Здравствуйте, о_О, Вы писали:


A>>>>Знатокам паттернов: насколько быстро вы определите паттерн в вопросе по ссылке?


A>>>>https://groups.google.com/d/topic/comp.lang.c++/CdjoOi0e_Ig/discussion


о_О>>>Эталонный пример говнокода


A>>Те, паттерны здесь никак нельзя применить?


о_О>можно. proxy


Какие еще будут варианты?
Re[6]: Самый сложный для понимания паттерн
От: о_О
Дата: 22.11.11 04:05
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, о_О, Вы писали:


о_О>>Здравствуйте, alexeiz, Вы писали:


A>>>Здравствуйте, о_О, Вы писали:


A>>>>>Знатокам паттернов: насколько быстро вы определите паттерн в вопросе по ссылке?


A>>>>>https://groups.google.com/d/topic/comp.lang.c++/CdjoOi0e_Ig/discussion


о_О>>>>Эталонный пример говнокода


A>>>Те, паттерны здесь никак нельзя применить?


о_О>>можно. proxy


A>Какие еще будут варианты?


не знаток. в книгу за названиями лезть лень
Re[3]: Самый сложный для понимания паттерн
От: Mishka Норвегия  
Дата: 22.11.11 15:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Mishka, Вы писали:


M>>P.S. Визитор фигня, обычный дабл диспач


AVK>Ну вот ты и продемонстрировал, что паттерн посетитель не понял.


Не смеши.
Re[4]: Самый сложный для понимания паттерн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 22.11.11 15:44
Оценка:
Здравствуйте, Mishka, Вы писали:

M>>>P.S. Визитор фигня, обычный дабл диспач


AVK>>Ну вот ты и продемонстрировал, что паттерн посетитель не понял.


M>Не смеши.


Да куда уж тут смешить, тут грустить надо
AVK Blog
Re[6]: Самый сложный для понимания паттерн
От: Enomay  
Дата: 23.11.11 14:25
Оценка:
M> То же ведь придумали данные с методами в одном классе держать...

не данные, но состояние
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.