The first useful programming language I created was a Forth-dialect in Common Lisp [0].
While understanding Forth was key to even getting me started, since I finally found a thread I could start pulling, something that looked doable from where I was standing; it's pretty obvious I never went all in with the Forth-way.
I've since created several languages [1..] exploring the border between Forth and Lisp, or between control and convenience. And I'm still undecided. Just reading this article about Forth set my mind going in that direction again.
The fact that it's possible to do so much using such simple tools is like a riddle that keeps tickling my brain. And from a theoretical standpoint I find the stack abstraction more beautiful than registers, the same way an ordered set outshines a hashed one; because they're analog, full spectrum, without gaps and extra complexity to cover them.
While understanding Forth was key to even getting me started, since I finally found a thread I could start pulling, something that looked doable from where I was standing; it's pretty obvious I never went all in with the Forth-way.
I've since created several languages [1..] exploring the border between Forth and Lisp, or between control and convenience. And I'm still undecided. Just reading this article about Forth set my mind going in that direction again.
The fact that it's possible to do so much using such simple tools is like a riddle that keeps tickling my brain. And from a theoretical standpoint I find the stack abstraction more beautiful than registers, the same way an ordered set outshines a hashed one; because they're analog, full spectrum, without gaps and extra complexity to cover them.
[0] https://github.com/ricelang/lifoo
[1] https://github.com/ricelang/snabl
https://github.com/ricelang/cixl
https://gitlab.com/sifoo/snigl
https://github.com/codr7/g-fu
https://github.com/codr7/cidk
https://github.com/codr7/lila