Programming languages are meant to aid in the very tedious and complicated process of telling computers what to do, also called as programming. The first programming languages were made in the 1950s with stuff like FORTRAN, ALGOL, or ENIAC Short Code and were just rudimentary translators or interpreters. We’ve came a long, long way since then, for good or bad.
Modern programming languages are, according to absolutely every one of themselvers, replacements for the previous failure of languages, although most are new kinds of A/B failures autogenerated by shitty AI agents so the self-proclaimed “developers” don’t have to use other tortures of “multi-paradigm” FLOSS kitchen-sink languages, made by OTHER giant self-proclaimed “indie” open-source capitalist profit-first companies entirely focused on attracting inversors, that also seem to “love” <insert here EVERY cause that may bring them money>, mainly to suck inversors.
I will go on more detail for THIS on this article, and how to make your own shitty programming language!
1. Solve a problem that doesn’t exist
“Wait, my elevator isn’t working, this is C’s fault! I shalt replace it [C, of course, that is the culprit]!” — Rust’s lore
For starters, the reason most languages suck is because they are superfluous. The best code is that which does not exist: as it always is the least vulnerable, least buggy, and most mantainable. Most programming languages have a seemingly rational goal, e.g.:
“We want to make programming easier.”
or
“Low level programming, but safe.”
This is, of course, a shameless trap to fool themselves into thinking the language isn’t nonsensical, and for others so they can put “Adopting the future, est. 2025” as their slogan on their vibe-coded Tailwind Vue JS/TS Docker Rust WebPack Vite crypto homepage. Of course, only a couple of languages have achieved their purpose, and those were much clearer than what modern languages introduce. Now you need to introduce:
- A 900+ page spec
- A sociopolitical-socioeconomic philosophic movement based in expresivity and take over the goverment
- A twofold runtime model where your program runs on the JVM and Erlang/OTP plataform, at the same time!
And you MUST make ALL of these. Great! Now you need to add MORE languages, we already have the statement sublanguage and expression sublanguage, why don’t we add more! The loop language: our overengieneered macro system will allow us to construct a DSL inside the looping keyword, and also an error system template! And why not? We’ll build a DSL for documentation and pragmas based on fucking comments. You need to make it complex! Power requires complexity! Of course!
2. Introduce all paradigms a capitalist company has proven “effective”
You know what is a GREAT way to attract early users? Allow them to use THEIR programming paradigm on your language. And use ALL of them at all. HTTP module procedural, Iterators OO, whatever you think fits best! Most languages are just big clusters of functionality with little-to-no rationale behind anyways. But overall those that can give YOU the highest revenue, and the most “proven” ones, so there is absolutely no risk whatsoever! Of course, you shall overengieneer it, overall OOP, since you can get a lot out of that, add multiple inheritance, solve the diamond problem using AI-inserted static markers that help the user achieve their intent, you need to make different types of inheritance, public inheritance, protected inheritance, and private inheritance too! Add useless rules between them.
3. Expressive syntax
So “expressive” is the new euphemism for “insanely complex” nowdays? (Uriel), I guess so! So we need a heavily expressive languages. One where we can feel the power through our hands! An easy way to do this is by introducing keywords, so you can keep the runtime “small and portable”, that would look great on the homepage! Add some operators like:
&grave><: get any integer and reverse its bits&grave&grave <i>nbits</i>: limit the number of bits to nbits%&grave:XORtwo numbers many times
4. Interop
Integrating progressively your codebase would really attract users,
don’t you think boss? We should develop an ABI based on floating point
operations and classes where a function called main is a class
inheriting from the CtlABITypeFunction2Args, which inherits
from … This ABI should be implemented in all languages! Javascript, C++,
C#, … It must be the holy grail of interop. As a rule of thumb, you
shall always reinvent & overengieneer the wheel when it comes to
interop, and remember DO NOT USE FFI!! It is way to
simple, and you have to adapt to other languages, they should adapt to
yours. If they don’t, they are egoistic failures refusing to
embrace the future with the only motivation being to keep their
language’s reputation intact.
If you can’t find a way to port the ABI, then add a backend to the <lang> Hybrid Transpiler/Compiler that translates to another ABI that is compatible with that language, so you can really reach every programmer.
Appendix: examples of good languages
- Scheme, Common Lisp, basically every single LISP
- C
- classic ol’ x86_64 ASM
- Go
There really aren’t many good programming languages so ugh… there was my top 4.
END
I hope you now have an absolute piece of SHIT of a language. THANKS!