Hacker News
Show HN: R3forth, a ColorForth-inspired language with a tiny VM
anotherlab
|next
[-]
Like everything else, it was easy do simple things, much harder to do anything else. My brain also rejected doing stuff with postfix notation.
It always fun trying to explain Forth to developers used to higher level languages. It always came down to "a word is like a function, but not really"
phreda4
|root
|parent
[-]
13415
|next
|previous
[-]
watersb
|next
|previous
[-]
So I have a tribal affinity for Color Forth, by original creator of Forth.
larsbrinkhoff
|root
|parent
|next
[-]
larsbrinkhoff
|root
|parent
|next
[-]
astrobe_
|root
|parent
|previous
[-]
Chuck Moore agrees I think with the idea [2]:
That raises the question of what is Forth? I have hoped for some time that someone would tell me what it was. I keep asking that question. What is Forth?
Forth is highly factored code. I don't know anything else to say except that Forth is definitions. If you have a lot of small definitions you are writing Forth. In order to write a lot of small definitions you have to have a stack. Stacks are not popular. Its strange to me that they are not. [...]
What is a definition? Well classically a definition was colon something, and words, and end of definition somewhere.
: some ~~~ ;
I always tried to explain this in the sense of this is an abbreviation, whatever this string of words you have here that you use frequently you have here you give it a name and you can use it more conveniently. But its not exactly an abbreviation because it can have a parameter perhaps or two. And that is a problem with programmers, perhaps a problem with all programmers; too many input parameters to a routine. Look at some 'C' programs and it gets ludicrous. Everything in the program is passed through the calling sequence and that is dumb.[1] https://www.complang.tuwien.ac.at/anton/euroforth/ef04/ertl0...
bitwize
|root
|parent
|previous
[-]
selvor
|root
|parent
[-]
I imagine his ColorForth has been more like a retirement hobby for the past decade. He used to screenshare from his ColorForth during the calls, but that could have been overcome more easily with a VGA->HDMI capture dongle and running ColorForth natively. And I doubt he needed the TCP/IP stack directly on his ColorForth based on what he shared so far. So I don't see the point of porting over to Windows to begin with. After all, ColorForth runs more easily on bare metal, on UEFI/BIOS or whatever, so it didn't ever need BitBlt to draw things on screen for sure. The guy built a ColorForth processor, and the devkit from GreenArrays has a VGA connector, etc. So I believe Chuck was on to something else when he shared that, perhaps just to stimulate thinking, but people tend to take things at face value.
On another note, ColorForth (or FORTH for that matter) is not meant to be owned/controlled by him or a committee. So it's not like he was maintaining it. AFAIK, he didn't even endorse or support FORTH standardization efforts, and somewhere said it's silly. I also find it interesting that in his book A Problem Oriented Language, there is not a single mention of FORTH even once (except in the preface, and in his bio) yet he describes FORTH in the book, just calls it as "A Problem Oriented Language" without naming it. So it's almost like FORTH doesn't exist. It's just an idea. And what doesn't exist cannot be broken.
bitwize
|root
|parent
[-]
The strange thing is that imho, as in many other things around language design, Scheme sort of had the right idea. I like having a well-defined semantics with wide agreement that I can write programs on. The fact that the Common Lisp standard is practically unchanged since the 80s, and the core of Ada has survived with only significantly useful extensions added on in later standards, is real neat to me, compared with C++0x/1x/2x being a completely different beast than the C++ of the 90s, and Rust and JavaScript undergoing constant churn. The RnRS process, historically, was all about defining a core that implementers could all agree on, calling it Scheme, and then letting implementers fuck around on top of that basis. R6RS and R7RS were controversial precisely because they deviated from this; although R7RS tried to please both the "small core" camp and the "Python with parens" camp. Which is kind of like trying to please both classic Sonic fans and post-Adventure Sonic fans.
But yeah, I think Chuck's advanced age and a general feeling of "I'm too tired for this shit" were the primary reasons for making that announcement. And you may be right, he may be just telling us not to get too attached to a particular artifact but to embrace the idea of Forth. Maybe the real ColorForth was the friends we made along the way. May the Forth be with you, my friend.