Lesson 1: Introduction
Julia is a high level, high performance, dynamic programming language, designed with the aim of scientific computing in mind.It was initially released in Feburary, 2012, after a couple of years of development at the Massachusetts Institute of Technology (MIT).
As stated by development team:
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. (Did we mention it should be as fast as C?)
Julia is a general-purpose programming language while also originally designed for numerical/technical computing. It is also useful for low-level systems programming, as a specification language, and for web programming at both server and client side. According to the official website, the main features of the language are:
- Multiple dispatch: providing ability to define function behavior across many combinations of argument types
- Dynamic type system: types for documentation, optimization, and dispatch
- Performance approaching that of statically-typed languages like C
- A built-in package manager
- Lisp-like macros and other metaprogramming facilities
- Call C functions directly: no wrappers or special APIs
- Ability to interface with other languages, e.g. Python with PyCall, R with RCall, and Java/Scala with JavaCall
- Powerful shell-like abilities to manage other processes
- Designed for parallel and distributed computing
- Coroutines: lightweight green threading
- User-defined types are as fast and compact as built-ins
- Automatic generation of efficient, specialized code for different argument types
- Elegant and extensible conversions and promotions for numeric and other types
- Efficient support for Unicode, including but not limited to UTF-8
Julia was designed as a language similar to other scripting languages and so should be easy to learn for anyone familiar to Python, R, and MATLAB. It is syntactically closest to MATLAB, but it is important to note that it is not a drop-in clone.
Julia 101 is a series of medium’s articles, I’ll be writing to help newcomers with Julia language. As for any 101 course, there are zero prerequisites. For more details regarding Julia language, you can visit its official webpage.