Ada as a first language - Hasn't got it yet
Quote:
>Craig M. Pitches writes:
>> Then when you finally start getting the idea, it turns out that everying
>> is REALLY HARD TO DO!
>---
>It seems to me that he hasn't gotten the idea yet. What is the
>idea? In brief the idea is to solve real-world problems. This
>idea leads to the necessity of Software Engineering. I just
>can't bring myself to retype all those reasons for Ada. In
>summary, Ada supports the "idea" that one wants to build real-world
>systems that solve problems. When you practice software
>engineering you will be surprised how easy Ada is to use.
I don't think that anyone is disagreeing about the need for
_engineering_. Consider an automotive metaphor. It would be nice if
the metric sockets in my tool kit would fit the English bolts on the
engine in the car I'm trying to fix. It would be nice if I didn't
have to take the engine out in order to replace spark plug #8. It
would be nice if every time I tried to replace the air filter I didn't
cut my hand on a sharp piece of metal that seems to be sticking out
for no reason at all. Yet these are my impressions from using Ada.
This is why everything is REALLY HARD TO DO.
I've worked on many kinds of cars and many kinds of computer languages.
Some are well engineered and well laid out, and others have a constant
litany of quirky features that make any job take 2X to 10X longer.
Most American cars prior to heavy emissions controls were amazingly
straightforward to work on. This came about not through any great
foresight, but as a result of constant small improvements from year to
year. Things may not have been _designed_ that well to begin with,
but they _evolved_ into a reasonable configuration.
Programming languages that have not been allowed to evolve are like first
year designs. Good ideas, perhaps, but no refinement. Lots of quirks
and problems.
If you're going to teach _engineering_, it might be best to show some of
the best engineering around to the first year students, so that they can
have something to aspire to. Alternatively, one should be ready to use
any existing problems with a language as object lessons about what _not_
to do. (Like that famous film about the bridge that fell down due to
the wind exciting its resonant frequency.)
The problem with teaching Ada is that one must spend such a large % of
the time warning about this sharp edge and how to work around that problem,
that little time is left to learn about the actual issues of programming
and software engineering.
As another mechanical analogy, Ada is like the metal part that just
came out of the cast. The basic shape is good, but there's lots of
rough edges. Unfortunately, Ada was frozen before those rough edges
could be ground smooth.