Which programming language should I try first?no_redirect=1

With the target of “learn programming language concepts”, if you follow these steps, you will learn efficiently:

#1 Understand this language’s design philosophy and general language features

For example, if you begin to learn Ruby, let’s find what’s special for Ruby firstly.

Figure 8: source: www.ruby-lang.org

Hmm, let’s dig deeper: http://www.ruby-lang.org/en/about/

Try to summarize the main features you need to understand before you start to learn it:

  • Focus on simplicity and productivity, code is easy to read
  • With an interpreter. So you have GC, which means performance may be a problem for some tasks.
  • Everything is an Object, it’s a language with OOP, and even “pure OOP”.
  • Flexibility. We even can redefine many parts of the language.

Knowing the most important features of the language, including its benefits and drawbacks. This will help you much when you start coding in this new language, it serves as a road-map for you.

#2 Learn syntax and practices with tutorials or books

You need to master the fundamental parts of a language, including the syntax, basic IO, the debugging tools, the unit test tools, etc.

If you are a newbie, try to find authoritative books about it. Like the books written by the language creators, or search on Amazon with language names to find the books with great review ratings.

Remember you’d better write code by yourself when you are not a guru, don’t just copy code. Practice the new language with exercism.io, there are mentors to review your code and give you suggestions for free, it’s wonderful.

If you are a language guru, just find some simple guides for this language or even some sample code in this language. Take a look at learnxinyminutes.com.

#3 Read and write more code with the new language

It’s time to start a project with the new language, with the knowledge of related ecosystems, tools or libraries. You could start with a simple one, like a game of guessing the number or a simple book store or to-do apps. There will be many similar projects for starters on Github.

#4 Understand more details of language implementation

This is not necessary for every language. As I said in To Be a Programmer, an aspiring programmer will be interested in the details and implementation of their languages. And sometimes, bug even comes out because we don’t have good knowledge of language implementation.