Язык шаблонов

Язык шаблонов — это метод описания хороших методов проектирования или моделей полезной организации в области экспертных знаний. Этот термин был придуман архитектором Кристофером Александром и популяризирован его книгой 1977 года A Pattern Language.

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

Что такое шаблон?
Когда дизайнер разрабатывает что-то — дом, компьютерную программу или лампу — они должны принимать множество решений о том, как решать проблемы. Одна проблема документирована с ее типичным местом (синтаксисом) и использует (грамматику) с наиболее распространенным и признанным хорошим решением, увиденным в дикой природе, как примеры, встречающиеся в словарях. Каждая такая запись представляет собой единый шаблон проектирования. Каждый шаблон имеет имя, описательную запись и некоторые перекрестные ссылки, похожие на словарные записи. Документированный шаблон должен объяснить, почему это решение хорошо в контексте шаблона.

Элементарные или универсальные шаблоны, такие как «дверь» или «партнерство», являются универсальными идеалами дизайна, либо как находящиеся в опыте, либо для использования в качестве компонентов на практике, явно описываемые как целостные резолюции сил в повторяющихся контекстах и ​​обстоятельствах, будь то в архитектуре, медицина, разработка программного обеспечения или управление и т. д. Шаблоны могут быть изобретены или найдены и изучены, например, закономерности, характерные для окружающей среды человека.

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

Описание языка — словарь — это набор названных, описанных решений проблем в интересующей области. Они называются шаблонами проектирования. Так, например, язык для архитектуры описывает такие элементы, как: поселения, здания, комнаты, окна, задвижки и т. Д.
Каждое решение включает синтаксис, описание, которое показывает, какое решение подходит для более крупного, более полного или более абстрактного дизайна. Это автоматически связывает решение с сетью других необходимых решений. Например, в комнатах есть способы получить свет, а также способы привлечения людей и выхода.
Решение включает грамматику, которая описывает, как решение решает проблему или дает преимущество. Таким образом, если выгода не нужна, решение не используется. Возможно, эту часть дизайна можно оставить пустой, чтобы сэкономить деньги или другие ресурсы; если людям не нужно ждать, чтобы войти в комнату, простой дверной проем может заменить зал ожидания.
В описании языка, перекрестном индексе грамматики и синтаксиса (часто с буквальным алфавитным индексом имен паттерна) на другие именованные решения, разработчик может быстро подумать о решении из одного и того же решения, а также документировать их логически. В книге Кристофера Александра «Образцовый язык» паттерны находятся в порядке убывания по размеру с отдельным алфавитным индексом.
Сеть отношений в индексе языка предоставляет много путей в процессе проектирования.
Это упрощает конструкторскую работу, потому что дизайнеры могут начать процесс с любой части проблемы, которую они понимают, и работать с неизвестными частями. В то же время, если язык шаблонов хорошо работал для многих проектов, есть основания полагать, что даже дизайнер, который не полностью понимает проблему дизайна, сначала завершит процесс проектирования, и результат будет полезен. Например, лыжники, идущие внутрь, должны проливать снег и хранить оборудование. Мелкие уборщики снега и сапога должны оставаться снаружи. Оборудование нуждается в уходе, поэтому стойки должны быть внутри.

Многие шаблоны образуют язык
Так же, как слова должны иметь грамматические и семантические отношения друг с другом, чтобы сделать разговорным языком полезным, шаблоны проектирования должны быть связаны друг с другом положением и служебным порядком, чтобы сформировать язык шаблонов. Работа Кристофера Александра описывает процесс декомпозиции, в котором у дизайнера есть проблема (возможно, коммерческое задание), выбирает решение, затем обнаруживает новые, более мелкие проблемы, возникающие в результате решения большего размера. Иногда меньшие проблемы не имеют решения, и нужно выбрать другое большее решение. В конечном счете все остальные проблемы дизайна достаточно малы или достаточно рутинны, чтобы их можно было решить путем импровизации строителями, и «дизайн» сделан.

В зависимости от проблемы фактическая организационная структура (иерархическая, итеративная и т. Д.) Остается на усмотрение дизайнера. Это явно позволяет дизайнеру изучить дизайн, начиная с небольшой части. Когда это происходит, разработчик часто понимает, что проблема на самом деле является частью более крупного решения. На данный момент дизайн почти всегда становится лучшим дизайном.

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

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

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

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

