Языки программирования и шаблоны проектирования

разные языки программирования имеют разные функции или не имеют определенных функций. Шаблоны проектирования - это способ обойти эти недостатки. Я видел книги и списки о шаблонах проектирования в статических, объектно-ориентированных языках (Java, С++), а также о видеоролях о шаблонах проектирования на Python.

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

Ответ 1

Шаблоны проектирования иногда называются "идиомами". В языках, отличных от OO (C, Forth, COBOL и т.д.), Они просто "обычные способы делать вещи". Иногда их называют "алгоритмами". Каждый язык (действительно, каждая дисциплина) имеет образцы проектирования решений.

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

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

Ответ 2

Для шаблона проектирования в LISP вы можете прочитать this, написанный Питером Норвигом.

Цитата этот слайд:

16 из 23 шаблонов дизайна либо невидимы, либо проще

Ответ 3

В Lisp вместо шаблонов проектирования вы используете:

  • лямбда и закрытие (анонимные функции и среды захвата)
  • функции более высокого порядка (функции, относящиеся к функциям)
  • макросы (расширения синтаксиса)
  • различные стратегии оценки (ленивая оценка, откат)
  • функции первого класса, классы, пространства имен, модули и т.д.
  • динамическая среда (например, замена функций в любое время)
  • и др.

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

Ответ 4

Шаблоны проектирования на самом деле не предназначены для привязки к любому языку. Это более общие решения общих проблем.

Ответ 5

Делегирование и события в С# и .Net делают тривиальным выполнение шаблона наблюдателя , поскольку он так часто используется, например. для обработки событий GUI.