First it’s easy to understand. Second, it’s completely unopinionated, and you can take it anywhere you want to. To write a program in forth is to create a domain specific language for solving that problem.
Forth embodies functional as well as procedural programming, is a high level class language (not Assembler) yet also if you understand forth, you will pick up assembler very easily. (Unlike, say, JavaScript)
It sits precisely in the sweet spot of a central set off paradigms that, once understood, form a bridge to every kind of computer programming, as well as to a whole bunch of data abstractions at a low level.
It might even be the -only- language that people who will learn to program using AI would have to learn, as long as they went deep. At that point they could conceptually work with high level descriptions of what they intended for the coding agent to create, without having the underpinnings be completely opaque, regardless of the actual language used.
Coding is writing code to solve a problem. Someone can “know how to code” in one language, and have a very hard time moving away from that language because they understand the symbols more than the ideas.
Programming is approaching a problem space as a system specification problem and solving it with an algorithmic solution, and it doesn’t matter what language you use because you are approaching it from the symantic direction rather than the syntactic one.
You are a programmer when all languages are roughly similar to you, even though you may be much more familiar with the syntax of one than you are with others.
You are a coder when you can write programs, maybe even complicated ones, but you think of the solution in terms of a computer language rather than data structures, transformations, and state machines.
Most people start as coders, unless they come from a computer science background, or start out in assembly or with a little extra push, languages like forth. If you keep going and start to branch out a bit, most people will become programmers to one degree or another within a few years of working or playing in the field.
In short and to overgeneralise to the extreme, the focus is on the code vs the data.
You can also be so far in to the theoretical side that you are a data scientist or mathematician and a coder, but not really a programmer, even though you are solving complex data and algorithmic problems by programming a computer…. So it’s kinda nuanced? I think maybe it’s a matter of how you think about practical computation? But there’s definitely a difference in the depth of knowledge that crosses some kind of inflection point that is non-linear.
er ...
There is also Thinking Forth.
https://www.forth.com/wp-content/uploads/2018/11/thinking-fo...
If one understands adding and consuming values at the top of the stack, putting the stack in the state you want it is certainly a small logical step without new theoretical baggage.
Word definitions and the accompanying pointer tricks are more likely to be challenging.
Not sure they are that interested in programming, but FORTH is a little sweet language.
My first experience with it was Paul Lutus’ GraFORTH. On the Apple II it was ridiculously fast.
n coined the term careware. iirc.
first-hand info. i had downloaded n used arachnophilia.
he is on hn.
What seems to happen is it will get a lot of words like curriculum wrong that people rarely spell incorrectly because they're long enough that if your English isn't confident you would look it up or use a spell checker, or spell words incorrectly that people don't usually spell wrong like 'imediate' or 'puzzel'.
I think another area where Forth can help young people is in understanding some low level details like memory addresses and reading and writing memory. It seems simpler than abstracting it to "pointers", more like assembler but interactive.
However there is no safety net. ;-)
"Starting Forth" by Leo Brodie was the first programming book I ever read when I was about 6 or 7 years old, after my dad brought it home from work (where they used Forth). To me, the language felt very intuitive and easy to grasp. And Brodie's illustrations helped a lot with visualizing how it all worked.
This language is simple unintuitive and the Polish math notation will cause even more confusion.
>> Overall, I don't believe the programming language matters all too much.
Delusional. There is a reason why 99.99% of large projects are done in imperative languages.
I like programming a lot but if my programming journey were started by this teacher and might just became a chef instead.
This seems to be a "do novel things for novelty sake" thing.
Kids need to see the practical applications in the simples and most intuitive way of the things they are learning.
Forth or similar languages are not it.
Even in university level students these languages are both confusing and unintuitive and slow to develop in compared to imperative languages.
It's got some extremely simple rules. 1 data structure. And nothing is particularly hidden.
Python might be better for actually producing something, but from a 'teaching how computers work' pov, forth would seem to have it's merits. Python hides a lot of stuff, thus we have a situation where people think compilers and interpreters are magical things. If you don't care how the computer works, that's fine, but personally I'd like to teach my kid how a computer works, not how to use some programming language.
I wonder if assembly is a better choice... hmmm...
Sorry but this reads like a joke. If you find python incomprehensible, Forth and Haskell won't even register as languages.
Procedures are a lot harder to explain the first time to people who work with maths functions, especially if you call procedures functions.