]]> ]]>
Править | Обсудить | История

Omgrofl

Дата создания:
2006
Парадигма:
Типизация:
Реализации и версии (свернуть все | развернуть все):
Язык программирования

Omgrofl — эзотерический язык программирования, команды которого являются словами интернет-сленга (название языка происходит от двух таких слов — omg и rofl).

Omgrofl был создан в 2006 году Юраем Борза (Juraj Borza) и не пользуется большой известностью. На момент написания этой статьи язык практически мертв — авторская реализация и большинство инструментов для работы с языком утеряны, оставшиеся реализации не поддерживают все конструкции языка. Тьюринг-полнота языка остается недоказанной, хотя наличие в языке очереди/стека позволяет предположить, что он является Тьюринг-полным.

Язык позволяет использовать именованные переменные типа byte, условные выражения, бесконечные циклы и циклы типа for, что нетипично для эзотерического языка. Впрочем, арифметические действия над переменными и функции ввода-вывода выполнены в стиле Brainfuck. Также язык позволяет оперировать со стеком.

Команды языка

  • w00t ... — комментарий до конца строки
  • lol, lool, ... — имена переменных должны быть словом lol с произвольным количеством букв o
  • iz — присвоение значения переменной: lol iz 0
  • lmao lol — увеличивает значение переменной на 1
  • roflmao lol — уменьшает значение переменной на 1
  • lol to /dev/null — эквивалентно lol iz 0
  • liek и uber — проверка того, что выражение равно и больше второго, соответственно
  • nope — отрицание условия
  • wtf <condition> ... brb — условный переход; если условие истинно, выполняются все команды до соответствующего brb
  • rtfm ... brb — бесконечный цикл
  • 4 <varname> iz <first> 2 <last> ... brb — цикл for с инкрементом/декрементом на 1.
  • tldr — выход из цикла
  • stfu — выход из программы (в конце программы не обязателен)
  • stfw lol — читает символ и помещает его ASCII-код в переменную
  • rofl lol — выводит символ, чей ASCII-код хранится в переменной
  • n00b lol — добавляет на вершину стека значение переменной
  • l33t lol — извлекает значение с вершины стека
  • haxor lol — извлекает значение со дна стека (используя его как очередь)

Элементы синтаксиса:

Комментарий до конца строки w00t
Регистрозависимость нет
Регулярное выражение идентификатора переменной l[o]+l
Присваивание значения переменной varname iz value
Равенство uber
Сравнение liek
Если - то wtf <condition> ... brb
Бесконечный цикл rtfm ... brb
Цикл for - next для диапазона целых чисел с инкрементом на 1 4 lol iz 1 2 10 ... brb
Цикл for - next для диапазона целых чисел с декрементом на 1 4 lol iz 10 2 1 ... brb

Примеры:

Hello, World!:

Пример для версий Harder's Omgrofl

Сообщение выводится посимвольно, с использованием ASCII-кодов символов. Затем программа останавливается.

rofl 72
rofl 101
rofl 108
rofl 108
rofl 111
rofl 44
rofl 32
rofl 87
rofl 111
rofl 114
rofl 108
rofl 100
rofl 33
stfu

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам