There is no single best choice
The right first esolang depends on what you find interesting. A language that delights one person can bore another. Instead of asking which is “best,” ask which one matches the kind of problem you like. The sections below group languages by interest, with the caveat that all of these are matters of taste.
If you like logic and machines
A tape language such as Brainfuck is a natural fit. The model is easy to state: cells, a pointer and eight commands. You can learn the whole language in minutes, then spend weeks learning to work within it. It also lines up nicely with the Turing machine from theory, so it suits readers who like seeing the abstract idea turn concrete.
A related option is a counter machine language, which uses numbered registers and a few instructions. These are good if you enjoy small formal systems.
If you like spatial thinking and puzzles
A grid language such as Befunge suits people who like mazes and diagrams. Your program is a picture of paths, and you debug by following the route the instruction pointer takes. Beginners often find the first hour confusing and the second hour surprisingly enjoyable. If this appeals, start with the basics of the Befunge language and then try a Hello World program, because printing a short message teaches most of the basics.
If you like visual and artistic ideas
Languages that use colors, shapes or images as source code reward people who like design. In those languages, the program can double as an artwork. The trade-off is that you may need a graphic editor as well as an interpreter, and debugging can be less direct than in a text language.
If you like absurdity
Joke languages are about the idea, not the productivity. Reading about a few is a pleasant way to understand the culture without committing to writing much code. Whitespace, where the code is made of invisible characters, is a good example of a language whose main lesson is conceptual: it makes you think about what source code is. It is more fun to read about and to try once than to use for a long project.
If you like stack-based thinking
Languages where all data lives on a stack teach a style that also appears in real systems, such as some calculators and virtual machines. Learning to manage a stack by hand is a skill that transfers well.
Practical criteria
Besides taste, a few practical points help:
- Documentation. Pick a language with a clear, short description. A one-page specification is easier to learn from than a scattered one.
- Tooling. Check that a working interpreter exists for your system. Many are available online or are short enough to build yourself.
- Examples. Languages with many small, readable example programs are easier to start with.
- Size. Very small languages are quick to learn, though they can make even simple tasks feel long. Mid-sized ones, with a few more instructions, are sometimes friendlier.
How to start
Start small. A good first goal is printing one message, then reading a number and printing it back, then writing a short loop. Resist the urge to attempt something ambitious on day one. Tracing a short program by hand, step by step, teaches more than copying a large one.
It also helps to keep expectations realistic. Esolangs are meant to be odd, so feeling stuck is normal and not a sign you are doing it wrong. Many people find that the process teaches them something about ordinary languages as well.
Switching later
Your first choice is not permanent. Many people sample two or three languages before settling on a favorite. Moving between a tape language and a grid language, for example, highlights how different memory and control flow can be. There is no cost to changing course, and the broader hobby has room for every taste, whether you want to write programs, build interpreters or just read about the ideas.