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 - это одна из важнейших составляющих на равне с конструкциями и функциями. Операторы предназначены для взаимодействия с переменными, конструкциями или чем-либо ещё.
Оператор | Описание оператора |
---|---|
+ | Добавление к переменной |
- | Вычитание из переменной |
* | Взрыв переменной |
/ | Деление переменной |
= | Присвоение переменной |
== | Равенство |
=== | Шоссе |
> | Больше |
>> | Сильно больше |
< | Меньше |
<< | Сильно меньше |
? | Непонятно, больше или меньше |
-> | К переменной |
<- | Подальше от переменной |
# | Посадить переменную в концентрационный лагерь |
: | Описание конструкции |
{} | Границы описания конструкции |
() | Границы функций |
! | Вызов глобальной переменной, константы или функции |
; | Обозначение конца строки |
. | Окончание программы (Пишется после wlhll) |
Типы переменных[править]
При создании переменной в ZigScript, Вы обязаны дать ей свой единственный тип, который указывается следующей конструкцией:
rschffn <тип переменной> <имя переменной>
rschffn (Erschaffen, нем. "Сотворить") - конструкция, создающая новую переменную.
Пример:
rschffn jd x;
Всего в ZigScript существует 4 типа переменных (см. ниже).
Тип | Описание |
---|---|
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[править]
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.