Julia is a high-level, general-purpose programming language that is well suited for numerics, computational science, and scientific computing.
The scientific, artificial intelligence, and research computing world has a two language problem
The end result?
"To which degree can your application be structured in such a way that both:
(1) the data model
(2) and the set of virtual operations over it
can be extended without the need to modify existing code, without the need for code repetition and without runtime type errors."
-- Mads Torgersen, "The Expression Problem Revisited"
The expression effectively states the difficulty of allowing:
without changing code.
Functional Languages (Ocaml, Haskell, F#) | Class-based Object Oriented Languages (C++, Java) | |
---|---|---|
New types and existing operations | HARD | EASY |
New operations to existing types | EASY | HARD |
More on this later, but multiple dispatch allows anyone to add new functions to existing types and new types to existing functions with no interaction!
Package management in many languages like Python or even worse C / C++ hampers collaboration, productivity, and itself contributes to the expression problem!
Modern package managers like those in Julia (Pkg.jl) and Rust (Cargo) give:
Other than plain ol' C I don't know too much about other languages