Advertisement

How do you 'learn' a programming language?

Started by October 16, 2013 07:09 PM
21 comments, last by Tutorial Doctor 11 years, 3 months ago

I know many programming languages and it is really not the language that is difficult to learn this is often just various API, and Syntax. The best way others have mentioned is to learn by doing and researching as you get stuck.

And be sure to indeed do that research, because there's little that is more frustrating than trying to "learn by doing" when you don't actually know what you're supposed to be doing. wink.png

- Awl you're base are belong me! -

- I don't know, I'm just a noob -

I used to read the book cover to cover then go through the book again but this time actually write the code and also edit the code and make my own changes.

I think recently things have changed with proper online courses. I'm currently learning Scala and have found the easiest way is to do the free Moocs offered by coursera. Some of programming Moocs offered are really good. If I was a complete newb and I wanted to learn to code I'd probably try code academy, Udacity or Rails for Zombies.

If you want to do C++ there are several courses on Udemy, Coursera and iTunes U. The quality of these vary but they are all a lot better than any for Dummies, For Idiots or in 24 hours books.

Advertisement

The problem when you start out programming is that your brain is not really trained to think at the sort of logical level required to effectively deconstruct problems and create logical solutions. The only real way to train yourself to think this way is to force yourself into situations where you must think this way to solve the problem. In other words, however little you know, use it to write something.

First, why not try to write a simple guess-the-number game? Look back over your code and try to work out what you could have done better. Post your code in a Gist (over at Github) and ask people here to help code review it for you, but be sure to explain what you're happy with and what you think could be improved (i.e. what effort you've put in so far to that end). Code review with peers is very important to your growth as a developer, so don't try to do this in complete isolation or you'll slow your growth down severely. Last but not least, be extremely self-critical and always seek to do a better job with your coding than you have previously. After 15 years of coding myself, I still find things I can do better and I always assume that there are plenty of others out there who are much better than me, that I can learn from. With that attitude, you'll pay attention to programming articles, you'll investigate how others have solved problems similar to what you're working on and you'll stay on top of the curve in general, just because you're genuinely interested in being the best that you can be.

Finally, expect road blocks and frustrations every step of the way, but don't let them stop you. Be relentless in trying to understand the individual aspects of what you're doing and in figuring out the issues you're trying to solve. StackOverflow is an invaluable resource, use it! Khan Academy is fantastic for fundamentals such as math and physics, when you need them, and there are plenty of other online learning resources that cost you nothing as well. Remember, when your head feels like sand after feeling like you've been beating it against a problem for hours, know that your knowledge and skill is growing. When you relax and especially when you sleep, your brain is reprocessing what you've experienced during your coding and is optimizing its neural connections little by little so that, with persistence, you'll become more and more proficient in every aspect of what you're doing.

It will take time, but persist and you'll win!

i haven't actually coded a single game yet or a single applicatin yet...

i've been reading as many books as possible on c++ and watching a crap load of video, algorithms by robert sedgeiwck on coursea.org. Now I know how to implement merge and quick sort and binary tables. I'm working on red-black trees now.

I'm trying to get recursion 100% down. I understand tree traversal with recursion to a certain extent. IT's still a challenge though. Working through Stanford c++ YOUTUBE - cs106b. I'm stuck on recursive backtracking. Trying to figure out how that all works.

what else can i learn? i already read (skimmed) Head first design patterns.

so far i guess i have a rudimentary knowledge of c++, java, and javascript. Any suggestions on what I should do next? I think i need to start realy learning STL with Boost.

I'm trying to get recursion 100% down. I understand tree traversal with recursion to a certain extent. IT's still a challenge though. Working through Stanford c++ YOUTUBE - cs106b. I'm stuck on recursive backtracking. Trying to figure out how that all works.

I thought it was just a matter of memory allocation and that, the longer the recursion travels, the more memory it requires because the computer needs to store all that information simultaneously and then calculate it all once the recursion has reached the end. But I get the feeling that this isn't what you're wondering about.

Suddenly you made me curious about recursion again smile.png

- Awl you're base are belong me! -

- I don't know, I'm just a noob -