Например, образец Александра «МЕСТО ДЛЯ ЖЕНЩИНЫ» адресует автобусные остановки так же, как залы ожидания в хирургии, предлагая при этом полезные и конструктивные решения. «Ганг-оф-четыре» шаблоны проектирования книг от Gamma et al. предлагает решения, не зависящие от языка программирования, и область приложения программы.

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

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

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

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

Часто эти проблемы возникают из-за конфликта разных интересов или «сил». Шаблон возникает как диалог, который затем поможет сбалансировать силы и, наконец, принять решение.

Например, может быть шаблон, предлагающий беспроводной телефон. Силам была бы потребность общаться, и нужно было делать другие вещи в одно и то же время (приготовление пищи, проверка книжной полки). Очень специфический шаблон будет просто «БЕСПРОВОДНОЙ ТЕЛЕФОН». Более общие шаблоны будут «БЕСПРОВОДНОЕ УСТРОЙСТВО» или «СРЕДНЯЯ ДЕЯТЕЛЬНОСТЬ», предполагая, что вторичная деятельность (например, разговор по телефону или проверка карманов ваших джинсов) не должны мешать другим действиям.

Несмотря на то, что в его контексте довольно неспецифичны, силы в шаблоне «ВТОРИЧНАЯ ДЕЯТЕЛЬНОСТЬ» очень похожи на те, что в «БЕСПРОВОДНОЙ ТЕЛЕФОНЕ». Таким образом, конкурирующие силы можно рассматривать как часть сущности концепции дизайна, выраженной в шаблоне.

Шаблоны содержат свое собственное обоснование
Обычно шаблон содержит обоснование, относящееся к некоторым заданным значениям. Для Кристофера Александра очень важно подумать о людях, которые свяжутся с куском архитектуры. Одна из его ключевых ценностей — заставить этих людей чувствовать себя более живыми. Он говорит о «качестве без имени» (QWAN).

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

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

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

Общая структура и макет
Обычно автор языка или коллекции шаблонов выбирает общую структуру для всех шаблонов, которые он содержит, разбивая их на общие разделы, такие как контекст, постановка задачи, решение и т. Д.

Например, шаблоны Кристофера Александра состоят из короткого имени, рейтинга (до двух символов «*»), сенсибилизирующей картины, описания контекста, постановки задачи, более длинной части текста с примерами и пояснениями, решения заявление, эскиз и дальнейшие ссылки. Эта структура и макет иногда упоминаются как «александрийская форма».

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

Значимые имена
Когда дизайн выполняется командой, имена паттернов образуют словарь, который они могут использовать. Это делает необходимым, чтобы имена паттернов были легко запоминаемыми и очень описательными. Некоторые примеры из работ Александра — это WINDOW PLACE (помогает определить, где окна должны идти в комнате) и A PLACE TO WAIT (например, позволяет определить характеристики автобусных остановок и комнаты ожидания больниц).

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

В книге Александра такие ссылки собраны в части «ссылок» и отражены в «контекстной» части связанного шаблона, поэтому общая структура представляет собой ориентированный граф. Образец, который связан с «ссылками», обычно решает проблему более низкого масштаба, что предлагается как часть проблемы более высокого масштаба. Например, в шаблоне «ОБЩЕСТВЕННАЯ НАРУЖНАЯ НОМЕРА» имеется ссылка на «ЛЕСТНИЦЫ СИДЕНИЙ».

Даже без описания шаблона эти ссылки вместе со значимыми именами несут сообщение: при создании места вне места, где люди могут провести время («ОБЩЕСТВЕННАЯ НАРУЖНАЯ КОМНАТА»), подумайте о том, чтобы окружить его лестницей, где люди могут сидеть («ЛЕСТНИЦЫ СИДЕНИЙ» «). Если вы планируете офис («СЕМИНАРЫ И ОФИСЫ»), подумайте о том, чтобы организовать рабочие пространства в небольших группах («МАЛЫЕ РАБОЧИЕ ГРУППЫ»). Александр утверждает, что соединения в сети можно считать еще более значимыми, чем текст самих шаблонов.

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

