LINUX.ORG.RU
ФорумTalks

[паттерны программирования] Monkey see, monkey do


1

1

Последние месяцы стали для меня школой по освоению паттернов проектирования. Осилив несколько книг, в том числе и «PHP объекты, шаблоны и методики программирования» Мэтта Зандстры, стал применять их на практике. На днях запилил в обработке дерева элементов Посетителя (Visitor), чем остался очень доволен. Красиво, чёрт возьми! А главное логично и понятно.

Теперь на досуге решил поискать новые подходы, новые паттерны. Поиски оказались не особо удачными, пока обнаружил один (небезынтересный надо сказать) подход в работе группы программистов. Официальное название сего паттерна «Monkey see, monkey do».

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

Приведу описание этого паттерна полностью:

Возьмите несколько обезьян и посадите их в клетку. Внутри клетки повесьте банан - высоко, но досягаемо при определённых усилиях. Теперь приготовьтесь и ждите. Очень скоро самая умная из обезьян начнет карабкаться по решётке чтобы достать банан. Пока она его не достала, окатите ледяной водой из шланга всех обезьян в клетке. При этом можно издать какой-нибудь злодейский смех типа «Мухахахаха!»

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

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

Когда все обезьяны научатся держаться от банана подальше, можно спрятать шланг, он больше не нужен. Теперь давайте уберём одного из этих опытных, битых «ветеранов» и заменим его небитым новичком. Этот новичок очень быстро попытается достать банан и тут-же получит тёплое дружеское избиение от своих новых приятелей.

Уберём ещё одного ветерана и добавим другого новичка. Как только он полезет к банану и остальные ветераны начнут выбивать из него дерьмо, предыдущий новичок, всё ещё находясь в удивлении и недоумении, не откажется тем не менее принять участие в празднике. Monkey see, monkey do.

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

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

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

★★★

Это притча на самом деле история СССР в двух абзацах.

Karapuz ★★★★★
()

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

Alex_A_V ★★
()
Ответ на: комментарий от Deleted

Традиционно у программистов с названиями очень плохо.

Это Дзен.

valich ★★★
() автор топика
Ответ на: комментарий от SebastianPoeiro

> Что на других такое не распостраняется?

В других профессиях не выделяют базовые навыки в паттерны :)

valich ★★★
() автор топика

>Теперь на досуге решил поискать новые подходы, новые паттерны.

Анти-паттерны не менее полезны для изучения.

quickquest ★★★★★
()

Работает вообще с любой старой соц. нормой, которая уже давно устарела и не нужна. То же празднование нового года. Спрашивают меня, почему не праздную, спрашиваю, зачем это надо, а мне про традиции втолковывают :)

MahMahoritos ★★★
()
Ответ на: комментарий от valich

>В других профессиях не выделяют базовые навыки в паттерны

4.2 Чаще всего как раз таки выделяют. Старый слесарь будет проклинать ученика за то, что тот молоток неправильно держит, хотя объяснить не может иначе как «меня так учили»

MahMahoritos ★★★
()

Твой баян такой старый, что если бы он был материален, то ты бы озолотился, сдав его в магазин антиквариата.

Как ты думаешь, сколько ему лет?

ChALkeR ★★★★★
()
Ответ на: комментарий от ChALkeR

Как ты думаешь, сколько ему лет?

Я думаю около 150 - 300 лет.

valich ★★★
() автор топика
Ответ на: комментарий от valich

В других профессиях не выделяют базовые навыки в паттерны :)


Да ну?

А как же:
- Лизать боссу
- Клюнуть ближнего, насрать на нижнего
- Подсидеть коллегу

и тд...

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

Я бы даже больше сказал. Все мы фактически живем по паттернам. «Нету высшего образования - будешь мыть полы», «нету машины и квартиры - неудачник», «не перетрахал с 10ток телек - ничтожество», «не красиво одет - хам» и тд и тп.

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

SebastianPoeiro
()
Ответ на: комментарий от MahMahoritos

> хотя объяснить не может иначе как «меня так учили»

А программисты объясняют и каталогизируют ;)

valich ★★★
() автор топика
Ответ на: комментарий от SebastianPoeiro

Ты так говоришь, будто бы _все_ паттерны - это плохо. Давай на каждое рутинное действие делать научное исследование, чё)

Yareg ★★★
()
Ответ на: комментарий от Yareg

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

SebastianPoeiro
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.