← Back to context

Comment by K0balt

10 hours ago

Assuming you’re teaching programming and not “coding”, forth is a fantastic language to teach.

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.

What is the difference between programming and coding? In my mind they're synonymous.

  • It’s not really a completely clear distinction, but if I was going to try to describe it:

    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.

  • In my mind, programming is the concepts, especially around problem solving with code as a tool, where coding is specific syntax/implementation, a means to an end. Related, you don't get paid to code, you get paid to program.

yeah kids hate syntax

  • Also pretty sure that kids won’t ever have to deal with syntax lol. For better or for worse, Human language is the new programming language, it’s just a specialised dialect and field. I do worry that by teaching coding and not programming we are shooting kids in the foot though. You need to ba able to leverage deep insight to lead coding agent swarms to create actually good codebases.

    • that's why most popular languages (python in particular) are the worst of all worlds - if english is the "programming language" why not use a good runtime?

      1 reply →

  • lol. Forth is pretty syntax sparse, depending on the implementation. Postfix operators solve a lot of that.