Custom Programming Languages and Better IDEs
2025-05-05
I think that “general purpose programming languages” are a bad idea.
We want one custom programming language for each kind of paradigm we use to solve a problem.
Programming languages are but 1960s IDEs for programming.
UNIX® showed us that the concept of IDEs can be extended to include many programming languages at once.
I.E. building general purpose programming languages and trying to put everything into a single language and to use only one pass, is a bad idea. It leads to confusion and over-work and too much distracting detail. For example, we use a DSL, called BNF, to think about ASTs. This simplification allows us to create much more interesting syntaxes without worrying about how to code up all of the niggly details to scan and parse incoming text. The UNIX idea of composing programs using multiple languages, multiple programs and multiple programs composed of other multiple programs, is a better idea than trying to jam everything - all possible paradigms - into one über programming language.
The UNIX idea of composition has been ignored/misunderstood due to an over-emphasis on function-calling. UNIX composes programs by using queues instead of function calls (FIFO vs. LIFO respectively).
Physicists are trained to devise custom notations. This relieves cognitive burden when thinking about specific aspects of certain hoary problems (i.e. the physics of how the world works). Programming, though, has evolved a workflow which is 180° out of sync with the custom notation approach. The result is bloatware, ever-increasing complexity and a general feeling that things are “too complicated and becoming more complicated”.
The programming community can do better with the technologies that have been invented since 1960. Queues, 1st-class functions, PEG, closures, etc. None of this is rocket science. It’s just stuff that we’ve already got. We need only to change our mindset about what a good IDE is. We don’t need more synchronous, functional programming languages. We just need IDEs that let us bolt together programs using many programming languages. And debuggers that acknowledge the importance of each different paradigm instead of forcing us to single-step through code as if only the synchronous paradigm is needed. We need “programming languages” that bolt many other “programming languages” together.
It is surprisingly easy to build better IDEs / programming languages if one allows for programming language “syntax” that is not only Gutenberg-style “text” and one realizes that we do not need to bolt software together using only function calls. We can use software tools that allow us to express “programs” in more interesting ways, then automatically boil them down to “text” which can then be processed by tools like OhmJS.
See Also
Email: ptcomputingsimplicity@gmail.com
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Gumroad: tarvydas.gumroad.com
Twitter: @paul_tarvydas
Substack: paultarvydas.substack.com

