I spent most of today reading Julia documentation. It looks pretty slick, but I guess I’ll have to try it out on something new to really kick the tires. It does strike me as more of a hyped up Matlab instead of a JIT’ed Python. For a new ecosystem I’m a little concerned that it might be too much too soon. It has all the shiny things about being a new language, like consistency and lots of involvement, but I don’t know what will keep fueling the momentum. I wasn’t impressed by its tools for parallelism. Explicit message passing and having to verify that the program is the same in each process doesn’t sound like easy. I understand that for extreme off-box parallelism there aren’t other low level options, but I’m still enamored by Go’s simple approach to hitting a sweet spot between parallel for loops and cluster computing.
The novelty of Julia’s multiple dispatch also didn’t impress me. After doing an introductory MOOC on Haskell and continuing to read more about F#, I’m getting quite comfortable with functional concepts. I’m even doing more C++ templates and C++11 lambdas day to day! Other core parts of Julia still seem very under construction, but it all looks very promising. It might be something I look into contributing to depending on my situation and their stability needs.
Going forward I’m going to try to integrate more languages into what I do. It’s been far too long since I’ve done something other than average C++ development. Learning new libraries and frameworks just doesn’t seem to be the way to test new concepts and push learning boundaries. Even getting familiar with big frameworks like Qt didn’t bring much other than learning conventions and performance characteristics. Having more focused languages should help me concentrate and notice the things I don’t easily have in C++. I’ve done enough in C++ that I can see it can get close to many constructs in other languages, but it continues to be too easy to just get things done the easiest way I know how without branching out to things I haven’t learned yet. The hardest part of this transition will be putting stable C interfaces where I want to hook up other languages!