From: Rick DeNatale Date: 2008-05-29T20:53:14+09:00 Subject: Re: Should I Learn Ruby as a First Language? On Wed, May 28, 2008 at 3:54 PM, Mark Wilden wrote: > On May 28, 2008, at 11:36 AM, Kyle Schmitt wrote: > >> Learn C first. > > 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. -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/