Для тех, кто знаком с программированием не понаслышке, не станет новостью то, что создать собственный язык программирования может кто угодно. Ведь, по сути, это всего лишь набор высокоуровневых формальных правил передачи инструкций машине. Огромное количество пользователей и сообществ стремятся создать язык программирования, в чем-то превосходящий существующие, разработать его «под себя» или просто придумать что-то новое для развлечения или самореализации.
Со времен создания первых программируемых вычислительных машин человечество изобрело более 8500 языков программирования, и теперь их количество сравнимо с количеством естественных языков на планете. При этом языки программирования ежегодно пополняют свой состав, в то время как количество живых естественных языков с развитием коммуникаций уменьшается примерно на один язык в две недели.
Стоит отметить, что большинство языков программирования появились в англоговорящих странах (2400 языков разработаны в США, 600 — в Великобритании, 160 — в Канаде, 75 — в Австралии), и неудивительно, что большинство языков программирования использует английскую лексику.
Однако этим не исчерпывается все разнообразие языков управления вычислительными машинами. Существует множество языков программирования, не основанных на английском языке или вообще не основанных на каком-либо естественном языке — вот о них мы сегодня и поговорим.
Многие из языков программирования, не основанных на привычной для человека лексике, являются эзотерическими, созданными для развлечения, и представляют собой образец компьютерного юмора. При этом иногда преследуются определенные цели, например, придумать такой язык, компилятор для которого имел бы минимальный размер.
К языкам программирования, которые не используют ключевые слова на естественных языках, можно отнести таких колоритных представителей, как:
Список можно продолжать долго. Чтобы проникнуться всем колоритом этих представителей, достаточно взглянуть, как выглядит программа «Hello World» в Brainfuck Developer:
Программа “Hello World” на языке Brainfuck
Стандарт языка «Алгол-68» был опубликован в 1968 году на нескольких языках и был одобрен Международной федерацией по обработке информации. Алгол-68 разрабатывался в
В результате программисты получают возможность при написании программы пользоваться своим родным языком
Сейчас существует немало языков программирования, ключевые слова в которых локализованы для нескольких языков, например:
Существует достаточно много языков программирования, основанных на русском. Сразу вспоминается «КуМир», с которого многие начинали свое знакомство с программированием. В СССР был известен такой язык программирования, как «Рапира», локализованный также и на молдавский.
Стандартная небольшая программа на «Рапире», с элементами взаимодействия с GUI (см. ниже оператор ОКНОДАЙ
) выглядит так:
Пример кода на «Рапире»
Кроме «1С:Предприятие», можно еще перечислить с десяток языков, основанных на русском, но они в основном либо носят учебный характер, либо имеют крайне узкую направленность.
Языки программирования, основанные на европейских языках, не впечатляют своим разнообразием. Возможно, это связано с тем, что европейцы в основной своей массе хорошо владеют английским, а для некоторых он же является и родным языком общения.
Чаще других встречаются французские и немецкие локализации:
Впечатляет разнообразие и колорит языков программирования, основанных на восточных языках.
Если европейские языки в той или иной степени схожи с английским хотя бы использованием латинского алфавита, то восточные языки программирования используют иероглифы и письмо справа налево:
Пример программы на HPL
Отдельно можно выделить китайские языки программирования: Chinese BASIC (локализованный BASIC), Easy Programming Language, ChinesePython (тот же Python, но использующий китайскую лексику), Mama. Последний представитель, кроме всего прочего, поддерживает и другие естественные языки, кроме китайского. Этот язык призван помочь китайским студентам быстрее освоить программирование, позволяя писать первые программы на своем родном языке.
Вот как выглядит, например, код на ChinesePython:
Образец кода на языке ChinesePython
Перечисленными представителями, конечно, не ограничивается все разнообразие языков программирования, формализованных с помощью иностранных ключевых слов. Стоит отметить, что большинство из них не являются инновационными разработками, а лишь основаны на существующих популярных языках программирования или являются их локализованными версиями.
Многие из них довольно причудливы, и созданы лишь ради забавы
Остальные же выполняют строго определенную функцию, которая по большей части сводится либо к возможности изучать основные концепции программирования для школьников или студентов, либо к реализации потенциала начинающих разработчиков, не владеющих английским.
Последний вариант: одновременная комбинациях из самых разных групп языков. Это отличное упражнение, даже для вполне зрелых программистов. Итак, полиглотический код — это код, который является одновременно синтаксически-корректным и функционально-эквивалентным сразу на нескольких языках программирования. Наверное, проще понять это на примере.
Самый известный пример этого для меня — штатная заставка на популярном сервисе технических вопросов-и-ответов Stack Overflow: страница не найдена, ошибка 404.
Здесь мы имеем дело с классическим полиглотическим кодом, который распечатывает только одну строчку: «Ошибка 404», но делает это совершенно равнозначно в исполняемых средах следующих языков: Python, Perl, Ruby, C, Brainfuck и Befunge.