ЛОЛКОД
![]() | |
Парадигма | эзотерический |
---|---|
Разработано | Адам Линдси |
Впервые появился | 2007 |
Расширения имен файлов | .лол, .лолс |
Веб-сайт | лолкод |
Под влиянием | |
лолкоты |
LOLCODE — это эзотерический язык программирования, вдохновленный lolspeak , языком, выраженным в примерах lolcat интернет-мема . [1] Язык был создан в 2007 году Адамом Линдси, исследователем компьютерного факультета Ланкастерского университета . [2] [3]
Язык не имеет четкого определения приоритетов операторов и правильного синтаксиса, но существует несколько функционирующих интерпретаторов и компиляторов. Одна из интерпретаций языка оказалась полной по Тьюрингу . [4]
Структура языка и примеры
[ редактировать ]LOLCODE Ключевые слова взяты из сильно сжатого (сокращенного) наречия интернет-мема лолкот. Здесь следует «Hello, World!» программа и простая программа для вывода файла на монитор. [5] Похожий код был напечатан в Houston Chronicle . [1]
- :) представляет собой новую строку (\n)
- :> представляет вкладку (\t)
- :o представляет символ колокольчика (\a)
- :" представляет собой буквальную двойную кавычку ("")
- :: представляет одно буквенное двоеточие (:)
- :(<hex>) преобразует один шестнадцатеричный код Unicode в кодировку локальной среды (например, UTF-8 ).
- :{<переменная>} интерполирует значение включенной переменной, представленной в виде строки.
- :[<имя символа>] преобразует нормативное имя одного символа Юникода в кодировку локальной среды.
Пример 1
[ редактировать ]HAI 1.2
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Код | Комментарий |
---|---|
HAI [VERSION]
|
Во всех программах LOLCODE HAI («Привет!») представляет программу и указывает версию (хотя на самом деле она еще не используется). |
CAN HAS [LIBRARY]?
|
Во многих языках программирования одним из первых операторов будет включение библиотеки для общих функций, таких как ввод и вывод. Обычно это включается вызовом, например #include <stdio.h> ( stdio означает стандартную библиотеку ввода/вывода). Эта команда представляет собой насмешливое искажение этого: она спрашивает, доступна ли библиотека, получает ее, если это возможно, и вызывает исключение, если нет. [6] Он нужен в первую очередь для правдоподобия — фактически он игнорируется в текущих реализациях LOLCODE.
|
VISIBLE [MESSAGE]
|
Выводит сообщение на экран. |
KTHXBYE
|
Так же, как HAI знакомит с программой, KTHXBYE (то есть «K», «THX» и «Bye», соединенные вместе, что означает «ОК, спасибо, пока») завершает его.
|
BTW [MESSAGE]
|
Чтобы написать однострочный комментарий в LOLCODE, вы используете BTW ключевое слово. Комментарии игнорируются компилятором и пишутся для лучшего понимания программы.
|
OBTW [MESSAGE] TLDR
|
Подобно BTW ключевое слово, OBTW Ключевое слово отмечает многострочный комментарий, комментарий, занимающий несколько строк. В ЛОЛКОДЕ OBTW Ключевое слово означает начало многострочного комментария, а ключевое слово TLDR ключевое слово завершает его.
|
Пример 2
[ редактировать ]HAI 1.2
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE
В этом примере команды открытия файла ( PLZ OPEN FILE "NAME"?
— «Пожалуйста, откройте этот файл?») и обработка ошибок ( AWSUM THX
— «Отлично, спасибо!» и O NOES
— «О нет!») представлены.
Другие команды включают в себя I HAS A variable
для объявления переменных, variable R value
(«значение переменной [есть/являются/существует]») для их назначения, отправки сообщений об ошибках во внешний интерфейс через INVISIBLE
вместо VISIBLE
, и BTW
(«кстати») для обозначения комментария, заставляя анализатор игнорировать остальную часть строки.
Петли создаются с помощью IM IN YR ''label''
(вдохновлено мемом «Я в твоем существительном , глагол ing yr родственное существительное » LOLcat ) и закончилось словами IM OUTTA YR ''label''
. Циклы можно разорвать с помощью ключевого слова ENUF
(«достаточно») или в более старых версиях, GTFO
. [7] Циклы также могут завершаться условным оператором IZ
команду, как показано в следующем примере.
Пример 3
[ редактировать ]HAI 1.0 CAN HAS STDIO? I HAS A VAR IM IN YR LOOP UP VAR!!1 VISIBLE VAR IZ VAR BIGGER THAN 10? KTHX IM OUTTA YR LOOP KTHXBYE
Эта простая программа отображает числа 1–11 и завершает работу (начиная со спецификации 1.0). Та же программа, что и в спецификации 1.2 (при условии, что VAR начинается с 0):
HAI 1.2 CAN HAS STDIO? IM IN YR LOOP UPPIN YR VAR TIL BOTH SAEM VAR AN 10 VISIBLE SUM OF VAR AN 1 IM OUTTA YR LOOP KTHXBYE
Пример 4
[ редактировать ]HAI 1.0
CAN HAS STDIO?
VISIBLE "U SEE THIS"
BTW VISIBLE "U SEE NOTHING"
OBTW
VISIBLE "U SEE NOTHIN"
VISIBLE "U STIL SEE NOTHIN"
TLDR
VISIBLE "U SEE THIS"
KTHXBYE
Приведенный выше пример вернет следующее:
U SEE THIS
U SEE THIS
Это потому, что строка 3 выводит U SEE THIS
но строка 5 игнорируется, поскольку она закомментирована BTW
ключевое слово. Строки 8 и 9 не выполняются, поскольку они находятся в многострочном комментарии, который начинается в строке 7 и заканчивается в строке 10. Строка 12 выводит результаты. U SEE THIS
и строка 13 завершает программу.
Реализации
[ редактировать ]Самый последний и современный интерпретатор языка LOLCODE — lci, написанный на C Джастином Меза. Он эффективно интерпретирует LOLCODE на различных платформах. [8]
Первой реализацией LOLCODE был парсер PHP , написанный Джеффом Джонсом. [9] [10] Веб-сайт парсера также был первым веб-сайтом, использующим LOLCODE в качестве реального языка веб-скриптов. Будучи открытым исходным кодом с лицензией в стиле BSD, он был разветвлен и использовался несколькими веб-сайтами для реализации сценариев LOLCODE. Победившая презентация Pecha Kucha на PHP Works 2008 была посвящена этому парсеру. [11] [12]
Существует .NET- компилятор для LOLCODE, написанный Ником Джонсоном. [13] и участвовал в Microsoft для разработчиков на конференции TechEd 2007 (Австралия). обучающих семинарах [14] [15] [16]
PL/LOLCODE, проект, возглавляемый Джошем Толли, делает LOLCODE доступным в качестве серверного языка программирования внутри PostgreSQL. [17]
Microsoft Dynamic Language Runtime имеет реализацию LOLCODE для целей тестирования. [18]
lolcode-java (грамматика/интерпретатор Java для языка программирования LOLCODE) также доступен [19] но, похоже, он еще не соответствует спецификации версии 1.3.
LOLCODE в JavaScript . Также доступен переводчик [20]
также включен компилятор LOLCODE В виртуальную машину Parrot в качестве одного из языков, демонстрирующих использование инструментов компилятора Parrot. [21]
Компилятор, виртуальная машина и отладчик, созданные Piper для языка LoLCode 1337, написанного на C. [22]
Можно найти версию для параллельных и распределенных вычислений. [23]
Связанные проекты
[ редактировать ]LOLCODE также вдохновил LOLPython, написанный Эндрю Далком. LOLPython использует синтаксис, вдохновленный LOL, аналогичный синтаксису LOLCODE, но в стиле Python. Он работает путем перевода исходного кода LOLPython в код Python. [24]
ArnoldC — это ответвление LOLCODE, которое заменяет lolspeak цитатами из разных фильмов Арнольда Шварценеггера . [25]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б Дуайт Сильверман (6 июня 2007 г.). «Я пишу в вашей газете колонку» . Хрон.com . Проверено 6 июня 2007 г.
- ^ «Вычислительный факультет Ланкастерского университета – Новости» . Ланкастерский университет, компьютерный факультет. Архивировано из оригинала 28 мая 2009 г. Проверено 9 июня 2009 г.
- ^ Гамак, Энн (1 мая 2008 г.). «Новая слава: интернет-знаменитость» . CNN . Архивировано из оригинала 30 апреля 2009 г.
- ^ Паукообразный. «Доказательство того, что LOLCode завершен по Тьюрингу: интерпретатор BrainF*** в LOLCode» . forum.lolcode.com. Архивировано из оригинала 11 июля 2007 г. Проверено 5 октября 2008 г.
- ^ Перейти обратно: а б с Адам Линдси (25 мая 2007 г.). «Главная страница LOLCODE» . лолкод.com. Архивировано из оригинала 2 октября 2007 г. Проверено 2 октября 2007 г.
- ^ «ключевые слова:может-хас · LOLCODE» . Архивировано из оригинала 6 февраля 2008 г. Проверено 10 февраля 2008 г.
- ^ «СОРН.нет» . Архивировано из оригинала 16 февраля 2009 года . Проверено 7 ноября 2007 г.
- ^ «ЛОЛКОД + lci» .
- ^ «Первый комментарий парсера» . Линдсей.at. Архивировано из оригинала 19 мая 2009 г. Проверено 9 июня 2009 г.
- ^ «Парсер LOLCODE от Tetraboy» . Tetraboy.com. Архивировано из оригинала 27 февраля 2009 г. Проверено 9 июня 2009 г.
- ^ « Лучший веб-язык: слайды LOLCODE» . Slideshare.net. 7 марта 2009 года . Проверено 9 июня 2009 г.
- ^ «PHP работает» . mtacon.com . Проверено 4 ноября 2014 г.
- ^ Компилятор LOLCODE .NET в Google Code
- ^ TechEd, день 2: Microsoft объявляет о поддержке LOLCode , Лун Чжэн
- ^ LOLcode в следующей Visual Studio? Для молодых и веселых котиков NetworkWorld.com
- ^ «Видео презентации LOLCODE на TechEd 2007» . Блип.тв. 17 августа 2007 г. Архивировано из оригинала 5 февраля 2009 г. Проверено 9 июня 2009 г.
- ^ PL/LOLCODE. Архивировано 28 ноября 2010 г. в Wayback Machine , pgFoundry.
- ^ Глубокий ДЛР , Джон Лам и Мартин Мали
- ^ «Интерпретатор грамматики лолкода, написанный на Java» .
- ^ «Лолкод» . Fullvolume.co.uk . Проверено 9 июня 2009 г.
- ^ «Молния-Попугай» . лолкод.com. Архивировано из оригинала 22 марта 2009 г. Проверено 20 июня 2009 г.
- ^ «LoLCode 1337» .
- ^ «Параллельные и распределенные вычисления с LOLCODE» .
- ^ «ЛОЛПитон» . Dalkescientific.com. 01.06.2007 . Проверено 9 июня 2009 г.
- ^ «АрнольдС» .