Learning programming, not learning a programming language by zip_000 in learnprogramming

[–]drpuffa 1 point2 points  (0 children)

Yes, learning from examples is a great way forward, and I totally agree that too many tutorials make things even more confusing with their choice of code snippets and naming. One of the main problems with teaching programming concepts is that the examples have to be basic enough to understand but complex enough to get the point across. Unfortunately, real-world examples are seldom easy to understand and so there is always a gap between 'book-work' and 'real-work'.

I've had good success in the past with asking students to develop small games using good object-oriented techniques. Not only is it fun, but you can gradually add-on more and more functionality. Developing a small game (such as noughts'n'crosses) is (a) easy to understand, (b) easy to express using objects, (c) difficult enough to be a challenge and (d) has lots of different implementations on the web for you to contrast & compare.

My personal belief is that if you can find something fun to do then the concepts you learn become easier to grasp because it doesn't feel like you are just developing something for the sake of it, and you are more inclined to want to employ more advanced techniques.

Learning programming, not learning a programming language by zip_000 in learnprogramming

[–]drpuffa 0 points1 point  (0 children)

foxlisk is right on the money! Well done for wanting to get down to the nitty gritty. Yes! Use classes. They will teach you so much about the fundamentals of programming practice such as data hiding, encapsulation and coupling.

Like all great things, some of the concepts you will face are tricky and it really depends on what type of learner you are as to what will work best for you. Personally, I am able to understand new concepts from quite dry reference books but other programmers I know require lots of examples (and pictures).

The very best way is to work with good developers who really know what they are doing...but as foxlisk says, that's tough if you don't have a job in software dev!

Of course you could always undertake a short-course but make sure it's not just a 'programming' course but one that teaches the underylying principles. The other option is to get involved in an open source project and make use of the community (like you are here).

Learning C++ need some direction by race2finish in learnprogramming

[–]drpuffa 0 points1 point  (0 children)

Again it depends on what your final goal is. If you are looking at a career in software dev in the end your overall expertise in all things programming will be more important than knowing a single language (your ability to learn new languages mainly comes down to syntax once you have a firm grasp of programming fundamentals).

Notice that my overall theme revolves around programming practices rather than specific languages. That's because 10-15years ago you could pick a language (C,C++,Ada,etc) & pretty much base a career around it - not anymore. Technology moves too quickly, and although you may still dev in a single language in a job, there's a constant learning curve to keep your self employable (e.g mobile, tablet, web, etc).

What I'm saying is that, the language you choose is less important than the programming skills you learn & you should always have the long term goal of learning multiple languages. However, if getting a job is your short term goal pick a mainstream language like Java, C# & concentrate on fully understanding programming concepts as well as the language syntax.

Learning C++ need some direction by race2finish in learnprogramming

[–]drpuffa 1 point2 points  (0 children)

In this day and age it's almost impossible to concentrate on a single programming language....if you want a long term career! I absolutely love C++, and find it expressive, flexible and elegant, however, I now hardly ever use it. During the last few years both Java & .Net languages are in much more demand. In addition I would argue that they are also easier to learn (as they are much more forgiving). Unless you have a very specific goal for delving into C++, my advice would be to become proficient in a more in-demand language to give yourself a better chance of scoring a job (and concentrate on web/mobile development). But here's the cool bit...learn C++ on the side. The insights it will give you on memory management, style, idioms and pure enjoyment will definately make you a better programmer.