LOLCODE
LOLCODE — езотерична мова програмування натхненна інтернет мемом lolcat'ом. Мова була створена в 2007 році Адамою Ліндсей, дослідником кафедри обчислювальної техніки Ланкастерського університету[1].Мова є повною за Тюрінгом, оскільки є можливість реалізації інтерпретатора Brainfuck на LOLCODE[2].
LOLCODE | |
---|---|
Парадигма | езотерична |
Дата появи | 2007 |
Творці | Адам Ліндсей |
Останній реліз | |
Під впливом від | Lolcats |
Звичайні розширення файлів |
.lol, .lols |
Вебсайт | lolcode.org |
Приклад структури програми
Зарезервовані слова(ключові слова) — це все слова англійського розмовного діалекту взяті з lolcat мемів.
Код | Пояснення |
---|---|
HAI [ВЕРСІЯ] |
Усі LOLCODE програми починаються з HAI («Hi!», що означає «Привіт») вітання та вказування певної версії мови. |
CAN HAS [БІБЛІОТЕКА]? |
Так як і в С++ підключається стандартна бібліотека для використання простих методів, наприклад для вводу та виводу тексту. |
VISIBLE [ТЕКСТ] |
Виводить повідомлення з текстом на екран. |
GIMMEH[ЗМІННА] |
Аналог input() у Python.Поки що цей метод повертає тільки значення string. |
KTHXBYE |
Оголошуємо кінець коду програми. ('K' = «OK», «Thanks»="THX" «BYE» — це слова записані одним словом, що разом означають «Добре, дякую, бувай») |
BTW [КОМЕНТАР] |
Додає однорядковий коментар («BTW» = «By the way», що означає «До речі») |
OBTW [КОМЕНТАР]
|
Додає багаторядковий коментар. («OBTW» — початок, «TLDR» — кінець коментаря, «TLDR» = «Too long, don't read», що означає «Дуже довго, не читай») |
PLZ [команда?]
AWSUM THX [код] O NOES [код] |
Блок обробки винятків.Аналог «try .. catch .. finally» в Java. |
I HAS A [ЗМІННА] ITZ [ЗНАЧЕННЯ] |
Оголошення змінної. |
IZ [ЗМІННА] ОПЕРАЦІЯ ПОРІВНЯННЯ [ЗНАЧЕННЯ]? |
Порівняння. (Операції порівняння тут записуються словами, тобто: «BIGGER»= «>», «SMALLER»="<", «SAEM» = "==", «DIFFRINT» = "!=") |
IM IN YR [НАЗВА ЦИКЛУ]
|
Цикл який повторюється допоки не буде команди IM OUTTA YR [НАЗВА ЦИКЛУ]. |
Нижче наведено запис бінарних операцій.
SUM OF <x> AN <y> BTW +(Сума змінних х і у) DIFF OF <x> AN <y> BTW -(Різниця змінних х і у) PRODUKT OF <x> AN <y> BTW *(Множення змінних х на у) QUOSHUNT OF <x> AN <y> BTW /(Цілочисельне ділення змінних х на у) MOD OF <x> AN <y> BTW mod(Остача від ділення числа х на у ) BIGGR OF <x> AN <y> BTW max(Максимальна зі змінних х і у) SMALLR OF <x> AN <y> BTW min(Мінімальна зі змінних х і у)
Нижче наведено приклад простої програми на LOLCODE, яка виводить на стандартний потік виводу рядка HAI, WORLD!
.
Приклад 1
HAI 1.2
CAN HAS STDIO?
BTW VISIBLE "THIS IS EXAMPLE 1 AND THIS IS EXAMPLE OF COMMENT"
VISIBLE "HAI WORLD!"
OBTW
VISIBLE "THIS TOO IS"
VISIBLE "AN EXAMPLE OF COMMENT"
TLDR
KTHXBYE
Вивід:
HAI WORLD!
Вивелось тільки HAI WORLD!
оскільки рядки 3, 5, 6, 7, 8 є коментарями.
Далі простий приклад коду для роботи з файлами.("PLZ OPEN FILE «НАЗВА ФАЙЛУ» означає «Будь ласка відкрий файл „НАЗВА ФАЙЛУ“ — метод для відкриття файлу»)
Приклад 2
HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
VISIBLE "ERROR!"
KTHXBYE
Наступний приклад показує роботу команд IM IN YR LOOP
,I HAS A variable
, IZ
і методу GIMMEH
.
Приклад 3
HAI 1.0 CAN HAS STDIO? I HAS A VAR1 ITZ 10 I HAS A WORD GIMMEH WORD IM IN YR LOOP UP VAR1!!1 IZ VAR1 BIGGER THAN 20? KTHX IM OUTTA YR LOOP VISIBLE WORD VISIBLE VAR1 KTHXBYE
Реалізація LOLCODE
LOLPython[3] — клас мови Python, який дозволяє використовувати LOLCODE при написанні програми. Також існує LOLCODE.NET[4] — компілятор LOLCODE в MSIL, він перебуває на ранній стадії розробки. Зараз найновіший та найсучасніший інтерпритатор для мови LOLCODE — lci[5], написаний на С Джастіном Мезою. Він ефективно інтерпретує LOLCODE на різних платформах. Цікаво те що на конференції Microsoft TechEd 2007 в Австралії[6], Microsoft оголосили, що їхня наступна версія Visual Studio буде підтримувати тільки LOLCODE і називатиметься Cheezburger Studio.
Примітки
- https://web.archive.org/web/20090528151824/http://www.comp.lancs.ac.uk/department/news.html
- 262588213843476. Brainfuck interpreter in Lolcode. Gist (англ.). Процитовано 12 грудня 2020.
- LOLPython. www.dalkescientific.com. Процитовано 12 грудня 2020.
- Bock, Jason (8 вересня 2020). JasonBock/LOLCode.net. Процитовано 12 грудня 2020.
- LOLCODE. www.lolcode.org. Процитовано 11 грудня 2020.
- Zheng, Long (9 серпня 2007). TechEd Day 2: Microsoft announces LOLCode support and Cheezburger Studios. istartedsomething (амер.). Процитовано 12 грудня 2020.