Рубрика «эзотерические языки»

Безымянный язык программирования без присваивания имён - 1

Давать имена сложно. Давайте посмотрим, как далеко мы можем зайти без них.

Что это?

Это язык программирования, основанный на трёх парадигмах:

Язык программирования Rockstar: когда код выглядит как текст рок-хита - 1

Словосочетание «rockstar developer» заставляет некоторых морщиться: «вот же глупый рекрутерский баззворд, среди самих разработчиков никто так себя не называет». В России оно встречается не так часто, а вот в англоговорящих странах многим уже надоело. И особенно остро ощущает его засилье британский .NET-разработчик Дилан Битти: он фанат рок-музыки, поэтому хорошо видит, насколько это «rockstar» далеко от настоящих rockstars.

В итоге Дилан затеял язык программирования Rockstar, код на котором должен быть похож на рок/метал-тексты. Во-первых, если получится сделать такой проект заметным, то можно отнять у рекрутеров слова «rockstar developer», дав им новое значение. А во-вторых, интересно же попробовать скомпилировать тексты любимых песен! Ну и делать наклейки на ноутбук «certified rockstar developer» тоже весело.

Конечно, всё это звучит как шутка, и изначально ей и было, но теперь становится всё реальнее. Подробности — под катом.
Читать полностью »

CPU Design: Эзотерический язык LMCode - 1
Часть I
Часть II
Часть III
Часть IV

Эта статья посвящена созданию интерпретатора некого эзотерического языка LMCode, в основе которого лежит архитектура Little Man Computer. О Little Man Computer можно прочитать в предыдущих статьях.

  • Пусть команде INP соответствует ,
  • команде OUT соответствует .
  • команде ADD соответствует +
  • команде SUB соответствует
  • команде STA соответствует ~
  • команде LDA соответствует ^

Напишем программу, которая загружает число из устройства ввода в аккумулятор, сохраняет число в памяти, прибавляет число из памяти к аккумулятору (удваивает число), и выводит удвоенное число в устройство вывода.

На ассемблере LMC эта программа будет выглядеть так (начальной ячейкой пусть будет 20)

 INP
 STA 20
 ADD 20 
 OUT

Читать полностью »

Эзотерические языки программирования (или esolang — сокращение от esoteric language) — это языки, созданные не только для того, чтобы писать код. В одном из наших материалов мы вскользь поднимали эту тему — там описывался язык BANCStar (строго говоря, на 100% «эзотерическим» его назвать нельзя, хотя и хочется).

В этом материале подробнее остановимся на том, как можно классифицировать эзотерические ЯП: что отличает «шуточные» эзотерические языки от «серьезных», какие цели могут преследовать их создатели и что вдохновляет последних.

5-минутный гид по эзотерическим языкам программирования: попробуем их классифицировать - 1Читать полностью »

КПДВ с примерами кода Шаблоны C++ — полный по Тьюрингу язык, на котором можно писать compile-time программы. Только вот синтаксис рассчитан на описание параметризованных типов и слабо приспособлен к ясному выражению чего-то более сложного. В этой статье рассмотрим, как типы и шаблоны становятся значениями и функциями, а также узнаем, к чему привела попытка автора создать свой функциональный язык, транслирующийся в шаблоны C++. Для прочтения текста знания в области функционального программирования почти не требуются.
Читать полностью »

image

Попался мне на глаза Brainfuck-оподобный язык Cow. И решил я написать для него интерпретатор на новомодном Rust. А так как Rust — мультипарадигменный язык, то стиль написания программы будет функциональный. Чтобы узнать что получилось — прошу под кат.

Читать полностью »

Программы можно писать структурой папок или изречениями персонажа Вина Дизеля

Эзотерические языки программирования Folders и Groot - 1Эзотерические языки программирования — это нечто среднее между шуткой в индустрии программного обеспечения, искусством и исследованием пределов знаний человечества. Как правило, вне узких кругов гиков известны не образцы, являющиеся математическими доказательствами, а Brainfuck и что-нибудь популярное, к примеру, ArdnoldC. Новые примеры эзотерических языков появляются достаточно часто.

Дэниел Темкин создал эзотерический язык программирования Folders. Это первый язык, созданный специально для его блога esoteric.codes. Как следует из названия, программирование в этом языке не требует файлов, нужно лишь дерево папок файловой системы, структура которого и определяет код. Пример Hello World на языке Folders представлен слева.
Читать полностью »

Язык 4DL был изобретён в 2001 г. автором Cliff L. Biffle. Как он сам объяснил, придумал он его во-первых, потому, что до этого языков с четырехмерными программами не существовало, а во-вторых, потому что четырёхмерное пространство довольно сложно для понимания, и надо же дать людям возможность потренировать мозги.

Русская Википедия относит этот язык к семейству «фунгеоидных». Это языки, ведущие свой род от языка Befunge, программы в котором записываются в виде символов на прямоугольной решётке и могут выполняться в произвольном направлении. В 4DL для представления программы используется четырёхмерная решётка, и направлений её выполнения, соответственно, 8.

Программа на 4DL может выглядеть, например, вот так:

 X  ,  B  /    B  +  2  B  -  <  ?  T  B  -  T
 y  __ 10 __ __ 7  __ __ A  __ __ __ __ 07 __ __ 
------------------------------------------------------------------
 __ Y  __ __ __ __ __ __ __ __ .  __ x  __ __ x  ||  __ __ __ __ __ __ __ __ __ __ 20 __ __ __ __ __
 t  X  __ __ __ q  +  2  q  -  <  ?  Z  q  -  Z  ||  z  __ __ __ __ __ __ __ __ .  b  .  x  __ __ x

Эта программа написана не на «базовом» языке, а на его расширении, но об этом позже.
Читать полностью »

Резюме

Перед вами весьма вольный и стилистически неоднородный перевод статьи о модуле для Perl под названием Lingua::Romana::Perligata, который позволяет писать программы на латыни. Автор статьи обещает предоставить ниже правдоподобное обоснование для подобного извращения, а переводчик постарается облечь это в форму, мотивирующую к смежным с темой статьи упражнениям. Также автор предлагает всесторонний обзор синтаксиса и семантики латинизированного Perl и объяснение специальных техник фильтрования и разбора исходных кодов, необходимых для эффективного интерпретирования языка программирования с (почти) вольным порядком слов.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js