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 want 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 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, the presentation of text on the screen should be minimal (note that I am aware that timing also depends on the hardware). However, I also use Python to collect data from the web, 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 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 asked the same question on Quora and got more suggestions. Knowing Python, 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. Furthermore, 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.