I am getting better at writing Python code and I am starting to feel an itch to extend my toolbox and learn more about programming. Therefore, one step in that direction is to learn a new programming language next year (i.e., 2016). I would like to learn a relatively new language and it should not be limited to web applications.
My main use when it comes to programming is, now, creating psychological experiments. I need an efficient and good language. It should be able to present text and images on the screen, play sounds, and collect responses from the keyboard, mouse, and other equipment (i.e., Arduino, custom-made response handles, etc). The timing of all above mentioned might be critical. That is the lag between the signal sent and, for instance, presentation of text on the screen should be minimal (note that I am aware that timing is also dependent on the hardware). However, I also use Python collect data from the web, and visualize data, and do other trivial things. Another language that I am learning, and using for statistical analysis, is R.
I have some more requirements. It should be:
- open source,
It would be preferable if the language is up and coming. That is, might be the next big language. It would of course also be good if there is a growing online community dealing with questions and issues on the language (i.e., blogs, tags on StackOverflow, etc).
In your suggestions, I would like, at least, one link, and a good introducing book to read. Links to guides, tutorials, online courses, forums, and other types of resources to learn from are welcome.
To summarize, I am looking for a versatile programming language. It must be pretty new and efficient. If you need to know more to be able to give me the best answer as possible; please ask me!
I will update this post during my journey to learning a new programming language. That is, the post will also list the best suggestions I get. According to my criteria.
Update: I went on to ask the same question at Quora and got some more suggestions. Knowing Python, which is an Object-oriented language (OO), one guy told me to learn a functional language. The first two he suggested are Java Virtual Machine (JVM) languages; Scala and Clojure. These two languages are fast. Scala offers both OO and functional programming whereas Clojure is more purely functional. Furthemore, the same guy suggested Erlang, Elixir, and Haskell. Erlang and Elixir are not as fast as Scala and Clojure. Haskell is the most pure functional language.
The four earlier suggestions:
What programming language should I learn? Right now I am leaning on towards one of the JVM languages (i.e., Scala or Clojure). Please leave a comment with what language you think I should learn. And why!
Last Update: I created a new post in which I answer my question: what language I should learn next year.