Some people are quick to jump on the bandwagon. I’m notoriously slow. I didn’t want a smart phone for a long time, but caved a few years ago when I was 21, for the navigational convenience.
One resource I really like about my school is a strong data science initiative, part of which involves workshops open to researchers (in any field) across campus. That’s how I recently learned about the Julia programming language.
Wikipedia describes it as,
…a high-level dynamic programming language designed to address the needs of high-performance numerical analysis and computational science while also being effective for general-purpose programming, web use or as a specification language.
UCI Data Science speaks of Julia’s hybrid nature and what Julia users seek,
We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.
Julia’s been around for five years (2012); compare that to another highly used programming/scripting language Python, which made its appearance 26 years ago in 1991. That’s before I was born! Julia’s super young that they’re still on the 0.*
releases, with version 1.0
expected to be released this year. It seems to have a lot of potential, based on its speed, readability, and compatibility with other languages. It seems to have a ton of potential, and with more time, I fully expect Julia to be more stable (less in development phase), be more widely used (cough, StackExchange Q&As), and have a ton more libraries. For now, I’ll stick to Python and wait to join the Julia bandwagon.
Resources
- Mental model for Julia
- A Mental Model for Python/R/MATLAB: Talking to a Politician
- A Mental Model for C/Fortran: Talking to a Philosopher
- A Mental Model for Julia: Talking to a Scientist
- How/where Julia may fit in the current programming sphere
Normally I use one language to make something work, and a second language to make it fast, and a third language to make it scream. This pattern is fairly common. For many programmers, the prototyping language is often Python, Ruby, or R. Once the code works, you rewrite the slow parts in C or C++. If you are truly insane, you then rewrite the inner C loops using assembler, CUDA, or OpenCL.
Unfortunately, there’s a big wall in between the prototyping language and C, and another big wall between C and assembler. Besides having to learn three different languages to get the job done, you have to mentally switch between the layers of abstraction…