No customers, plenty of reasons
A language that nobody needs is a strange thing to build, and yet people keep building them. Because there is no central register of designers and no survey that covers them all, any account of their motives is necessarily general. What follows are the reasons that come up most often in the writing and projects of the community, offered as tendencies rather than findings.
Curiosity
The most common motive is a simple “what if”. What if a language had only one instruction? What if programs were drawn instead of typed? What if there were no way to loop? A designer follows the question to see what happens, often without a clear destination.
Curiosity also explains why so many languages are variations on a theme. Someone meets an existing language, notices a feature they find intriguing, and wonders what a world built around that feature alone would look like. The grid-based Funge family is a good example of an idea that invited exploration, since the same basic notion of a moving pointer on a plane can be extended in several directions.
The pleasure of a challenge
For many people, designing a language is a puzzle. The challenge may be to make the smallest language that can still compute anything, to make a language in which a particular task is nearly impossible, or to see whether a program can be written under strict limits. This overlaps with the world of code golf and constraint puzzles, where the restrictions are the fun.
A designer can also challenge themselves in the implementation: writing an interpreter in a day, or in an unusual host language, or in the fewest lines possible. The satisfaction of making something work under a self-imposed rule is a motive in its own right.
Art and aesthetics
Some language designers think of themselves as artists. A language can be a medium for expression, and a program can be an object to look at as well as to run. Examples of aesthetic goals include:
- source code that forms a picture
- programs that read like poems or recipes
- layouts that use color or shape as syntax
- languages whose programs sound or feel a certain way
For these designers the question is not whether a language is practical, but whether it is beautiful or surprising. The wider family of ASCII art programs and color-based languages grows from this impulse.
Humor and play
As covered in the article on joke languages, many languages exist to be funny. Play is a respectable motive. A designer who builds a language around a pun or an absurd rule gets the pleasure of the joke and the pleasure of making it function. Humor also gives the project a reason to be shared, which makes it a social act as much as a creative one.
Learning by building
Building a language is an excellent way to learn how languages work. Designers often say, in effect, that they wanted to understand parsing, interpretation or computation, and that the best way to do so was to make one. An esoteric language is a convenient choice for this because its small size keeps the project finishable. The lessons are summarized in the article on what esoteric languages teach programmers.
A related motive is to understand theory. Writing a language and then asking whether it is Turing complete connects hands-on work to ideas in computability theory. For some designers the language is a vehicle for exploring a theoretical question.
Protest and commentary
A language can make a point. Some designs poke fun at a fashion in programming, an overly complicated tool or a habit the designer finds annoying. By exaggerating the problem, the language comments on it. This motive is often mixed with humor, and the line between sincere critique and playful exaggeration is not always clear.
Community and recognition
Another motive is belonging. Publishing a language, even a small one, makes you part of a conversation. It invites feedback, variants and challenges from others. Contests and shared pages give designers an audience, and the hope of seeing someone else write a program in your language is a strong incentive. Not everyone cares about this, but for many it adds meaning.
Craft and completion
Finishing a small, complete thing is satisfying. A hobby language has a manageable scope: a handful of rules, an interpreter, some examples and a page of explanation. Completing all of those parts gives a sense of craft that larger projects rarely offer. Even a language used by only its author can feel like a worthwhile accomplishment.
What is usually not the motive
It helps to be honest about what these projects are generally not for.
- Replacing existing languages. Almost none of them aim to.
- Making money. Few esoteric languages are intended to earn anything, and it would be unwise to expect that.
- Solving a practical problem. The problem is typically the language itself.
That said, motives often shift. A project that starts as a joke can turn into a serious study, and a serious experiment can become a running gag.
Mixed motives are normal
Most designers cannot name a single reason. A typical project might begin with curiosity, gather a joke along the way, pick up a challenge when the designer sets a size limit, and end with a pleasing layout. When asking why someone made a language, it is more accurate to expect a combination.
If you are thinking of making one
Ask yourself which of these motives resonates. Knowing your own reason helps you decide what to build. If you want to learn, keep the language tiny and finish it. If you want to amuse, find the joke first. If you want to explore an idea, write down the single rule that defines it. Whatever the reason, the best preparation is to read a few existing languages, then make something small and describe it clearly. Whether anyone else ever uses it is beyond your control, and in this hobby that is generally considered fine.