SSL: Stupid Stack Language
esolangs.org
esolangs.org
How? No while loops? No backwards jumps? Or something clever? :-)
The interpreter doesn't add like forth... it leaves the 2 values to be added still on the stack... you have to do "glblb" to do a normal add, for example.
A fun exercise, but not a language I'd want to work with.
Edit: Specifically missing are any ways to persist variables, or allocate memory. Yes, you could fake all of that with some very careful coding, but a single mistake or clear stack (y) would send it all tumbling down.
This seems especially prone to some kinds of nasty bugs if you're not careful with what you're doing:
Would you like to save your progress? [y/n] >> y
[1] https://esolangs.org/w/index.php?title=StupidStackLanguage&d...
If you start worrying about implementation bounds, C gets iffy -- pointers have to have a known size, and be convertable to and from integers, so you cant have unbounded memory in any given implementation (you can get closer with files, but files still have offsets which imply limited maximum size, and there is a limited space of possible strings to name files).
By comparison SSL has two axes of bounds (stack length bounds and number bounds), only one of which is useful for simulating an arbitrary large BSM. I would say it is also close to TC but less so than C, because you need number bounds proportional to the max memory of simulated BSM and it is much easier to hit number bounds than stack length bounds.
Curious: Does that make the language easier to use in any way? (“Easier” here being very relative of course)
But what is supposed to happen when there is no matching u? Undefined like C and so implementation dependent? Or is the documentation just a summary and the real specification is the Python implementation?
In fact looking at the Python on the esolang site that is what happens and if there is no matching u then the program counter will have advanced beyond the end of the program and the program terminates. Going back fro u to t is slightly different in that if there is no matching t then it will simply continue from the first instruction.
Language design is difficult even for seemingly simple languages.
Obviously not the first nor the last. Lots of room for expansion and syntax pre-compilers.