LINUX.ORG.RU

А ты читал GoF? Там было написано, что шаблоны проектирования про проектирование, а не про их реализацию.

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

vzzo ★★★ ()

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

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

Вообще-то так называемые «шаблоны проектирования» – это штука из Java-мирка

Design Patterns вышла в 1994, Java — в 1995.

anonymous ()
Ответ на: комментарий от fenris

Вообще-то так называемые «шаблоны проектирования» – это штука из Java-мирка

То-то в оригинальной книге половина примеров на Smalltalk, бгг.

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

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

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

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

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

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

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

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

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

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

Шаблоны — это признак недостаточной выразительности языка.

Опять же, это устовшиеся практики решения задач. При чем тут выразительность языка?

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

Опять же, это устовшиеся практики решения задач. При чем тут выразительность языка?

Потому что есть принцип do not repeat yourself. В идеале, все эти устоявшиеся практики можно было бы вынести в библиотеки и использовать уже их, а не заниматься зубрёжкой и копипастой.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Dudraug

Мой поинт как раз в том, что есть бест практисы, обмен опытом, идиоматический подход, но универсального набора абстракций для всех языков сразу (даже только ООП) никогда не будет, а попытки перенести что-то в готовом виде из смолтока в современный C++ ожидаемо терпят фиаско.

В этом месте я попрошу сторонников паттернов привести примеры проектов, документированных в терминах шаблонного подхода.

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

Не, примеры реализации там тоже есть (хотя бы примеры интерфейсов).

Вопрос в том, что я хреново знаком с плюсами и их особенностями.

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

но универсального набора абстракций для всех языков сразу (даже только ООП) никогда не будет

пиздёшь.

слава монаде!

template <typename T>
class Monada {
public:
  virtual ~Monada() {}
  virtual result(const T &) = 0;
  virtual none() = 0
};

void divide(int a, int b, Monada <int> &m) 
{ 
  if (b==0) {
    m.none();
  } else {
    int tmp = a/b;
    m.result(tmp);
  }
}

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

Это примерно попендикулярно собственно шаблонам проектирования, которые использовались «еще давно». Это скорее относится к идиомам «modern С++».

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Да, наверно я некорректно задал вопрос.

В общем, спасибо тебе и eao197, я пошел копаться.

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

Ты определись, тебе сувать паттерны в библиотеку или это over-engineering.

Иначе получается троллинг.

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

Ты определись, тебе сувать паттерны в библиотеку или это over-engineering.

В данном конкретном случае это и то и другое сразу. Кстати, подобных вещей (Abstract Singleton Proxy Factory) для других языков я не припомню, т.е. это исключительно болезнь Java.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от fenris

Ты про какие-то хитровыкрученные паттерны что ли? Базовые типа DI и прочих фабрик живут везде, от C++ до питона.

anonymous ()

Саттер Г., Александреску А. «Стандарты программирования на С++»

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

Вообще-то так называемые «шаблоны проектирования» – это штука из Java-мирка

Design Patterns вышла в 1994, Java — в 1995.

Негодяи угнали машину времени!

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

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

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

Modern C++ Design очень, _очень_ устарел. Сейчас (в 11/14/17) половина той акробатики, что там выделывает товарищ, не нужна.

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

Речь была про Александреску. А «эту» я сам только недавно с Амазона получил, ещё не читал

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

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

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

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

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

школоло,

Кто придумывает паттерны?

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

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

Идея показалась заманчивой четвёрке авторов Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес, которую принято называть «бандой четырёх» (Gang of Four). В 1995 году они написали книгу «Design Patterns: Elements of Reusable Object-Oriented Software», в которой применили концепцию типовых паттернов в программировании. В книгу вошли 23 паттерна, решающие различные проблемы объектно-ориентированного дизайна.

так когда и кем были придуманы паттерны ?

anonymous ()
Ответ на: комментарий от hateyoufeel

Шаблоны — это признак недостаточной выразительности языка

И что, есть достаточно выразительные языки, без шаблонов?

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