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