It’s crazy to think of how small/minimal Chuck Moore makes his computers, almost too minimal, IMO. Like, for instance, not adding in a subtraction instruction? Being able to solve most problems in less than a Kiloword? It seems rather surreal.
How do you get there? What is the magic? How can you make applications small? Well you can do several things that are prudent to do in any case and in any language.
No Hooks
One is No Hooks. Don’t leave openings in which you are going to insert code at some future date when the problem changes because inevitably the problem will change in a way that you didn’t anticipate. Whatever the cost it’s wasted. Don’t anticipate, solve the problem you’ve got.
Don’t Complexify
Simplify the problem you’ve got or rather don’t complexify it. I’ve done it myself, it’s fun to do. You have a boring problem and hiding behind it is a much more interesting problem. So you code the more interesting problem and the one you’ve got is a subset of it and it falls out trivial. But of course you wrote ten times as much code as you needed to solve the problem that you actually had.
Ten times code means ten times cost; the cost of writing it, the cost of documenting it, it the cost of storing it in memory, the cost of storing it on disk, the cost of compiling it, the cost of loading it, everything you do will be ten times as expensive as it needed to be. Actually worse than that because complexity increases exponentially.
[…]
Now that’s the general solution to a problem that all the programmers in the world are out there inventing for you, the general solution, and nobody has the general problem.
This a thousand times. Truly general tools are incredibly rare. It’s one thing to pursue them as an Academic, or as a side project, but when being paid to develop an application to solve a specific problem it is a waste of time to generalize anything.
Forth is one of those languages I keep coming back to, not because I deeply grok it, but the opposite: I just don’t understand how to effectively use it to solve problems, and I find that irritating.
It’s crazy to think of how small/minimal Chuck Moore makes his computers, almost too minimal, IMO. Like, for instance, not adding in a subtraction instruction? Being able to solve most problems in less than a Kiloword? It seems rather surreal.
Great read.
This a thousand times. Truly general tools are incredibly rare. It’s one thing to pursue them as an Academic, or as a side project, but when being paid to develop an application to solve a specific problem it is a waste of time to generalize anything.
Pretty amazing stuff; filled with challenging ideas.
Indeed.
Forth is one of those languages I keep coming back to, not because I deeply grok it, but the opposite: I just don’t understand how to effectively use it to solve problems, and I find that irritating.