ЛОЛКОД - LOLCODE

ЛОЛКОД
LOLCode logo.png
Парадигмаэзотерический
РазработаноАдам Линдси
Впервые появился2007
Расширения имени файла.lol, .lols
Интернет сайтлолкод.org
Под влиянием
Lolcats

ЛОЛКОД является эзотерический язык программирования вдохновлен lolspeak, язык, выраженный в примерах лолкот Интернет-мем.[1] Язык был создан в 2007 году Адамом Линдси, исследователем вычислительного отдела Ланкастерский университет.[2][3]

Язык четко не определен с точки зрения приоритетов операторов и правильного синтаксиса, но существует несколько функционирующих интерпретаторов и компиляторов. Доказана одна интерпретация языка Полный по Тьюрингу.[4]

Структура языка и примеры

ЛОЛКОД ключевые слова взяты из сильно сжатых (укороченных) наречия интернет-мема лолкот. Здесь следуйте "Привет, мир!" программа и простая программа для вывода файла на монитор.[5] Аналогичный код был напечатан в Хьюстон Хроникл.[1]

Пример 1

HAI 1.2CAN ИМЕЕТ STDIO? ВИДИМЫЙ "HAI WORLD!" KTHXBYE
КодКомментарий
HAI [ВЕРСИЯ]Во всех программах LOLCODE HAI («Привет!») Представляет программу и указывает версию (хотя на самом деле она еще не используется).
МОЖЕТ ЕСТЬ [БИБЛИОТЕКА]?Во многих языках программирования одним из первых операторов будет библиотека включение для общих функций, таких как ввод и вывод. Обычно это включается вызовом, например #include (stdio обозначает стандартную библиотеку ввода / вывода). Эта команда является насмешливый искажение этого, запрос о доступности библиотеки, получение ее, если возможно, и создание исключения, если нет.[6] Он предназначен в первую очередь для правдоподобия - фактически, в текущих реализациях LOLCODE он игнорируется.
ВИДИМО [СООБЩЕНИЕ]Печатает сообщение на экране.
KTHXBYEКак только HAI знакомит с программой, KTHXBYE (что означает «K», «THX» и «Bye», соединенные вместе, что означает «ОК, спасибо, пока») завершает его.
Кстати [СООБЩЕНИЕ]Чтобы написать однострочный комментарий в LOLCODE, вы используете Кстати ключевое слово. Комментарии игнорируются компилятором и написаны для лучшего понимания программы.
OBTW [СООБЩЕНИЕ]TL; DRПодобно Кстати ключевое слово, OBTW ключевое слово отмечает многострочный комментарий, комментарий, который занимает несколько строк. В LOLCODE OBTW ключевое слово означает начало многострочного комментария, а TL; DR ключевое слово заканчивает это.

Пример 2

HAI 1.2 МОЖЕТ ЛИ ЕСТЬ STDIO? PLZ ОТКРЫТЬ ФАЙЛ "LOLCATS.TXT"? ВИДИМЫЙ ФАЙЛ AWSUM THX НЕТ НЕВИДИМЫЙ «ОШИБКА!» KTHXBYE

В этом примере[5] команды для открытия файла (PLZ ОТКРОЙТЕ ФАЙЛ "ИМЯ"?- «Попробуйте открыть файл?»), И обработка ошибок (AWSUM THX- «Отлично, спасибо!» И О НЕТ- «О нет!»).

Другие команды включают У меня есть Переменная для объявления переменных, Переменная р ценить ("переменная [есть / есть / есть] значение") для их присвоения, отправки сообщений об ошибках во внешний интерфейс через НЕВИДИМЫЙ вместо ВИДИМЫЙ, и Кстати ("между прочим") для обозначения комментария, заставляя синтаксический анализатор игнорировать остальную часть строки.

Циклы создаются с помощью IM IN YR 'label' ' (по мотивам "Im in ur имя существительное, глаголв год родственное существительное" LOLcat мем ) и закончился IM OUTTA YR 'этикетка'. Циклы можно разорвать с помощью ключевого слова ENUF ("достаточно") или в более старых версиях, GTFO.[7] Циклы также можно завершать условным IZ команда, как показано в следующем примере.

Пример 3

HAI 1.0 МОЖЕТ ЕСТЬ STDIO? У меня есть VARIM IN YR LOOP UP VAR !! 1 VISIBLE VAR IZ VAR БОЛЬШЕ, ЧЕМ 10? KTHXIM OUTTA YR LOOPKTHXBYE

[5]

Эта простая программа отображает числа 1–11 и завершает работу (согласно спецификации 1.0). Та же программа, что и в спецификации 1.2 (при условии, что VAR начинается с 0):

HAI 1.2CAN ИМЕЕТ STDIO? IM IN YR LOOP UPPIN YR VAR TIL BOTH SAEM VAR 10 VISIBLE SUM OF VAR AN 1IM OUTTA YR LOOPKTHXBYE

Пример 4

 1HAI 1.0 2МОЖЕТ ЕСТЬ STDIO? 3ВИДИМО «УВИДЕТЬ ЭТО» 4 5КСТАТИ ВИДИМО "НИЧЕГО НЕ ВИДИТ" 6 7OBTW 8ВИДИМОЕ "НИЧЕГО НЕ ВИДИТ" 9ВИДИМО «У СТИЛЬ НИЧЕГО НЕ ВИДИТ»10TL; DR1112ВИДИМО «УВИДЕТЬ ЭТО»13KTHXBYE

Приведенный выше пример вернет следующее:

ПОСМОТРЕТЬ ЭТО ПОСМОТРЕТЬ

