ZigScript

Нельзя ли заменить точку с запятой на свастику?~ Адольф Гитлер про ZigScript

**ZigScript**  (нем.  *Зига-Скрипт* ) — один из первых языков программирования, созданный специально для инновационной немецкой разработки, программируемого компьютера (автомат для кофе в Рейхсканцелярии), в 1942-ом году по заказу Адольфа Гитлера.

## История создания

В декабре 1941 года в Рейхсканцелярии, г. Берлин, Адольф Гитлер, дабы согреться, приказал поставить автомат для кофе. Автомат был быстро сконструирован и собран, однако умные арийцы создали настолько инновационную технологию, что для кофейного автомата необходимо было написать логику его работы. На тот момент программируемых компьютеров ещё не было, как и языков программирования: ни низкоуровневых, ни высокоуровневых, поэтому было принято решение создавать свой, отечественный, язык программирования. Так был начат проект Super-Duper-Zunge (нем. "Супер-Пупер-Язычок"; историки до сих пор не выяснили, зачем проект был назван в честь элемента застёжки для одежды).

## Выпуски ZigScript

- **ZigScript Kaffeekaffee**  (1942) - Первая версия ZigScript "Кофеёк-кофеёчек", содержащая лишь конструкции, используемые в программе для кофейного автомата, содержится лишь один тип переменных.

- **ZigScript++**  (1943) - Улучшенная версия оригинального ZigScript Kaffeekaffee, содержащая большее количество конструкций и дополнительные два типа переменных.

- **ZigScript++ Grafische wunderwaflische Modifikation**  (1944) - Дополненная версия ZigScript++ с добавленной графикой Maus (см. ниже) и другими изменениями.

- **ZigScript++ Grafische wunderwaflische Modifikation: Besiegt, aber nicht gebrochen**  (1947) - Особый юбилейный выпуск ZigScript++ Grafische wunderwaflische Modifikation, выпущенный в честь пятилетия со дня выпуска ZigScript Kaffeekaffee. Здесь были собраны все версии ZigScript: ZigScript Kaffeekaffee Alpha, ZigScript Kaffeekaffee Beta, ZigScript Kaffeekaffee, ZigScript+, ZigScript++, ZigScript++ Grafische wunderwaflische Modifikation Alpha Alpha, ZigScript++ Grafische wunderwaflische Modifikation Alpha Beta, ZigScript++ Grafische wunderwaflische Modifikation Beta, ZigScript++ Grafische wunderwaflische Modifikation Gamma, ZigScript++ Grafische wunderwaflische Modifikation и ZigScript++ Grafische wunderwaflische Modifikation: Besiegt, aber nicht gebrochen, из-за чего данный выпуск вообще не работает из-за рекурсии.

- (Предположительно существовал ещё один выпуск, но его название вряд ли сюда уместится)

## Общие сведения

- Руководители проекта Super-Duper-Zunge решили, что ZigScript должен был перенять всю стойкость, резкость, выразительность и нечитабельность немецкого языка, поэтому главный инженер проекта принял весьма резкое решение - убрать все гласные.

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

- В язык было также добавлено большое количество операторов (см. ниже) (однако свастику так и не добавили), используемых как во многих местах, так и только в определённых, что главный инженер позже назовёт "die dümmste Lösung" (нем. "Самое тупорылое решение"). В язык одним из стажёров были тайно добавлены сочетания символов, как новые операторы (см. ниже). Позже руководители проекта поленились их удалять, и они остались вплоть до финальной версии, в отличии от стажёра, который направился в концентрационный лагерь, или, выражаясь на языке ZigScript, zr prktknt #

- Язык ZigScript не создавался, как объектно-ориентированный, поэтому различных конструкций классов в нём не найти, однако зато в нём можно найти огромное количество вариантов одних и тех же конструкций, что главный инженер проекта позже назовёт "eine weitere dümmste Lösung" (нем. "Ещё одно самое тупорылое решение").

- Существует встроенная возможность создавать графику Maus

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

- Любая программа на ZigScript должна начинаться с особой конструкции: hlhtlr. Подобный патриотический жест был высоко оценён на многочисленных конференциях, среди которых Мюнхенское соглашение (раздел об установке кофейного автомата в Судетской области) и Нюрнбергский процесс.

- В среднем российскому программисту требуется до 3 лет на написание программы на ZigScript: 12 часов на код и 3 года лишения свободы.

 КПД этой штуки что-то около 0,88% 
 — Главный инженер Super-Duper-Zunge 

## Операторы

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

 Список операторов ZigScript

 Оператор 
 Описание оператора 
 + 
 Добавление к переменной 
 - 
 Вычитание из переменной 
 * 
 Взрыв переменной 
 / 
 Деление переменной 
 = 
 Присвоение переменной 
 == 
 Равенство 
 === 
 Шоссе 
 > 
 Больше 
 >> 
 Сильно больше 
 < 
 Меньше 
 << 
 Сильно меньше 
 ? 
 Непонятно, больше или меньше 
 -> 
 К переменной 
 <- 
 Подальше от переменной 
 # 
 Посадить переменную в концентрационный лагерь 
 : 
 Описание конструкции 
 {} 
 Границы описания конструкции 
 () 
 Границы функций 
 ! 
 Вызов глобальной переменной, константы или функции 
 ; 
 Обозначение конца строки 
 . 
 Окончание программы (Пишется после wlhll) 

