Шаблон проектирования как (отсутствующая) функция языка

Иногда люди называют шаблоны проектирования недостающими функциями языка программирования. Чтобы избежать споров о том, что такое шаблон проектирования, допустим, мы рассматриваем только оригинальные шаблоны GoF. Например, шаблон singleton исчезает в Scala, который поддерживает объекты singleton с использованием ключевого слова object .

Ресурсов по этому поводу мало, в частности В шаблонах проектирования отсутствуют особенности языка из вики C2, или Действительно ли шаблоны проектирования являются слабыми местами языка? из SO. Но мне не удалось найти однозначного, объективного и исчерпывающего освещения этого вопроса.

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

Чтобы избежать споров о том, какой PL следует рассматривать, мы также можем исправить это и выбрать: Java (как статически типизированный объектно-ориентированный представитель), Smalltalk (как динамически типизированный представитель), Haskell (как функциональный представитель), Scala ( как гибрид oo / функционального представителя), Lisp (как представитель метапрограммирования), JavaScript (как представитель на основе прототипа). И оставьте другой PL для заметок или комментариев. Я знаю, что мы можем спорить об этом выборе, но это уже было бы, но действительно интересно иметь это для этих языков.

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

Может, эта матрица уже где-то существует? Или у кого-то достаточно знаний для его создания? Или кто-то достаточно заинтересован, чтобы начать и сделать это вики-ответом, чтобы другие могли продолжить?

6
задан Community 23 May 2017 в 12:16
поделиться