Re:How should I get started with programming? Which language...
by SoftwareMaven on Wednesday February 02, 2011 @12:23PM
(#2171060)
Learning some assembly should be required for anybody who wants to make a career writing software and is very valuable for hobbyists. I don't know that I would start there, but at some point along the way, understanding what that nice, high level language is really doing down at the metal makes for much better engineers.
First, you should learn one of the easy dynamic languages. This means Perl, PHP, Python, Ruby, Lua, Clojure. I think Ruby is a good choice because it has a lot of cool concepts built in to the core language that the others lack, and so it can be a foundation for learning many different styles of programming -- it does this, in my opinion, better than Python, and has a nicer syntax than Perl. _why's poignant guide to ruby is a bit outdated but still a pretty awesome and cool introduction.
http://mislav.uniqpath.com/poignant-guide/
Second, and this might come as a shock, some form of basic assembler. I recommend LC-3 assembler. And the main reason here is that a decent understanding of the memory model is going to help you a lot when it comes to dealing with pointers, complex data structures, or anything, really. You'll probably never write a program longer than 100 lines in LC-3, but the short things you do write will give you a deeper understanding of your code everywhere else.
http://en.wikipedia.org/wiki/LC-3
http://highered.mcgraw-hill.com/sites/0072467509/student_vie...
There may actually be a newer "learning assembler"-styled language out there, but I am not aware of it. LC-3 is showing its age, but it was great when I learned to program, and I learned as much programming for three months in LC-3 as two years prior in Java.
That said, you should definitely familiarize yourself with control structures prior to jumping into assembler or you could break your brain.