On Sep 7, 2009, at 3:05 AM, Greg Comeau wrote:

Some keep saying that we should use more complex languages in
the introductory course because they're in some way easier.
But I've yet to understand their definition of easier.

I've seen this before.  It's usually a combo of people
not knowing what they're talking about, making stuff up
as they go along, generalizing their personal programming
universe, being elite, and, miscommunication their point.


I have a friend who insists that every other language has been harder on him than macro assembler. And I think that's true, if you cannot understand how to program a machine other than by thinking about what's happening at the instruction level of the processor.

Each language provides its own view of the land. If you have a strong understanding of the hardware and wish to think in those terms you will probably find assembler or C to be your best friend. If you have a strong mathematical inclination Haskell will probably suit you better. I find Scheme introduces a model of computation which is a compromise between the two; close to the machine in memory, simple in syntax, and rather far from the machine in terms of continuations, but most of the code being in the middle anyway.

Part of what makes computing so interesting to me is that we can remodel it to suit different needs, tastes or problems. If we had to write our schedulers in rc, we'd probably find it obnoxious; similarly if we had to write trivial pipelines in C. The nice thing about Lisp, Haskell and Java is that when you're in their little world everything works the way you'd expect it to in their little world; the nice thing about Plan 9 and Unix is that most everything is designed to interact sanely and simply with the rest of the world. I find writing puzzle solvers simpler in Prolog than in Haskell despite Haskell's list comprehensions being essentially the same in power and somewhat more straightforward to reason about.

For some reason, the fact that we program rational machines in logic- based languages deludes us into thinking our experience is the same as everyone else's or our situation must be the same as everyone else's. I don't know anyone who likes to debate a programmer and isn't also a programmer; we are undoubtedly the most self-assured and non- empathetic group of people on the planet. We have every opportunity to be free of dogma, but our reason and our aesthetic reactions seem somehow to be soldered directly onto our emotions.

A problem is that the world isn't as rational as we are. It often chooses based on expedience, popularity, rumor, or emotion. Often the good is devoured by good marketing. I never would have expected to find defenders of Lisp or Haskell here in the Plan 9 mailing list. I am happy about that. But the hindsight has not been 20/20. Lisp and Plan 9 are in the same situation for exactly the same reason: they're both conceptually rigorous and short on eye candy, and the market chose other alternatives long ago, and now those alternatives define the question in a way that precludes these answers.

—
Daniel Lyons

Reply via email to