Programming languages are possibly one of the simplest parts of software engineering. You can know your language from the inside-out and still have problems in a project — knowing the tool doesn’t imply knowing the craft. But learning a new language is really a lot of fun.
Inspired by Avdi Grimm’s roadmap for learning new languages, I decided to give it a try and put my current interests in writing.
- Julia – http://julialang.org/
I have experience writing code in MATLAB, Octave, Python (with Numpy, Scipy and Pandas) and a bit of R, and still I’m excited with Julia.There are at least 3 features of Julia that are powerful and make me wish to work with it: its Just-In-Time compiler, parallel for and the awesome metaprogramming inherited from LISP.
The drawback is… is… well, I didn’t have time to really use it and get comfortable writing Julia programs. Yet.
- Haskell – https://www.haskell.org/
I already tried learning Haskell a couple of times. Maybe 3 or 4 or 5 times. I wrote programs based on mathematics and some simple scripts, most of the syntax isn’t strange anymore, even monads make sense now; however, I still feel a bit stiff when writing Haskell. I don’t know.
- Rust – http://www.rust-lang.org/
There is a quote in Rust’s website that sums my expectations of it:
Rust is a systems programming language that runs blazingly fast, prevents nearly all segfaults, and guarantees thread safety.
I know how to read C/C++ and even write a bit of it, but it’s messy and takes more time than I usually have for side projects. Writing code that is safe & fast shouldn’t be so hard. ;)
All-in-all, this is a very brief list. However, I don’t think I should focus on more languages right now. To be honest, I think that my next learning targets are in applied mathematics. I need a stronger foundation in Partial Differential Equations and Probability Theory. There are several topics in optimization that I should take the time to study. Calculus of variations also seems quite cool.
(good thing that I have friends in pure math to help me find references!)