Want to learn programming

If you want to get stuck right in with OO, go for Smalltalk. It is a language that was designed for students, it is 100% object oriented, and very logical. It's good fun, too.

I recommend the Squeak Smalltalk dialect: http://www.squeak.org.
 
I started on PHP, did a shedload of it, then javascript (technically doesn't count, IMO), did a bit of java but severely disliked it (was such a pain to get working in OSX), now I'm cracking open Python and I really love it. Wouldn't recommend it to a beginner as it's not as candy-coated as PHP but it's good fun.

Keep meaning to look at Smalltalk, too.
 
I disagree, I think learning C to start with shows if your cut out for software development or not as it is a big challenge to learn but ultimately very rewarding and an incredibly powerful language.

Knowing the workings of a CPU and memory architecture is no-longer a requirement to be a good coder; the emphasis has shifted away from squeezing out every last drop of performance to creating well structured, maintainable code.

I don't think it's important at all for a developer to understand what's going on under the hood - there's no harm in knowing but the further you can get away from worrying about what the computer is doing, the more you can concentrate on how to solve the problem at hand.

There will always be a place for uber-coders who can write assembler blindfolded and dream in binary, but for the vast majority of developer roles these days, it's overkill.
 
Knowing the workings of a CPU and memory architecture is no-longer a requirement to be a good coder; the emphasis has shifted away from squeezing out every last drop of performance to creating well structured, maintainable code.

I don't think it's important at all for a developer to understand what's going on under the hood - there's no harm in knowing but the further you can get away from worrying about what the computer is doing, the more you can concentrate on how to solve the problem at hand.

There will always be a place for uber-coders who can write assembler blindfolded and dream in binary, but for the vast majority of developer roles these days, it's overkill.

Well, thats entirely dependent on the system your designing for. Unfortunately, many systems still do not have the luxury of many gigs of ram and cpu speed so efficient and fast code is vital. The move you describe away from efficient code is what has caused programs to become more and more resource intensive as the code gets sloppier and sloppier. I think a proper understanding of the architecture software is being written for should be mandatory as well as making conscious efforts to improve code performance.
 
There is definitely a market for developers who are good developers, but crap geeks - as LazyManc says, most development platforms allow you to keep away from memory pointers etc. Occasionally you'll get caught out, such as directly accessing I/O ports and so forth, but even then it's not exactly difficult to catch on, just grab the spec and treat it a bit like an API or protocol and you're laughing.
 
Well, thats entirely dependent on the system your designing for. Unfortunately, many systems still do not have the luxury of many gigs of ram and cpu speed so efficient and fast code is vital. The move you describe away from efficient code is what has caused programs to become more and more resource intensive as the code gets sloppier and sloppier. I think a proper understanding of the architecture software is being written for should be mandatory as well as making conscious efforts to improve code performance.

You're right, but systems which need extremely efficient code aren't too common in general purpose programming, especially for the kind of thing that the OP is likely to code in the future.

If, at some point down the road, he finds himself needing to code efficiently in this way, he probably will have picked up enough knowledge along the way to be able to do it anyway, or at least learn it very easily.
 
Well, thats entirely dependent on the system your designing for. Unfortunately, many systems still do not have the luxury of many gigs of ram and cpu speed so efficient and fast code is vital. The move you describe away from efficient code is what has caused programs to become more and more resource intensive as the code gets sloppier and sloppier. I think a proper understanding of the architecture software is being written for should be mandatory as well as making conscious efforts to improve code performance.

I know there are exceptions (embedded systems, games, communications processing, etc) but for general applications / web programming, I believe writing modular, easily understood, easily maintainable code is more valuable than writing super-efficient code just to save CPU cycles or a few mb of memory.

I agree that this can lead to bloat - application footprints are increasing all the time - but if it leads to more stable software because of the reduced complexity then that's a fair trade off in my opinion. I'm not saying don't optimize, but you shouldn't need to delve into memory management in most cases.
 
Back
Top Bottom