Идея увязки обычно принимается среди авторов шаблонов, хотя смысловое обоснование ссылок может быть разным. Однако некоторые авторы, например, Gamma et al. в «Шаблонах дизайна», мало используйте привязку шаблонов — возможно, потому, что это не так важно для их коллекции шаблонов. В таком случае мы будем говорить о каталоге шаблонов, а не о шаблоне.

Применение
Александр поощрял людей, которые использовали его систему, расширить свой язык с помощью собственных образцов. Чтобы это сделать, его книги не фокусируются строго на архитектуре или гражданском строительстве; он также объясняет общий метод языков шаблонов. Первоначальная концепция книги «Язык шаблонов» заключалась в том, что она будет опубликована в виде 3-кольцевого связующего, так что страницы могут быть легко добавлены позже; это оказалось непрактичным в издательской деятельности. Подход языка шаблонов использовался для документирования опыта в различных областях. Некоторые примеры — это архитектурные модели, модели компьютерных наук, шаблоны проектирования взаимодействия, педагогические модели, шаблоны социальных действий и модели упрощения групп. Также был рекомендован языковой подход к шаблону как способ пропаганды гражданской разведки, помогая координировать действия для разных людей и сообществ, которые совместно работают над важными совместными проблемами. Спецификации Александра для использования языковых паттернов, а также создания новых остаются влиятельными, и его книги ссылаются на стиль специалистами в не связанных между собой областях.

Важно отметить, что такие обозначения, как UML или коллекция символов блок-схемы, не являются языками шаблонов. Их можно было более точно сравнить с алфавитом: их символы можно было использовать для документирования языка шаблонов, но они сами по себе не являются языком. Рецепт или другой последовательный набор шагов, которые следует соблюдать, только с одним правильным путем от начала до конца, также не является языком шаблонов. Тем не менее, процесс разработки нового рецепта может выиграть от использования языка шаблонов.

Простой пример шаблона
Имя: ChocolateChipRatio
Контекст: вы готовите печенье шоколадного печенья небольшими партиями для семьи и друзей
Сначала рассмотрите эти шаблоны: SugarRatio, FlourRatio, EggRatio
Задача: Определить оптимальное соотношение шоколадной стружки к тесту печенья
Решение. Соблюдайте, что большинство людей считают шоколад лучшей частью шоколадного печенья. Также обратите внимание, что слишком много шоколада может помешать печенью держаться вместе, уменьшая его привлекательность. Поскольку вы готовите небольшими партиями, стоимость не рассматривается. Поэтому используйте максимальное количество шоколадных чипсов, что приводит к действительно крепкому печенью.
Рассмотрим следующий: NutRatio или CookingTime или FreezingMethod

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

Основы и философия подхода «шаблонный язык» первоначально были популяризированы в книге «Язык шаблонов», написанной Кристофером Александром и пятью коллегами в Центре экологической структуры в Беркли, Калифорния, в конце 1970-х годов. В то время как язык паттернов содержит 253 «шаблона» из первого шаблона, «Независимые регионы» (самые общие) до последнего, «Вещи из вашей жизни», книга Александра «Временный путь строительства» более подробно описывает мотивацию и цель работы. Следующие определения «шаблон» и «язык шаблонов» перефразируются на языке шаблонов:

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

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

Области приложений
Идея Кристофера Александра была принята в других дисциплинах, часто гораздо более сильно, чем первоначальное применение шаблонов к архитектуре, как это показано в книге «Язык шаблонов». Недавние примеры включают шаблоны проектирования программного обеспечения в разработке программного обеспечения и, в более общем плане, архитектурные шаблоны в информатике, а также шаблоны проектирования взаимодействия. Педагогические шаблоны используются для документирования передовых методов обучения. В 2008 году была опубликована книга «Освобождающие голоса: язык шаблонов для коммуникационной революции», содержащий 136 шаблонов для использования информации и коммуникации для обеспечения устойчивости, демократии и позитивных социальных изменений, а также веб-сайт, содержащий еще больше шаблонов. В 2011 году была опубликована палуба «Групповые работы: язык шаблонов для приведения жизни в собрания и другие собрания». Недавно в архитектуру системной архитектуры были внедрены шаблоны. Шахматная стратегия и тактика включают в себя множество шаблонов от открытия до матчей.

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