S2 (язык программирования) - S2 (programming language)

S2
ПарадигмаОбъектно-ориентированный
РазработчикБрэд Фицпатрик, Мартин Аткинс
Впервые появился1999 (1999)
Интернет сайтwww.livejournal.com/ doc/ с2

S2 (Система стилей 2) является объектно-ориентированный язык программирования разработан в конце 1990-х годов Брэд Фицпатрик, Мартин «Март» Аткинс и другие за службу онлайн-журналов LiveJournal чтобы пользователи могли полностью контролировать внешний вид своих страниц. Исходный код S2 компилируется в Perl, который затем веб-сервер может выполнять непосредственно для отдельных запросы веб-страниц.

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

В этой статье в качестве примеров будет использоваться реализация S2 в LiveJournal. Ссылку на подробную документацию об этой реализации можно найти внизу.

Особенности языка

Структура S2 очень похожа на структуру большинства императивное программирование языков и включает базовые инструкции, такие как присвоение переменных, арифметические операции, условные управление потоком и за циклов по конечным множествам (однако в нем явно отсутствует пока петли). Будучи объектно-ориентированным, S2 позволяет объявлять классы с членами и методами, но также могут быть определены глобальные (не зависящие от класса) функции. Рекурсия разрешена, но функции вложенности - нет.

Слои и свойства

Отличительной чертой S2 является то, что исходный код организован в отдельные слои, из которых существует шесть различных типов (основной, i18nc, макет, i18n, тема и Пользователь). Эти слои образуют древовидную структуру.

В основе лежит основной слой, уровень, который определяет все классы и их методы, специфичные для веб-сайта, на котором используется S2. В случае LiveJournal эти классы представляют отдельные представления журнала (Недавние записи, Архив и т. Д.) И объекты, связанные с сайтом (пользователи, записи журнала и т. Д.). Он предоставляет простые реализации по умолчанию для всех методов, а также глобальные функции общего назначения. Некоторые функции определены как «встроенные» и реализованы в Perl в подсистеме S2; все остальные функции реализованы в самом S2 и компилируются в код Perl компилятором S2.

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

Основному слою подчиняются i18nc («основная интернационализация»), которые позволяют переопределить свойства текстовой строки в основном слое переводами на другие языки.

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

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

Интернационализация

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

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

Документация

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

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

Мастер настройки

Сеть S2 пользовательский интерфейс позволяет пользователям изменять значения свойств макета, не требуя от них написания фактического исходного кода S2. Этот интерфейс называется «мастером настройки», и он создает пользовательский уровень, на котором хранятся предпочтительные для пользователя значения свойств.

Непреднамеренное использование S2

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

В частности, на момент написания этой статьи на S2 было написано четыре игры: Башни Ханоя [1], две версии Крестики-нолики, и игра «Пешки» [2]. Одна из версий Tic Tac Toe была встроена в стиль журнала в виде прямоугольника на боковой панели.

Смотрите также

внешняя ссылка