From: "Eric I." Date: 2008-05-29T05:20:09+09:00 Subject: Re: Should I Learn Ruby as a First Language? On May 28, 2:36 pm, Kyle Schmitt wrote: > Since nobody's posted it...http://xkcd.com/409/ > > Ruby is an awesome language, highly abstracted from the hardware, > incredibly flexible and fluid, and probably not a good first language > just for those reasons alone. > > Learn C first. > > To really get programming, to understand what's going on, you need to > go deep.  All the way down to C (though some say assembler). > > C is the lingua franca of computers.  It doesn't make things easy for > you, it doesn't make things pretty, or necessarily intuitive, but it > does bring you right down to the metal in the end. > > It isn't flexible, when you have to tell it to do something, you have > to tell it exactly what to do, And C will do it, even if it's not a > good idea, even if it crashes. > You grab your own memory, and are responsible for putting it back. > You make and move pointers to access the memory: if you point to the > wrong place, you'll get the wrong data, corrupt your own program, and > probably crash it. > You've got to link your own binaries, and link them to the right libraries. > > And doing all that makes you a better programmer, makes you understand > what really is going on behind the scenes.  Not to mention makes you > appreciate languages like ruby, perl, python and java so much more > when you get to them :) > > I don't think you necessarily should program your first projects in C, > but you should learn C as a first language, even if you don't use it > for your first projects.  Even if you never use it outside of studying > it. I *strongly* disagree with this opinion. If the goal is to start closer to the hardware, then why isn't assembly language even better? It's like saying to learn sociology you first need to learn psychology, but before that neurology, preceded by neurochemistry, but only after biochemistry, which of course follows chemistry, but which can only come after physics.... Just as there are useful concepts and abstractions within sociology, a high level programming language provides you with abstractions (loops, objects, exceptions, iterators, closures, etc.) that are useful in their own right. You do not have to learn what's happening behind the scenes first to understand or leverage these concepts. You can't learn everything at once. You have to learn things incrementally, and given human psychology, it tends to work best if along the way you are able to do useful and interesting things. Now does learning C or assembly language at some point make you a better programmer? Absolutely! But it doesn't have to be first, or even second or third. Why make learning unnecessarily painful when it can be coincidentally fun? Eric ==== LearnRuby.com offers Rails & Ruby HANDS-ON public & ON-SITE workshops. Ruby Fundamentals Wkshp June 16-18 Ann Arbor, Mich. Ready for Rails Ruby Wkshp June 23-24 Ann Arbor, Mich. Ruby on Rails Wkshp June 25-27 Ann Arbor, Mich. Ruby Plus Rails Combo Wkshp June 23-27 Ann Arbor, Mich Please visit http://LearnRuby.com for all the details.