R
Rick DeNatale
As someone who learned UCSD Pascal first, and then went on to assembler,
then C, I disagree.
You don't have to be able to overhaul an engine to ride on a train. You
should always take the easiest way that fulfills your goals.
I was a Classical Studies major at university. People would always say, "Oh,
I wish I'd learned Latin!" Idiots. Yeah, learning Latin will help you
learn French, etc. But if you want to learn French, you should just learn
French.
And while learning Latin, might help some learn French up to a point,
I'd argue that knowledge of one language can also interfere REALLY
learning another, related or not, if one can't accept that the second
language really doesn't operate exactly like the other.
While Latin had a large influence on the evolution of French, it's
only one influence. This is true, I suspect to an even larger degree
to English, which was influenced by a long succession of native
tongues and the tongues of various conquerors and invaders.
There's a long history of English grammarians clinging to the myth
that English grammar must follow Latin grammar, leading to bogus rules
like the injunction against splitting an infinitive, which is common
in English usage, but impossible in Latin since the infinitive is a
single word. Yes, if Star Trek were translated to latin, something
would have to be done with "To boldly go,..." but in English it's
perfectly good and understandable usage IMHO.
The concerns when programming in a low-level language like C are quite
different than those when programming in a higher-level language like
Ruby. In C one must worry about issues like storage management,
ensuring that one doesn't copy the wrong kind of data from one
variable to another, possibly causing buffer overflow or underflow,
confusing a pointer with data, etc. All on top of (or perhaps
beneath) application level concerns.
It seems to me that people who start with a language like C are much
more likely to be overly concerned about the problems they've
encountered coming out of these low-level technical concerns, which
for the most part are handled by the language and its runtime rather
than the programmer in a language like Ruby leading to stilted,
chicken-typed code.
This is not to say that it's a bad think to learn C, or Latin. But I
firmly believe that for most people this should come later as a way to
expand understanding of how higher-level languages are implemented and
extended, not as a first step to inform how one should think about
higher-level languages.