Это потому, что строка 3 выводит УВИДЕТЬ ЭТО но строка 5 игнорируется из-за того, что она закомментирована Кстати ключевое слово. Строки 8 и 9 не запускаются, потому что они находятся в многострочном комментарии, который начинается в строке 7 и заканчивается в строке 10. Вывод строки 12 УВИДЕТЬ ЭТО и строка 13 завершает программу.

Реализации

Самый последний и современный интерпретатор языка LOLCODE - lci, написано в C пользователя Justin Meza. Он эффективно интерпретирует LOLCODE на различных платформах.[8]

Первая реализация LOLCODE была PHP парсер, написанный Джеффом Джонсом.[9][10] Веб-сайт парсера также был первым веб-сайтом, использующим LOLCODE в качестве реального языка веб-сценариев. Будучи открытым исходным кодом с лицензией в стиле BSD, он был разветвлен и использовался несколькими веб-сайтами для реализации сценариев LOLCODE. Победа Печа Куча Об этом парсере была презентация на PHP Works 2008.[11][12]

Существует .СЕТЬ компилятор для LOLCODE, написанный Ником Джонсоном,[13] и фигурирует в Microsoft обучающие семинары для разработчиков, конференция TechEd 2007 (Австралия).[14][15][16]

PL / LOLCODE, проект, возглавляемый Джошем Толли, делает LOLCODE доступным как язык программирования на стороне сервера внутри PostgreSQL.[17]

Microsoft Среда выполнения динамического языка имеет реализацию LOLCODE для тестирования.[18]

lolcode-java (грамматика / интерпретатор Java для языка программирования LOLCODE) - это также проект[19] но, похоже, он еще не соответствует спецификации версии 1.3.

ЛОЛКОД для JavaScript переводчик также доступен.[20]

Также есть компилятор LOLCODE, включенный в Виртуальная машина Parrot как один из языков, демонстрирующих использование инструментов компилятора Parrot.[21]

Компилятор, виртуальная машина и отладчик, созданные Пайпером, для языка типа LoLCode, LoLCode 1337, написанного на C, являются здесь[22]

Версию для параллельных и распределенных вычислений можно найти здесь. [23]

Связанные проекты

LOLCODE также вдохновил LOLPython, написанный Эндрю Далке. LOLPython использует синтаксис, вдохновленный LOL, аналогичный синтаксису LOLCODE, но в стиле Python. Он работает путем перевода исходного кода LOLPython в код Python.[24]

ArnoldC - это ответвление LOLCODE, которое заменяет lolspeak цитатами из разных Арнольд Шварцнеггер фильмы.[25]

Рекомендации

  1. ^ а б Дуайт Сильверман (06.06.2007). "Я пишу в твоей газете, мах колум". Chron.com. Получено 2007-06-06.
  2. ^ "Вычислительный факультет Ланкастерского университета - Новости". Ланкастерский университет, вычислительный факультет. Архивировано из оригинал на 2009-05-28. Получено 2009-06-09.
  3. ^ Гамак, Энн (2008-05-01). «Новая слава: Интернет-знаменитости». CNN. Архивировано из оригинал 30 апреля 2009 г.
  4. ^ Паукообразный. «Доказательство того, что LOLCode завершен по Тьюрингу: интерпретатор BrainF *** в LOLCode». forum.lolcode.com. Архивировано из оригинал на 2007-07-11. Получено 2008-10-05.
  5. ^ а б c Адам Линдси (25 мая 2007 г.). "Главная страница LOLCODE". lolcode.com. Архивировано из оригинал на 2007-10-02. Получено 2007-10-02.
  6. ^ "ключевые слова: банка · ЛОЛКОД". Архивировано из оригинал на 2008-02-06. Получено 2008-02-10.
  7. ^ "СОРН.net". В архиве из оригинала 16 февраля 2009 г.. Получено 2007-11-07.
  8. ^ «ЛОЛКОД + ЛЦИ».
  9. ^ "Первый комментарий парсера". Lindsay.at. Архивировано из оригинал на 2009-05-19. Получено 2009-06-09.
  10. ^ "Парсер LOLCODE Тетрабоя". Tetraboy.com. Архивировано из оригинал на 2009-02-27. Получено 2009-06-09.
  11. ^ ""Лучший веб-язык: LOLCODE «Слайды». Slideshare.net. Получено 2009-06-09.
  12. ^ «PHP работает». mtacon.com. Получено 4 ноября 2014.
  13. ^ Компилятор LOLCODE .NET в Google Code
  14. ^ TechEd, день 2: Microsoft объявляет о поддержке LOLCode, Лун Чжэн
  15. ^ LOLcode в следующей Visual Studio? Для молодых и веселых кошек, NetworkWorld.com
  16. ^ «Видео презентации LOLCODE на TechEd 2007». Blip.tv. 2007-08-17. Архивировано из оригинал на 2009-02-05. Получено 2009-06-09.
  17. ^ PL / LOLCODE, pgFoundry
  18. ^ Глубокий DLR, Джон Лам и Мартин Мали
  19. ^ "интерпретатор грамматики lolcode, написанный на Java".
  20. ^ "LolCode". Fullvolume.co.uk. Получено 2009-06-09.
  21. ^ "Молния-Попугай". lolcode.com. Архивировано из оригинал на 2009-03-22. Получено 2009-06-20.
  22. ^ "LoLCode 1337".
  23. ^ «Параллельные и распределенные вычисления с LOLCODE».
  24. ^ "LOLPython". Dalkescientific.com. 2007-06-01. Получено 2009-06-09.
  25. ^ https://lhartikk.github.io/ArnoldC/

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