Если вы думаете, что мы будем говорить о создании устройства, которое поможет вам общаться с коровой, извините, что это не так. Если вы думаете, что мы создаем какой-то интерфейс, такой как Google Translate, чтобы помочь нам общаться с коровой, извините, но это опять же нет.
Что вы думаете, когда слышите слово «язык программирования»? Вы представляете себе огромные коды с такими словами, как печать, вывод, ввод, сканирование, импорт и т. Д.? Все ли современные языки программирования используют только такие понятные человеку слова? Посмотрим…
Хорошо, после того, как так много вопросов и нет, что мы собираемся исследовать? Это язык программирования под названием cow.
Если вы думаете, что код будет похож на коровье мычание, да, вы правы!
Корова входит в пятерку самых сложных языков программирования в мире наряду с Malbolge, Brainfuck, Intercal, Whitespace. Он был выпущен в начале 2013 года и не пользуется большой популярностью среди разработчиков. Это эзотерический язык программирования или esolang, что просто означает, что он предназначен для экспериментов со странными идеями, чтобы его было сложно запрограммировать, или он сделан как шутка, а не для практического использования. Есть небольшое, но активное сообщество, создающее такие эзотерические языки, а также использующее их. Эти языки могут выполнять все задачи, которые может выполнять универсальная машина Тьюринга, и поэтому их по праву можно назвать языком программирования.
Самый ранний преднамеренно созданный эзотерический язык называется Intercal, разработанный Дональдом Р. Вудсом и Джеймсом М. Лайоном в 1972 году. Некоторые из популярных эзотерических языков - Brainfuck и Befunge, оба были разработаны в 1993 году.
Brainfuck сильно повлиял даже на корову, и она создана с юмором с учетом особенностей Bovinae. У Cow в общей сложности 12 инструкций, что на 4 больше, чем у Brainfuck, и является полным по Тьюрингу. Все 12 инструкций - всего лишь вариации слова «МОО», единственного слова, которое корова может произнести.
Синтаксис:
Заявление :: = му | mOo | moO | mOO | Му | MOo | МоО | MOO | ООО | МММ | ООМ | ом | S1 S2
Поскольку MOO и moo вместе образуют цикл while, кажется логичным объединить их как одну синтаксическую конструкцию. К сожалению, мы не можем этого сделать, потому что инструкция mOO может создавать отдельные MOO и moos, так что (половина) циклов while могут формироваться динамически. Также возможно, что программа завершится, находясь внутри цикла while!
Пример программы для печати Hello, World!
MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo MoO MoO MoO Moo MOo MOo MOo MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo OOO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO Moo
" Привет, мир!" используя петли
MoO MoO MoO MoO MoO MoO MoO MoO MOO moO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO moO MoO MoO MoO MoO MoO MoO MoO MoO MoO moO MoO MoO MoO MoO mOo mOo mOo mOo mOo MOo moo moO moO moO moO Moo moO MOO mOo MoO moO MOo moo mOo MOo MOo MOo Moo MoO MoO MoO MoO MoO MoO MoO Moo Moo MoO MoO MoO Moo MMM mOo mOo mOo MoO MoO MoO MoO Moo moO Moo MOO moO moO MOo mOo mOo MOo moo moO moO MoO MoO MoO MoO MoO MoO MoO MoO Moo MMM MMM Moo MoO MoO MoO Moo MMM MOo MOo MOo Moo MOo MOo MOo MOo MOo MOo MOo MOo Moo mOo MoO Moo
Некоторые другие инструкции
быстрый выход
OOO MOo mOO
простой цикл с использованием текущего блока памяти в качестве счетчика
MOO MOo [[ anything in here happens "current" number of times ]] moo
скопировать текущее значение в следующий блок памяти
MMM moO MMM
зацикливать «ток» несколько раз, не влияя на значение тока
MMM moO MMM MOO MOo [[ move back so original current is current again ]] mOo [[ loop here ]] [[ move forward so the loop continutes to work on the temp counter ]] moO moo
проверьте, равен ли ток 3, не влияя на значение тока
[[ copy current to temp block ]] MMM moO MMM [[ copy 3 into another new temp block ]] moO OOO MoO MoO MoO [[ loop 3 times (the 3 is still current) ]] [[ this also decrements the temp value ]] MOO MOo mOo MOo moO moo [[ move back to first temp value (the copy of the current value) and check if 0 ]] mOo MOO [[ make original current current again ]] mOo OOM [[ gets here if != 3 ]] [[ skip down to the bottom past the if ]] moO OOO MOO moo [[ make original current current again ]] mOo OOM [[ gets here if == 3 ]] [[ skip down to the bottom of the if ]] moO OOO MOO moo moo [[ set current back ]] mOo [[ all execution resumes here ]]
сгенерировать последовательность Фибоначчи
MoO moO MoO mOo [[ main loop ]] MOO [[ print first number ]] OOM [[ temp copy of first number ]] MMM moO moO MMM mOo mOo [[ store second number off in the first position now ]] moO MMM mOo MMM [[ move back to temp number ]] moO moO [[ use temp to add to first and store in second in loop ]] MOO MOo mOo MoO moO moo mOo mOo moo
Я надеюсь, что после прочтения вы обязательно узнаете больше о языке COW и начнете работать над некоторыми программами на этом прекрасном языке.
Эти языки показывают, что каждая идея, которая приходит в голову человеку, заслуживает изучения и реализации. Этот язык может быть сложно кодировать, но я уверен, что вы читали с улыбкой на лице. Вы когда-нибудь улыбались, когда видели код Python? Вы когда-нибудь улыбались, когда видели код на языке C? Иногда полезно изучать забавные языки, например, COW, не так ли?
Спасибо, что прочитали ... Скоро вернусь с еще одним ...