"Язык шаблонов" - Дмитрий Чернышов

"Язык шаблонов" - Дмитрий Чернышов

В 1977 году архитектор Кристофер Александр вместе с коллегами по Центру изучения среды в Беркли написал очень полезную книгу «Язык шаблонов» (A Pattern Language). Интересно, что эта книга оказалась одной из самых влиятельных книг XX века, но больше всего — за пределами архитектуры, для которой была написана. Из нее выросли шаблоны проектирования в программировании и даже Википедия.

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

Вот некоторые из этих шаблонов:

Свет с двух сторон каждой комнаты. Комнаты с окнами только на одной стене кажутся мрачными и неуютными, даже если светлы. Люди инстинктивно стремятся в комнаты, освещенные с двух сторон.

Градиент интимности. Дом должен идти от публичного к частному: прихожая, гостиная, кухня, затем спальни. Гость не должен попадать сразу в самое личное.

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

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

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

Вещи из вашей жизни. Дом нужно украшать не декором из каталога, а вещами со своей историей.

Уличное кафе, ниши, встроенные сиденья, островки света вместо равномерного освещения.

Для «живого города» нужно смешение возрастов. Старые здания с дешевой арендой позволяют начинать новые дела, а новые здания приносят инвестиции. Город — это слои времени.

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

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

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

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

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

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

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

Своя комната. У каждого члена семьи, включая детей и каждого из супругов, должно быть свое место, куда можно уйти. (Это, разумеется, оммаж Вирджинии Вулф — я рассказывал о ее эссе с таким же названием)

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

Разная высота потолков. В доме должны быть и высокие помещения для общей жизни, и низкие для уединения. Одинаковые потолки делают пространство монотонным.

Двери в углах. Двери нужно ставить ближе к углам комнаты, а не посередине стены. Тогда комната не превращается в коридор, и ее середину можно использовать.

Толстые стены. Стена должна быть достаточно толстой, чтобы в ней жили ниши, полки, сиденья. Тонкая стена — просто перегородка, толстая — часть жизни.

Встроенные сиденья и ниши. Люди любят сидеть в укрытых местах, спиной к стене. Сиденье, встроенное в нишу у окна, становится любимым местом в доме.

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

Скамья у входной двери. Место, где можно присесть у двери, поговорить с соседом, посмотреть на улицу.

Разные стулья. В комнате не должно быть одинаковых стульев. Люди разные: один любит сидеть прямо, другой — развалиться, третьему нужен низкий стул. Набор одинаковых стульев — порядок ради порядка.

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

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

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

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

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

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

1. Уровни масштаба.

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

2. Сильные центры.

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

3. Границы.

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

4. Чередующееся повторение.

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

5. Положительное пространство.

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

6. Хорошая форма.

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

7. Локальные симметрии.

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

8. Глубокое сцепление и неоднозначность.

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

9. Контраст.

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

10. Градиенты.

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

11. Шероховатость.

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

12. Эхо

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

13. Пустота.

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

14. Простота и внутреннее спокойствие.

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

15. Нераздельность.

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

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

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