## Типы переменных

При создании переменной в ZigScript, Вы обязаны дать ей свой единственный тип, который указывается следующей конструкцией:

rschffn <тип переменной> <имя переменной>

rschffn (Erschaffen, нем. "Сотворить") - конструкция, создающая новую переменную.
Пример:

rschffn jd x;

Всего в ZigScript существует 4 типа переменных (см. ниже).

 Типы переменных ZigScript

 Тип 
 Описание 
 jd (Jude, нем. "Еврей") 
 Грязное число (нецелочисленное) 
 rr (Arier, нем. "Ариец") 
 Чистое число (целочисленное) 
 mnkmpf (Mein Kampf, нем. "Моя борьба") 
 Книга, строка, символ 
 whrht (Wahrheit, нем. "Истинность") 
 Правда или ложь 

## Падежи переменных

В разных ситуациях обращения к переменным должны быть разными.

- Если переменная создаётся, то используется инфинитив - форма без изменений.

- Если с переменной совершается какое-то действие при помощи оператора, то используется Дательный Падеж Вручительного Наречия - к переменной добавляется "zr" (Zur, нем. "К") в начале.

- Если переменная используется в качестве аргумента функции, то используется Винительный Падеж Или-не-винительного Вот-в-чём-наречия - к переменной добавляется "fhrr" (Führer, нем. "Гид")

- Если переменная используется в качестве условия, то используется Винительный Падеж Условного Наречия - добавляется "bsdrfhrrst" (Ob es der Führer ist, нем. "А Гид ли это?")

- Если оператор "->" стоит перед переменной, то для этой переменной используется Дательный Падеж Передательного Перенаречия - используется "nkmmn" (Ankommen, нем. "Прийти")

- Если оператор "<-" стоит перед переменной, то для этой переменной используется Уходительный Падеж Отдалительного Наречия - используется "wgghn" (Weggehen, нем. "Уйти")

## Основные конструкции ZigScript

 Конструкции

 Конструкция 
 Описание 
 hlhtlr (Heil Hitler, нем. "Здравствуй, небо в облаках") 
 Начало программы 
 wlhll (Walhalla, нем. "Фольгалла") 
 Конец программы 
 rschffn (Erschaffen, нем. "Сотворить") <тип переменной> <имя переменной> 
 Создание переменной 
 vrwndnsnschwrdrg (Verwenden Sie eine schwere Droge, нем. "Употребить тяжёлый наркотик") 
 Создание функции 
 bkmmn (Bekommen, нем. "Получить") <переменная> 
 Получить ввод от пользователя 
 fjdnzghrgktprfn (Auf Judenzugehörigkeit prüfen, нем. "Проверка на родство с евреями") <условие> 
 Условие 
 ssphs (Sisyphus, нем. "Сизиф") <условие> 
 Цикл с условием завершения 
 wdrhln (Wiederholen, нем. "Повторить") <количество повторений> 
 Повторяет что-то несколько раз 
 zgwrfn (Zig werfen, нем. "Кинуть зигу") 
 Заканчивает выполнение цикла 
 bmbbwrfn (Bombe abwerfen, нем. "Скинуть бомбу") <значение> 
 Возвращает некое значение 
 sbrngntrssffzrnndprsnldrchfhrn (Säuberung unter SS-Offizieren und Personal durchführen, нем. "Провести чистку среди офицеров СС и личного состава") <переменная> 
 Удаляет переменную 
 kffnflln (Kaffee einfüllen, нем. "Налить кофе") 
 Налить кофе 
 shnhnzfgn (Sahne hinzufügen, нем. "Добавить сливок") 
 Добавить сливок 

## Конструкции графики Maus

 Конструкции Maus

 nstzpln (Einsatzplan, нем. "План боевых действий") 
 Создание графики Maus 
 chlrvntlffnn (Chlorventil öffnen, нем. "Открыть хлорный клапан") 
 Указание на то, что Maus должен начать оставлять след 
 chlrvntlschlssn (Chlorventil schliessen, нем. "Закрыть хлорный клапан") 
 Указание на то, что Maus должен прекратить оставлять след 
 brbrss (Barbarossa, нем. "Барбоскин") <длина> 
 Продвигает вперёд Maus на указанную длину 
 stlngrd (Stalingrad, нем. "Сталинград") 
 Поворачивает Maus в обратную сторону 
 hknkrzdrhn (Hakenkreuz drehen, нем. "Покрутить свастику") <угол> 
 Поворачивает Maus на выбранный угол 

## Примеры программ на ZigScript

- Самая первая программа на ZigScript. Логика работы кофейного автомата.

hlhtlr;

rschffn whrht shn;

bkmmn fhrr shn;

fjdnzghrgktprfn bsdrfhrrst shn: {

shnhnzfgn;

};

kffnflln;

wlhll.

- Программа работы Зигамёта.

hlhtlr;

nstzpln;

wdrhln 4: {

brbrss 10;

hknkrzdrhn 90;

brbrss 10;

stlngrd;

brbrss 10;

hknkrzdrhn -90;

brbrss 10;

hknkrzdrhn -90;

};

wlhll.