3 ms·
It depends both on the models for compilation you're using and the resulting language model the programmer has to deal with. The "barrier between the mind and t
by chipsy 16y ago
It depends both on the models for compilation you're using and the resulting language model the programmer has to deal with. The "barrier between the mind and the computer" is only there if you have a mismatched conceptualization. A language using a graph isn't needed for hierarchical problems; a language using a tree isn't needed for linear problems.
If you want simple, you can't get much simpler than a Forth or assembly language. Lisp is slightly more difficult than those other two because it has explicit hierarchical structures - and thus it needs a parsing strategy more complex than "consume tokens." Lisp also needs more complex memory management strategies to be a useful production system.
If you want a safe/productive environment, the tendency is to add more syntax and a tighter runtime model than either Forth or Lisp. Adding syntax is a tradeoff between simplicity and ambiguity....while nobody likes syntactical monstrosities, nobody wants to program at the conceptual level of the lambda calculus or Turing machine, either. With low-syntax languages, programmers must concern themselves with ambiguous statements that would be caught at compile time elsewhere. As well, locking down the runtime model to bias only towards necessary tasks gives the language a focus that motivates the rest of its environment(optimizations, libraries, build systems, etc.). C, for example, was built for Unix, and that coexistence has led to its astounding long-term success.
Lisp is great for a lot of things, but that's also its downside. To rephrase Dijkstra: "Flexibility considered harmful."