Why Julia - A Manifesto

This is my “map” for Julia features:

1. Multiple dispatch

2. Dynamic dispatch

Multiple and dynamic dispatch complement each other, but they are quite different things. Dynamic dispatch leads to choosing the right method at runtime, so we can implement predicate dispatch or combine code with abstract (non-inferred) and concrete (inferred) types. It is based on type inference, method specialization, method call inlining:

3. Staged compiler

Combination of interpreter and static compiler that use type information to update compiled code.

4. Composability

I would mention a bunch of interesting solutions in platform and package manager like:

5. Rich and simple interfaces

Small amount of required methods and a plenty of optional with default behaviour for:

6. Code generation and DSL

But there are some difficulties for newcomers as well:

5 Likes