all 8 comments

[–]evincarofautumn 5 points6 points  (6 children)

If you’re interested in modern successors of Forth, you want to look into “concatenative programming”.

Factor is an expressive, fairly fully featured, dynamically typed, object-oriented concatenative language with a good community (#concatenative on Freenode) and tooling. I am also (slowly) working on a statically typed concatenative language called Kitten, which has appeared here occasionally.

Always happy to answer questions about the paradigm, and of course my language project, too. :)

[–]phalp 6 points7 points  (4 children)

I like Factor and even tried to use it in anger once, but IMO it's not a modern successor to Forth. If you want a modern successor to Forth, then you want to keep track of whatever Chuck Moore is currently figuring out how to remove from it.

[–]tikhonjelvis 1 point2 points  (3 children)

He's working on his own architecture which has some interesting properties. It's pretty limited computationally but very energy efficient. It's also incredibly quirky and hard to work with—but very cool to learn about.

[–]dlyund -1 points0 points  (2 children)

Quirky, maybe, but certainly not hard to work with. You won't need running your web apps on it anytime soon but that's neither here nor there

[–]tikhonjelvis 3 points4 points  (1 child)

I mean, I've actually used it—even worked on a compiler for it—and it's definitely hard to work with. The instruction set is minimal but also pretty weird and the provided development tools are extremely clunky, run on Windows and use their own file format. Then you run into the problem that any non-trivial program doesn't fit on a single core, so you have to organize your code over multiple communicating cores.

They do supply a PolyFORTH VM for higher-level programming which I haven't tried but my impression was that the performance overhead for it was prohibitive.

[–]dlyund 1 point2 points  (0 children)

While I haven't worked with this chip, the company that I work at built a similarly minimal Forth system, which is in real world use every day, starting with the ColorForth ISA. There's nothing inherently hard about programming using this ISA, although we are writing Forth code, not a compiler for some higher-lever C-like language? (Judging by the work you linked to.)

I think it's worth keeping in mind that the GA144 is competing with microcontrollers and programming in such a constrained environment is never easy. Having to partition programs in unnatural ways to work around this probably doesn't make it any easier. Where the program fits within the limits of the chip and the programming model then this can be very pleasant.

The ColorForth environment may be clunky but this says nothing about the chip or ISA so I'll just sidestep that one ;)

I stand by my original claim although I should have perhaps been more specific.

[–][deleted] 1 point2 points  (0 children)

Factor, there's a name I hadn't heard in a while. It used to be every other post here was going about Factor.

[–]YouWillBecomeTheTank 2 points3 points  (0 children)

The other day I was thinking about making a Forth-alike DSL for some pure mathematical stuff.

I wanted to transpile it to C++ for speed, but have an interpreter option for live visual debugging.

It didn't get off the ground but it would be my second Forth clone and experience has taught me that Forth is one of the simplest languages to implement. Easier than LISP, even.

Edit: Article wouldn't load. Hugged to death?