How a programming language reflects its author's weirdness 🤪📜
avatar
Posted by Daniel Brendel
22 hours ago

I'm weird, therefore my creation is as well

When I started designing my own programming language, I wanted to give it a unique flavor. Generally speaking, any software one builds will eventually be a representation of its creator in one way or another. In my case I wanted to syntactically make some things different as people are used to. Normally, if you are going for wide adoption, you'd make a language so that is can be quickly learned. The faster you can learn a language, the faster you can start building actual things. Likewise, people will be accepting much more of course. Why bother with a language whose usage is a pain in the ass? However, while I really like the idea of building something that is widely adopted, I was sure that it wouldn't happen with my language. Designing and building a language that is fast and efficient is not a trivial task. There is a reason why only few people do it. It IS rocket science in comparision. So, instead I focused on the following goals:
  • Put in as much representation of me as possible
  • Make it a full working replacement of Cmd/PowerShell for my own use
So, yeah, after more than 8 years, I've managed to build a programming language that succeeded in that goals. But what are the oddities now? Let's check them out! One major thing that will be recognized quickly, is the fact that I'm using <= as assignment operator instead of =. I've really never seen it, so I wanted to do it. To me, it merely reflects the operation put B into A rather than after this operation, A equals B. Practically, both statements are correct, but to me the first one sounds more revealing, while the other one sounds more hiding, in terms of what's happening under the hood. But that may as well be just my own thinking. # Declaring and initializing a constant const SOME_CONSTANT int <= 10; # Declaring and assigning a global variable value global myGlobalVar bool; set myGlobalVar <= true; Also I made it so that the type of an entity comes after its name. This applies to constants and variables (as seen above), but as well as functions or in OOP constructs. # Sample of a function implementation # Perform addition using a local variable and parameters, and set as function result function MyTestFunction int(param1 int, param2 int) { local myLocalVar int; + myLocalVar %param1 %param2; result %myLocalVar; }; # Class implementation example class CMyClass { member mTestVar string; method construct void() { set %this.mTestVar <= "Hello World!"; }; method MyTestMethod void() { print "%%this.mTestVar"; }; }; As for if-statements I wanted to go with parametrized comparision operators, as you may know from PowerShell. This was also decided because all operands and the operator are separated via commata in order for the parser to recognize them. So, in that situation it feels weird to stick to the most common operator identifiers. # If-statement, including elseif and else. if (%myValue, -gre, 1) { print "Greater or equal to 1"; } elseif (%myValue, -eq, 0) { print "Equal to zero"; } else { print "Obviously less than zero"; }; # For-loop for (i, 0, 10, -inc) { print "Current value: %i"; }; You will most likely also have noticed the semicolon after the curly brackets. The scripting language is command-based. Each interpretable line is a command plus optional arguments. Commands are separated by a semicolon. So, if-statements, loops, functions are complex nested commands that require the semicolon at their end. This approach serves the following purpose: Make the interpreter easy to be implemented while allowing complex, nested script code. I'm pretty sure, you know see what I mean when I say that my programming language is weird. You may also see that it's inspired by other languages, such as C++, PHP, Tcl and PowerShell. It's funny tho, because sometimes doubtful thoughts come to mind, like, I should change the syntax so it reflects the crowd. But now, I'm not going to do that. I want to accept my weirdness. My programming language is an almost therapeutic way to practice it. And the language works very well for what it's designed for, automation tasks and scripted applications. Like it was done with AutoIt or AutoHotkey. Want to see what I've build with my own programming language? Go ahead: You can also check out the multimedia applications on my itch.io profile: Counter-Strike 1.6 Retroboard screenshot https://danielbrendel.itch.io/aquaboard-csrb Asteroids game screenshot https://danielbrendel.itch.io/aquaspace-game
If you want to check out my related projects, see the following links: ✨The scripting interpreter for your own C++ projects ✨The scripting and automation shell for Windows More info on the official AquaShell homepage: 🌐 https://www.aquashell-scripting.com
Imprint
© 2026 by Daniel Brendel

Scientia potentia est

Visitors: 29.1K