Quote (Shamx @ Apr 7 2012 08:14pm)
if you wanna learn in actual steps, start with Turing, it teaches you pretty much the basics of all computer languages that you can use elsewhere. After that you can go into som higher level languages like Java or C, and progress from there, most "main" languages uses same/similar structure just with different syntax. After you learn somewhat of a higher level language (like Java/C) I suggest trying out a lower level language like Assembler and then see which one you like, then go on and learn languages based on that.
for beginners who aren't sure if they wanna be in the CS field, i disagree. the focus should be on practical things that a typical app developer would do. the average developer will never write assembly outside of college. to really understand assembly, it's best to learn some CE first (datapath, registers, mux, etc). that's a huge time investment that shouldn't be pursued until AFTER you're sure you wanna study CS (either as a hobby or career)