Языки программирования на эмодзи, и как можно использовать смайлики в коде
Поговорим о том, как можно использовать эмодзи при написании кода и какие для этого есть специальные языки программирования. А ещё дадим советы программисту, как использовать эмодзи в кодинге (спойлер: добавлять их в комментарии, описания коммитов и даже строки — для оживления логов). Ну, и немного истории появления смайлика.
Как появился смайл
Дело было 39 лет назад, в 1982 году. Америка, Питтсбург, университет Карнеги-Меллон. Молодой учёный-программист Скотт Фалман корпеет над работой по искусственному интеллекту, который тогда только начинал развиваться. И периодически, чтобы отвлечься и проветрить мозги, общается с коллегами из других университетов в «первобытном чате» Arpanet — это была экспериментальная сеть по заказу Министерства обороны США, где можно было создавать доски объявлений и обмениваться на них сообщениями по теме объявления. Надо сказать, что это сейчас мы в чатах проводим больше времени, чем в реальных беседах, а первая в жизни фотография нашего ребёнка прямо из родильного зала летит через чат родственникам. Но тогда даже интернета в нашем пользовательском понимании ещё не было, поэтому и культуры онлайн-общения не было совсем.
Фалман пишет какое-то традиционно ироничное для «чата» сообщение и по реакции коллег понимает, что его иронию не считывают, принимая написанное за агрессию (знакомо, не так ли?). Как показать, что ты пошутил, не вдаваясь в скучное объяснение шутки? Естественный интеллект учёного нашёл решение. Вот что он написал на «доске»:
»Предлагаю следующую последовательность знаков для маркеров анекдотов: :-) Прочтите её боком. На самом деле, вероятно, экономичнее отмечать то, что НЕ является шутками, учитывая современные тенденции. Для этого используйте:-(»
Идею тут же подхватили, стали придумывать вариации смайликов для обозначения разных эмоций, и скоро новых участников переписок уже встречали милыми рожицами из знаков препинания. А когда в 1991 году открыли Всемирную паутину, «улыбашки» вслед за пользователями переместились и туда. Так Фалман стал известен на весь мир, но вовсе не благодаря своим трудам по искусственному интеллекту, которые, к слову, были новаторскими.
Но, вообще-то, Набоков был первым!
Знает ли Фалман, что он незаконно присвоил себе славу смайлооткрывателя (не присваивал, конечно :-)? Апрель 1969 года, Швейцария, Монтре. Почти семидесятилетний великий русско-американский писатель Владимир Набоков даёт интервью корреспонденту The New York Times Олдену Уитмену. Вопросы Уитмена, мягко говоря, напрягают Набокова, и на самый бестактный вопрос 70-летнему человеку — «Вы причисляете себя к современными (живущим) писателям или к писателям прошлого?» — он отвечает:
»Я часто думаю, что должен существовать специальный типографский знак для улыбки — какой-то вогнутый знак, круглая скобка на спине, которую я сейчас хотел бы ввести в ответ на ваш вопрос»
Каков, а! :)) Прошло 50 лет, и появилось…
Программирование на эмодзи-языках
А что, так правда можно? Можно. Эмодзи, графические братья смайликов и эмотиконов, созданные японским программистом Сигэтака Курита в качестве набора символов для телеоператора NTT DoCoMo, вполне комфортно себя чувствуют в esolangs. Это так называемые эзотерические ЯП, которые пародируют настоящие, но, в отличие от них, используются не для бизнес-задач, а для «извращённых технических глупостей», как сказали об этом два студента Принстонского университета в 1972 году, придумавшие первый эзотерический ЯП — INTERCAL. Авторы настоящих языков программирования стараются сделать их синтаксис максимально понятным, авторы esolangs — наоборот. И создают их для того, чтобы подтвердить концепцию (proof of concept) или исследовать возможности разработки языков. Ну или написать простенькую игру. Среди них есть такие, в которых можно применять эмодзи, а есть и те, которые полностью из эмодзи состоят. Вот они.
Emojicode
Это строго типизированный язык с поддержкой классов, построенный на принципах объектно-ориентированного программирования. Его можно использовать для создания кроссплатформенных приложений.
Тео Видманн, автор языка, вроде как ненавидит ошибки типа NPE (null pointer exception) — они возникают при попытке обратиться к объекту, которому не присвоено значение. Поэтому в Emojicode каждую переменную экземпляра класса (instance variable) нужно сразу инициализировать, чтобы не словить ошибку при компиляции. И вообще, он хотел создать язык, свободный от недостатков существующих языков программирования, поэтому в некоторых случаях Emojicode даже эффективней, чем Python, С++ или Java. Как ему пришла в голову идея написания языка на эмодзи: однажды кто-то прислал Тео сообщение со множеством смайликов, и его мозг по привычке стал парсить текст, как если бы это был чей-то код.
В Emojicode есть:
классы
типизация
протоколы
опциональность
замыкания
дженерики
многопоточность
управление памятью
Emojicode не компилируется в другие языки — у него есть свой компилятор и виртуальное окружение, в котором выполняется код. Это вполне самостоятельный язык программирования, он предусматривает наличие пакетного менеджера, позволяющего писать разные утилиты и тулзы, чтобы работать с файловой системой или с БД. Имеющееся небольшое количество пакетов для языка позволяет делать HTTP-запросы, работать с файлами, получать доступ к микрофону и динамикам — достаточно для написания компьютерной игры.
Но придётся, конечно, изучить синтаксис. Смысл некоторых эмодзи угадывается: