Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Learning New Programming Languages
13 points by squiguy7 on Aug 29, 2014 | hide | past | favorite | 12 comments
I know I am not the only one interested in learning new languages and I find myself dabbling in a few at the moment. However I struggle to get the feeling that I make any progress. I scroll through tutorials where they describe what variables are or how to create a list already knowing these basic concepts.

I can breeze past the simple things but when it comes to advanced concepts in a language, I sometimes get the idea that I glossed over something I should not have. In the end I want to start writing a project right away and skip over your "Hello, World" material.

How do you all handle learning a new language and becoming comfortable with it?

I tend to solve a problem that I fully understand in order to get a feeling for the language and what it can do. For example try programming a version of tetris or blockout. You know what the result should look like and will be able to evaluate how the language behaves, what apis there are and how well it is documented.

You might want to experiment with different types of projects, for example a little webserver, webscraper, games or general tooling for whatever problems you encountered before (I tend to write desktop cleaning programs a lot).

Maybe you can find inspiration in this book:


I agree with you. I wrote a very simple HTTP server in C once to learn more about threading. The thing is, I want to become better with Go and it has a lot of stuff baked into the language. There is a seemingly infinite amount of other things I could write though.

Try implementing something that has a real world use case. It may not matter that your use case doesn't have much of an audience. My first Python web app was a syslog search/filter app that I only used on my home network machines.

After a couple of tutorials you really need to break out and try something on your own. I got quite proficient in C++ by specifically using it in programming competitions such as those hosted by TopCoder or CodinGame. I wasn't in the competition for the top score I was there to learn. I knew about core C/C++ syntax but not much about the standard library. Now I do, as I needed to quickly use the stdlib to get the data structures I needed to solve the problem.

I suppose most of my ideas for projects seem silly and I never follow through. Maybe I need more discipline :).

Martin Ordersky hisself is teaching Functional Programming in Scala starting September 15th:


If you don't know C, or Python or Ruby, there's always "The hard way" with Zed Shaw:


October 2, Coursera is abain offering Dan Grossman's Programming Languages, it covers general concepts in programming language design using SML, Racket, and Ruby.


Thanks for the links. I am really interested in functional programming in Rust and Scala as well as some systems level stuff with Go and Rust again. I will check these out.

Just like you said! Start a project with it, and learn what you need along the way. Obviously your code will not be all idiomatic on the first try, but that's OK. Along the way you will run into situations where you'll think, "There's got to be a better way," or "If only I could use X feature from Y language." Or maybe you need to debug something with a library you're using but you don't understand how it works. Those are perfect opportunities to learn more advanced concepts.

This is true. There will always be room for improvement on anything, especially this.

I'll go against the grain and suggest you start at the beginning focusing on the simple things.

If you cannot write a simple application in the language without resorting to documentation/google you are not at the level where you can easily learn and apply the more advanced concepts.

Get a good beginners book that contains plenty of exercises to work through. If the language contains mainly familiar concepts then you should be able to complete the book and its exercises within a day or two and feel comfortable using the language.

This can sometimes be true. I mostly feel like I get hung up on syntactical differences in a new language and have to double check myself.

You need to pick a project you feel passionate about, find a small piece of paid work, or find a friend in need of getting a project done to push yourself through. I also found looking at other people's DEV work being helpful, too, granted that the developer is willing to share and explain.

I do try and scan through Github every now and then but even then don't feel comfortable if I am still new to the language. But giving back to open source is always a good thing to try out.

Applications are open for YC Winter 2022

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact