3 ms·
For serious work, starting with something like Python is probably a good idea (as many people have suggested), but if your goal is to learn about programming, I
by orclev 12y ago
For serious work, starting with something like Python is probably a good idea (as many people have suggested), but if your goal is to learn about programming, I'd actually suggest you start with assembly. Assembly is really tedious to do anything practical with, but as a way to understand some of the most fundamental concepts in programming it really can't be beat. Doing the equivalent of hello world, in assembly and really understanding exactly what each line of the program is doing will pretty much make you better than most newbie programmers right from the start. If you jump to C next, do a little bit more there, and then finally jump to something like Python (bonus credit for calling C code from Python and vice versa) you'll be well on your way to being a fairly well rounded programmer.
- PeterisP 12y agoDefinitely NO. Assembly is okay as a second or third language, but not as the first one. Python->C->ASM will have a much larger chance of success than ASM->C->Python; there's a good reason why college programs don't start with assembly first.
- orclev 12y agoSpeaking from personal experience, I tried to learn C first and could never understand pointers, then I studied assembly and that was a huge eye opener. I've had very good success teaching people programming starting with Assembly (well, starting with "This is a turing machine", but moving to assembly next), and it makes understanding something like C a lot simpler. The problem with C as a first language is that it's too low level to ignore details like memory management, but it's too high level to really understand how it all functions. You could maybe do Python -> ASM -> C, but Python -> C -> ASM will probably be a waste of time because you won't actually get anything out of C until you've done ASM (and certainly not anything more than you'd have already gotten out of Python). I'm also not suggesting that he (or she) should spend months working in Assembly, but rather start with something simpler, play around with it a bit till you can do basic things like add a couple numbers and display them (things that in anything but assembly would take about 2 seconds), and get a feel for how at the most fundamental level a computer actually works. Once you understand the basics of what a computer really is, then when you move to C or Python you can actually understand what all those abstractions are doing for you. The law of leaky abstractions means sooner or later you're going to need to understand all of that anyway, and the sooner you do, the less time you waste and the firmer your understanding will be.
- logicalmind 12y agoIn my experience, there are two kinds of programmers. Top down and bottom up. Top down programmers have good success going from high-level languages to low-level. Though, learning a low-level language for them is not really necessary. Bottom up programmers don't grasp many of the fundamentals of programming until they can build them from basic underlying concepts. Some bottom up programmers may never get to a higher level language and end up as systems programmers or embedded programmers, maxing out with C as a high level language. Personally, I am a bottom up programmer. I started with C and I found it confusing and ended up really disliking programming (I was in an EE program). Then in a later term we used assembly and once I got that foundation, everything clicked. I suddenly realized why C was necessary and what it provided. High level languages were then built up from there. Everyone is different. There won't be one path.