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

редактировать

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

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

Содержание
  • 1 Что такое шаблон?
  • 2 Многие шаблоны образуют язык
  • 3 Проблемы проектирования в контексте
    • 3.1 Уравновешивание сил
    • 3.2 Шаблоны содержат собственное обоснование
  • 4 Общая структура и макет
    • 4.1 Значимые имена
  • 5 Агрегация в ассоциативной сети (язык шаблонов)
    • 5.1 Использование
    • 5.2 Простой пример шаблона
  • 6 Источник
  • 7 Домены приложений
  • 8 См. Также
  • 9 Ссылки
  • 10 Дополнительная литература
  • 11 Внешние ссылки
    • 11.1 О шаблонах в целом
    • 11.2 Онлайн-коллекции шаблонов
Что такое шаблон?

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

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

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

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

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

Многие шаблоны образуют язык

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

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

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

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

Проблемы проектирования в контексте

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

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

Например, шаблон Александра «МЕСТО ЖДАТЬ» касается автобусных остановок так же, как залы ожидания в хирургии, но при этом предлагает полезные и конструктивные решения. Книга Design Patterns «Банда четырех», автор - Gamma et al. предлагает решения, не зависящие от языка программирования и прикладной области программы.

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

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

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

Уравновешивание сил

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

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

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

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

Шаблоны содержат собственное обоснование

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

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

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

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

Общая структура и макет

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

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

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

Значимые имена

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

Агрегация в ассоциативной сети (язык шаблонов)

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

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

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

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

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

Использование

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

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

Простой пример шаблона

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

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

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

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

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

Области приложений

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

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

См. также
Ссылки
Дополнительная литература
  • Кристофер Александер, Сара Исикава, Мюррей Сильверстайн (1974). «Коллекция шаблонов, которые создают центры мультисервисных услуг» в Деклан и Маргрит Кеннеди (ред.): Внутренний город. Ежегодник архитекторов 14, Элек, Лондон. ISBN 0 236 15431 1.
  • Александр, К. (1977). Язык шаблонов: Города, Здания, Строительство. США: Oxford University Press. ISBN 978-0-19-501919-3.
  • Александр, К. (1979). Вневременный способ строительства. США: Издательство Оксфордского университета. ISBN 978-0-19-502402-9.
  • Шулер Д. (2008). Освобождающие голоса: образец языка для коммуникативной революции. США: MIT Press. ISBN 978-0-262-69366-0.
  • Leitner, Helmut (2015): Pattern Theory: Introduction and Perspectives on the Tracks of Christopher Alexander. ISBN 1505637430.
Внешние ссылки

О шаблонах в целом

Онлайн-коллекции шаблонов

Последняя правка сделана 2021-06-01 05:33:40
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте