Hacker News new | ask | show | jobs
by vram22 2698 days ago
Thanks a lot for the detailed answer.

I did try out Forth a little, much earlier, and had read some of the Starting Forth book - had bought the hardcover edition, it looked really good, including the cover - dark brown, either was leather or had a leather effect (more likely the latter). And I liked Leo's writing. Will check out 8th at some time. The cross-platform GUI thing with tiny EXE's is a pro (Rebol and Red are similar, except not sure if Rebol supported EXEs, except maybe via 3rd-party tools), although not having good I/O and filesystem support is a con, since a lot of the stuff I do involves file I/O.

Still, it may be worth trying 8th out.

1 comments

I was going to mention that it is a lot like Rebol and Red in philosophy, but you beat me to it.

Rebol was mostly built by one person (Carl Sassenrath) but has to package the entire interpreter (I think maybe 5 MB) to make an .exe if you have the paid version. Red can already make executables and has made fantastic progress, but it is a larger effort. I check up on Red once a month and think 1.0 will be amazing.

>I was going to mention that it is a lot like Rebol and Red in philosophy, but you beat me to it.

I agree, the philosophies are similar. Minimalism, relying more on your own code than libraries, not generalizing your code for a lot of cases that might not happen, etc.

One thing that puzzles me about Forth, though:

I did read a few books about it (much earlier, and I'm not a language designer, so what I say next could be wrong). Some of them talked a bit about Forth's internal design. I understood from that, that when multiple words (Forth subroutines) are defined, they are "threaded", from which I understood that they are added to a linked list of word definitions. Wondered why it needed to be a linked list. If it was a lookup table of some kind, like a Python dict or a Ruby hash (basically an associative array), looking up word definitions to run them would be faster than in a linked list, which is linear, I'd think.

Edit: I did just have an idea of what the reason for that may be, but will wait a bit to see if anyone replies with their explanation. Hint about my idea: it may have to do with Charles Moore's Forth philosophy - just a guess on my part.

I'm very much a noob when it comes to Forth and I've asked myself the same question before. I think threaded is generic enough to not necessarily dictate the data structure. It more or less means that a word (if it isn't being defined and added to the dictionary (not dictionary as in Python dictionary, but what they call the list of words in Forth)) it will read from the stack, modify the stack, and then call the next word.

Someone on here or on the Forth subreddit should be able to answer though.

>Rebol was mostly built by one person (Carl Sassenrath)

Yes, I had read up about him after learning that he was involved with creating both Amiga OS and then Rebol. Amazing skills. IIRC, I read in some interview of him, that he said he read everything he could lay his hands on, about operating systems, before working on the Amiga OS. Maybe did the same for languages, before working on Rebol.

>but has to package the entire interpreter (I think maybe 5 MB) to make an .exe if you have the paid version.

Interesting. I had not tried the paid version of Rebol, only the free one, and that too, only for a bit, as a hobby. But did like it a lot even then.

>Red can already make executables

Yes, I had tried that, and the executables are really small too, just like the Red interpreter/compiler (in one file!) and the Rebol interpreter.

>I check up on Red once a month and think 1.0 will be amazing.

Likely so. I only hope they do not get off the tracks with their coin-funding stuff, I felt somewhat bad about that, would have preferred if they had gotten funding by more traditional means, but that is just my thoughts.

>maybe 5 MB

Just did a DIR and checked on my PC, the sizes of Rebol Core and Rebol View (bytes):

  303,104 rebol-core-278-3-1.exe
  864,256 rebol-view-278-3-1.exe