I typed in Game dev in google and got this site. I was looking through the forums and saw this post. I just had to join to let you know that I have made several tutorial on programming (I am new myself), and I have produced quite a bit. I am using the Maratis3D game engine myself. Anyhow, here are a few links to some tutorial I have written

Introduction to Computer Programming

http://snapguide.com/guides/understand-computer-programming/

http://forum.maratis3d.com/viewtopic.php?id=793

http://forum.maratis3d.com/viewtopic.php?id=830

Object Oriented Programming

http://forum.maratis3d.com/viewtopic.php?id=839

Boolean

http://forum.maratis3d.com/viewtopic.php?id=840

I will be looking through these forums to learn more about game development. If you need any other tutorials (I know of many) let me know.

They call me the Tutorial Doctor.

Advertisement

Learning a language is quite a mammoth task, especially if its your first, but I find that continuallly making progress daily is a good thing, even if it is just a small amount of time you dedicate to studying.

Here is a great tip I have learned over the years for any kind of studying or task: get to bed earlier than usual - even if its just 30 minutes sooner - and do about 30 minutes the following morning. That way, you can relax safe in the knowledge that you have made an effort. You don't want to drag the day out constantly thinking "sigh, I still haven't done anything...maybe I'll find time tomorrow....". 30 minutes each morning and you'll clock up three and a half hours a week of programming experience.

At the moment I am currently working with a friend on a 3D modelling project, and where they(being a professional) will update once every few days, I will update a little on a daily basis. Although I'm not on the same skill level as my friend I am at least keeping up with them, and the project is moving forward on a daily basis.

Right, I must get my beauty sleep now or I'll not be thinking straight in the morning! blink.png

Languages; C, Java. Platforms: Android, Oculus Go, ZX Spectrum, Megadrive.

Website: Mega-Gen Garage

Learning a language is quite a mammoth task, especially if its your first, but I find that continuallly making progress daily is a good thing, even if it is just a small amount of time you dedicate to studying.

Here is a great tip I have learned over the years for any kind of studying or task: get to bed earlier than usual - even if its just 30 minutes sooner - and do about 30 minutes the following morning. That way, you can relax safe in the knowledge that you have made an effort. You don't want to drag the day out constantly thinking "sigh, I still haven't done anything...maybe I'll find time tomorrow....". 30 minutes each morning and you'll clock up three and a half hours a week of programming experience.

At the moment I am currently working with a friend on a 3D modelling project, and where they(being a professional) will update once every few days, I will update a little on a daily basis. Although I'm not on the same skill level as my friend I am at least keeping up with them, and the project is moving forward on a daily basis.

Right, I must get my beauty sleep now or I'll not be thinking straight in the morning! blink.png

That response is rather profound! I took a screenshot of it. There is a life lesson to be learned in that. I actually did this once, to try to become focused on something. I made it the FIRST priority. At first I only made excuses. But when I started doing it as a FIRST priority then I was able to make progress. And it came to the point where that priority didn't only get 30 minutes, but sometimes whole days. I need to refocus my priorities again this way.

I like how you say you are not on their level, but you make steady progress. Seems to me you are more dedicated.

They call me the Tutorial Doctor.

Thank you, Tutorial Doctor.

Yes, I understand how you feel about losing your way. This usually happens when you take on more than 30 minutes a day due to greater expectations of yourself which can lead to giving up or burning yourself out.

On the subject of skill level and dedication: Well, I keep in mind that as good as my friend may be, nothing will change the fact that many hands can make light work! biggrin.png So long as I have a useful skill - in this case low-polygon modelling - I can at least make their work lighter...

Languages; C, Java. Platforms: Android, Oculus Go, ZX Spectrum, Megadrive.

Website: Mega-Gen Garage

I personally learn by osmosis. Buy a couple programming books, pick one each night and use it as a pillow. The knowledge is sure to seep in eventually.

In all honesty, its like any other skill, try fail, iterate, succeed, repeat.

I started learning to program before the Internet and to be honest, I think that was probably a good thing. There were less resources, true, but also less options, less distractions and less porn. As a result, I spent a lot more time doing instead of thinking about doing. I think starting out today, you are spoiled for choices... in a bad way. Just way to easy to get distracted... or spoonfed.

This topic is closed to new replies.

Advertisement