Man
Professional
- Messages
- 3,093
- Reaction score
- 635
- Points
- 113
Esoterics and programming - it seems that these concepts are as far apart as possible. Or is it? Olga Maksimenkova, associate professor of the Department of Software Engineering of the Faculty of Computer Science at the National Research University Higher School of Economics, spoke about what esoteric programming languages are, what types there are, and how to create your own.
Esoteric programming languages (EPL) are a special category of languages that are not developed for industrial purposes, but, for example, to explore the boundaries of development capabilities or to check whether an idea can be implemented. EPL also include languages that are works of art or "jokes" - by analogy with the "jokes" and "fantasies" of great composers. For example, Bach's "Joke" from Suite No. 2 is written in a light and playful manner: the average listener practically does not know such Bach. Modern composers such as Mike Oldfield or Jean-Michel Jarre went further and actually explored the boundaries of art, combining and combining seemingly incompatible things: folk, classical and electronic instruments, light and color (following Scriabin, of course). Listen, for example, to Oldfield's cult album Tubular Bells.
It is impossible to say that there are "ordinary" programming languages, and there are unusual - esoteric ones. All PLs can be classified differently: they can be low (Assembler) and high level (Python), or, for example, allowing safe and unsafe memory management. The main criterion that determines the esoteric nature of a programming language is quite subjective - this is the level of bringing individual ideas, properties or restrictions to the point of absurdity, which makes such languages unsuitable for mass product development.
The purposes of creating ELPs follow directly from their definition. We know ELPs created to confirm or disprove concepts, and those that were created for the purposes of high programming art. In such cases, the PL acts as a means of artistic expression, an indicator of the skill level of an artist, programmer, or developer of formal languages. For example, there is the Shakespeare language, a program in which looks like a poem in the style of a play by William Shakespeare, where commands are expressed by appeals from one character to another.
A programmer's superstition that has become a tradition is to begin learning a programming language by printing the phrase "Hello, world!". This link shows how such a program would look in dozens of different esoteric languages.
Let's highlight some of them. First, there is another poetic language - Haifu, programs in which look like haiku. It was created to draw attention to the lack of Eastern philosophy in widely used programming languages such as C or Java. This language does not operate with the standard concepts of truth (True) and lies (False) - instead, the developer will have to work with the criteria of Yin and Yang - without their balance, the program simply will not work.
www.cs.uky.edu
Next on the list is the famous Brainfuck: you'd probably have a hard time holding a conversation in a tech company without knowing about this language. In Brainfuck, "Hello, world!" can be printed in two ways: with 33 lines of code, or with one line of magic.
esolangs.org
The funniest programs, of course, are created in languages that aim to minimize syntax. There is an interesting language called Whitespace that takes this idea to the point of absolute absurdity – it uses non-printable characters as control structures: space, new line, and tab, meaning that without highlighting, a person cannot see that anything is written on the screen at all.
From the group of graphic ELPs, we will single out Piet, named after the artist Piet Mondrian. Incidentally, this language was created by the same person as the Haifu language – David Morgan-Mar from Australia. Piet programs look like canvases of abstract images. This is how “Hello, world!” looks in it.
esolangs.org
Sometimes languages are created for practical and scientific purposes, for the tasks of testing concepts of mathematics or theoretical computer science. An example of such a language is Unlambda. Programming is divided into imperative, where clear algorithms are specified, and declarative, which includes functional programming in a broad sense, where functions are understood in a mathematical sense, almost like in school: "dependence of y on x". The Unlambda language is a "pure functional language" that is built around a single data type - a function.
Note that the esoteric nature of a language does not prevent it from being Turing complete or incomplete. Despite its laconicism, Unlambda is Turing complete, i.e. any computable function can be implemented with its help in the context of a specific formal computer. It is currently assumed that modern PLs are Turing complete, which is a criterion for distinguishing them from query languages and markup languages. For example, SQL is a Turing complete language, but HTML is a markup language, and the concept of Turing completeness is not applicable to it.
Perhaps the most important task of ELP is to force the programmer to go beyond and expand their own ideas about the main tool of their work. It seems that ELP allows to maximally feel the concept and the concept of the PL itself, as well as the key messages of the theory of formal languages. The theory of formal languages is the fundamental basis for the development of PL. That is, it is the theory of how to make a PL and translate what is written in it into machine representation. From this point of view, multidimensional ELPs are interesting, because the very idea of imagining multidimensional spaces is good for those who work a lot with abstractions of different levels. It turns out that a multidimensional language can be used as a trainer for developing a specific useful skill.
If I were to create an ELP, it would be of a literary nature – I am a fan of verbal form. For example, it seems to me that a language that allows writing programs in the style of Russian epics would be an interesting option. It may already exist, but I have not yet encountered it.
Keep in mind that if you want to write your own language, you will need to master the theory of formal languages and grammars, as well as the basics of translation. The best introduction is still considered to be the famous work "Compilers: Principles, Technologies, and Tools" - a classic textbook on the theory of compiler construction by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman, also known as the "Book of the Dragon" (because of the cover). There is also a useful site with many developments - all together this will definitely help "defeat the dragon".
Source
Esoteric programming languages (EPL) are a special category of languages that are not developed for industrial purposes, but, for example, to explore the boundaries of development capabilities or to check whether an idea can be implemented. EPL also include languages that are works of art or "jokes" - by analogy with the "jokes" and "fantasies" of great composers. For example, Bach's "Joke" from Suite No. 2 is written in a light and playful manner: the average listener practically does not know such Bach. Modern composers such as Mike Oldfield or Jean-Michel Jarre went further and actually explored the boundaries of art, combining and combining seemingly incompatible things: folk, classical and electronic instruments, light and color (following Scriabin, of course). Listen, for example, to Oldfield's cult album Tubular Bells.
It is impossible to say that there are "ordinary" programming languages, and there are unusual - esoteric ones. All PLs can be classified differently: they can be low (Assembler) and high level (Python), or, for example, allowing safe and unsafe memory management. The main criterion that determines the esoteric nature of a programming language is quite subjective - this is the level of bringing individual ideas, properties or restrictions to the point of absurdity, which makes such languages unsuitable for mass product development.
The purposes of creating ELPs follow directly from their definition. We know ELPs created to confirm or disprove concepts, and those that were created for the purposes of high programming art. In such cases, the PL acts as a means of artistic expression, an indicator of the skill level of an artist, programmer, or developer of formal languages. For example, there is the Shakespeare language, a program in which looks like a poem in the style of a play by William Shakespeare, where commands are expressed by appeals from one character to another.
A programmer's superstition that has become a tradition is to begin learning a programming language by printing the phrase "Hello, world!". This link shows how such a program would look in dozens of different esoteric languages.
Let's highlight some of them. First, there is another poetic language - Haifu, programs in which look like haiku. It was created to draw attention to the lack of Eastern philosophy in widely used programming languages such as C or Java. This language does not operate with the standard concepts of truth (True) and lies (False) - instead, the developer will have to work with the criteria of Yin and Yang - without their balance, the program simply will not work.

