From: Francis Cianfrocca Date: 2007-04-25T02:12:47+09:00 Subject: Re: ruby and C ------=_Part_193803_23293093.1177434765160 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 4/23/07, smc smc wrote: > > Would it be easier to learn ruby if i knew C/C+/C++ or the other way > around? Are you looking to have fun, or to acquire marketable skills? If you're tempted to say "both," you should probably think a little harder because the answer differs. If you want to have fun, learn C, then C++, then Ruby. Nothing is more fun than understanding what you're doing at a deep level, and building on that foundation to learn higher-level things. I learned assembler before I learned C before I learned C++ (and have been a professional at all of them, where "professional" is defined as "getting paid consistently for doing it"). But before I ever approached computers, I learned how to design digital logic at the hardware level (gates, circuits, voltage regulators, all of it). Then when I first looked at assembly languages, they made complete and intuitive sense from the first minute. Needless to say, my reaction to C was "Wow, what a high-level language this is!" I never had conceptual trouble with pointers because I know exactly what they mean at the electronic level. It's a different question if you're looking for marketable skills (although taste plays a big role because you need to ask yourself what you will actually enjoy working with every day). It's been long predicted, but we may finally be starting to see a split between hard-core systems programmers (for which the demand is really rather low), script-level coders, and "business" analysts who probably won't ever write a line of code at all. As the economics of software development change, these layers may become more clearly delineated and less permeable in the marketplace. I think Ruby has helped drive this change because it really is becoming more possible to cut together significant and valuable applications from system-level pieces using scripting. (Java tries to do this at the library level, less successfully, although the terrific amount of effort that goes into the attempt shows you that the principle at work is a compelling one.) So if you want to be in the middle layer (probably the mainstream going forward), there's nothing wrong with learning Ruby first. You would do well to learn Java too (though I'm hesitant to recommend that, not because of inherent problems with Java but rather because most Java pedagogy is of the mindless, cookbook variety.) Flame away. I can anticipate objections to this argument in two basic forms: 1) "What you're talking about hasn't happened yet, therefore it won't happen in the future," and 2) "Language XYZ is the best language in the world [for some local definition of "best"] and therefore everyone should learn it first!" I'll be very interested in hearing any counterarguments that are not isomorphic to one of these. ------=_Part_193803_23293093.1177434765160--