I think Julia is advancing very great, not too slow and not too fast. I imagine that people can wait for some more time for the language to stabilize. Julia is a genuine scientific computing language, not just an extension for doing scientific programming on top of a general-purpose language. As such, the core developers and the community are now doing extensive revisions and testing before version 1.0 is out. I used Julia since version 0.2 and will never quit.
I’ve been promoting the use of the language at my institution for more than a year now and have delivered a number of presentations to professors and engineers. That said, I’m not in a place to judge a great language like Julia, I’m not a computer scientist, but the following are some issues that should be taken as constructive criticism. I may be wrong in many of it, or most of it will go away in a near 1.x version, but these are my own observations and feedback from colleagues. Most of the people at my institution are long-term MATLAB/Fortran users.
-
using PackageX; using PackageY; using …
, there are 1734 registered Julia packages at the time, MATLAB covers all science with 86 toolboxes without importing a single toolbox. How can one tell which package to use for which task and if a better alternative package exists for the same task without extensive search in the documentation of each package. Of course, I know the difference between open source projects built by many volunteers and highly paid proprietary software products. Tools that are easy to use, fully functional, and helping the user get the job done with minimal programming knowledge, will win at the end. -
if a scientific computing language requires the user to write
using LinearAlgebra
,using Random
,using FFTW
,using SpecialFunctions
, etc., what kind of scientific work can the language do by default? -
Many small plotting packages with different back-ends none of which is stable enough to work with without problems. Better to focus on one package and write detailed documentation and examples for it.
-
A = Array{Float64}(uninitialized, m, n)
, what does that “ugly” uninitialized do? Compare plain Cdouble A[m][n];
old Fortranreal(8) A(m,n)
, MATLABA = zeros(m,n)
, …, I’m aware of the discussions about this on github, but I feel that Julia is taking care of the developer more than the user in this case. -
a::AbstractArray + b::Number is deprecated, use broadcast(+, a, b) instead.
, if one saysB = A + 1
. I don’t think any user will be happy writingB = broadcast(+, A, 1)
-
@inbounds, @simd, @views, @fastmath, @parallel, …
these kinds of syntactic “sugar” add more noise to the code, a release mode vs. a debug mode can be used to enable optimizations like in compiled languages. I know-O3 --check-bounds=no ..
, but it will be great if the IDE can allow these modes. -
Some flawed benchmark results published on the Julia website. For example,
matrix_statistics
, the first test to look at when choosing a scientific language, is essentially testing looping. The test is especially unfair to MATLAB and Fortran, if one chooses a matrix size of 256x256 instead of that illogical 5x5 and looping for 100 times, they will see that MATLAB is actually faster than Julia, and Fortran using the same libraries as Julia forrandn
anddgemm
is way faster (more than 3X, I measured it).recursion_quicksort
is never used in MATLAB, MATLAB is bad at recursion. Also, MATLAB’ssort
is faster than Julia’ssort!
. I’m aware of the philosophy of the benchmarks, which is comparing languages at doing specific code patterns. Still, this is only important from a theoretic point of view, no MATLAB user will ever write such a code.
I love Julia as is, though, and appreciate all the effort that has been done. At least, no other language has been brave enough to face the problem of scientific computing, an area where computations are never fast enough, but if some of these issues and what others have mentioned in this post are solved, it will be a huge boost to the adoption of Julia.