www.cs.uky.edu
Next on the list is the famous Brainfuck: you'd probably have a hard time holding a conversation in a tech company without knowing about this language. In Brainfuck, "Hello, world!" can be printed in two ways: with 33 lines of code, or with one line of magic.

esolangs.org
The funniest programs, of course, are created in languages that aim to minimize syntax. There is an interesting language called Whitespace that takes this idea to the point of absolute absurdity – it uses non-printable characters as control structures: space, new line, and tab, meaning that without highlighting, a person cannot see that anything is written on the screen at all.
From the group of graphic ELPs, we will single out Piet, named after the artist Piet Mondrian. Incidentally, this language was created by the same person as the Haifu language – David Morgan-Mar from Australia. Piet programs look like canvases of abstract images. This is how “Hello, world!” looks in it.

esolangs.org
Sometimes languages are created for practical and scientific purposes, for the tasks of testing concepts of mathematics or theoretical computer science. An example of such a language is Unlambda. Programming is divided into imperative, where clear algorithms are specified, and declarative, which includes functional programming in a broad sense, where functions are understood in a mathematical sense, almost like in school: "dependence of y on x". The Unlambda language is a "pure functional language" that is built around a single data type - a function.
Note that the esoteric nature of a language does not prevent it from being Turing complete or incomplete. Despite its laconicism, Unlambda is Turing complete, i.e. any computable function can be implemented with its help in the context of a specific formal computer. It is currently assumed that modern PLs are Turing complete, which is a criterion for distinguishing them from query languages and markup languages. For example, SQL is a Turing complete language, but HTML is a markup language, and the concept of Turing completeness is not applicable to it.
Perhaps the most important task of ELP is to force the programmer to go beyond and expand their own ideas about the main tool of their work. It seems that ELP allows to maximally feel the concept and the concept of the PL itself, as well as the key messages of the theory of formal languages. The theory of formal languages is the fundamental basis for the development of PL. That is, it is the theory of how to make a PL and translate what is written in it into machine representation. From this point of view, multidimensional ELPs are interesting, because the very idea of imagining multidimensional spaces is good for those who work a lot with abstractions of different levels. It turns out that a multidimensional language can be used as a trainer for developing a specific useful skill.
If I were to create an ELP, it would be of a literary nature – I am a fan of verbal form. For example, it seems to me that a language that allows writing programs in the style of Russian epics would be an interesting option. It may already exist, but I have not yet encountered it.
Keep in mind that if you want to write your own language, you will need to master the theory of formal languages and grammars, as well as the basics of translation. The best introduction is still considered to be the famous work "Compilers: Principles, Technologies, and Tools" - a classic textbook on the theory of compiler construction by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman, also known as the "Book of the Dragon" (because of the cover). There is also a useful site with many developments - all together this will definitely help "defeat the dragon".
Source