
Julia: A Fast Language for Numerical Computing - boromi
https://sinews.siam.org/DetailsPage/tabid/607/ArticleID/744/Julia-A-Fast-Language-for-Numerical-Computing.aspx
======
samuell
If Julia had Go-style concurrency primitives (channels and lightweight
threads), and M:N thread multiplexing, it would be the perfect language to
implement my upcoming data flow based scientific workflow language
([http://github.com/samuell/scipipe](http://github.com/samuell/scipipe)).

Now I'm instead trapped with Go, which lacks a REPL, and leaves a lot to wish
in terms of metaprogramming capabilities needed to create a nice programmatic
API.

The lack of the mentioned features is my biggest concern with Julia.

~~~
StefanKarpinski
Threading is already an experimental feature and Go-style concurrency will be
a standard feature in the future. Well, technically it may be more like Cilk
or TBB but it will be very similar to Go.

~~~
kkylin
Cilk-style concurrency would be a really nice addition to Julia.

------
sdegutis
See also, Julia's home page: [https://julialang.org/](https://julialang.org/)

I toyed around with it for a while, and really liked it. I wondered to myself
"what makes this language specific to numerical computing? it seems generic
enough to be used wherever I'd want to use Ruby or Haskell..."

But then I tried using it. And even though the language is generic enough, the
standard library just plain assumes you're only doing numerical computing, and
makes everything else needlessly hard by trivial omissions.

That was like 2013 though, so maybe things are different now?

~~~
gravypod
I was really REALLY interested in the language due to the clustering ability
and their JIT they build into it. But it does seem like the language was build
without any systems-usage in mind. How sad. Nothing will ever quench my thirst
for clustering.

~~~
vegabook
so... it was built for clustering but it doesn't quench your thirst for
clustering? Please could you clarify.

~~~
rspeer
The meaning was clear to me. It doesn't quench his thirst because he has
chosen not to use it.

~~~
gravypod
Yes. It is that I cannot use it for things that I'd like.

------
kafkaesq
BTW is it just me, or do other people find that the interpreter is very slow
to start under older versions of OS X?

That's one of my current obstacles to diving further into Julia.

~~~
KenoFischer
It used to be a big problem. It's still not super fast (~1s or so), but we've
been doing quite a bit of working at making it faster. If it's significantly
slower than that, something else must be going on.

~~~
kafkaesq
Thanks -- I'll definitely be giving it another shot, at some point.

------
SixSigma
I recently started using Julia as my main platform as a replacement for Octave
in my engineering classes.

I have found it an excellent language, as easy as Python to pick up and some
great numerical primitives.

Using Juliabox in class means no installation woes and means whatever I do
during lessons is available wherever I can get online. The ability to mix in
markdown and code on the same page is brilliant for keeping notes. I realise
that is not a feature of Julia but still, it is a benefit.

I've not done any heavy work in it but I'm really looking forward to doing so.
I can dump Python, Octave and Limbo all at the same time.

------
irremediable
What's the best way to run a debugger through Julia code? I value an
interactive debugger much more for this kind of nitty gritty numerical
programming than I do for lots of other tasks.

~~~
ced
Work on the debugger is underway, it should be in the 0.5 release in a few
months.

------
bitL
Just a question - I completely lost interest in Julia when I read it adopts
many of the ugly language hacks of Matlab - why should I care about Julia when
I can feel frustrated with Matlab already?

~~~
kafkaesq
Such as? I'd be curious.

~~~
rspeer
The literal syntax that you'd think would make an array of arrays concatenates
the arrays instead. Sometimes. It depends on types. (Or have they fixed that
now?)

Also, although this is of course a preference, 1-based indexing. I would
rather have compatibility with C and Python and I don't care one bit about
compatibility with Matlab.

These decisions make it seem that Julia just aspires to be "open source
Matlab" when that already exists. It could instead aspire to be the good
programming language that Matlab isn't.

~~~
KenoFischer
> The literal syntax that you'd think would make an array of arrays
> concatenates the arrays instead. Sometimes. It depends on types. (Or have
> they fixed that now?)

Yup, we fixed that (deprecated in the latest release, will be switched over).
It was super annoying.

There's been lots said on the 1-based indexing discussion, so I won't get into
it here, but I can guarantee you that "open source Matlab" is not the
ambition. Our ambition is to be the best possible programming language for
technical computing and a great language for programming overall.

~~~
kafkaesq
_There 's been lots said on the 1-based indexing discussion, so I won't get
into it here._

It's not a deal-breaker, I suppose. Still, the rationale I've heard -- "We
have chosen 1 to be more similar to existing math software"[1] (as opposed to
basically every modern _programming language_ out there) just seems... weird.
Perhaps "compatibility with traditional sequence notation in math and physics"
(upon which presumably most software packages are based) would be a better
statement of the case for 1-based indexing.

[1]
[https://github.com/JuliaLang/julia/issues/558](https://github.com/JuliaLang/julia/issues/558)

------
knlje
Have they already fixed the need to "devectorize" the code to make it fast?
This was the major drawback for me since I wish the code to be concise AND
fast.

~~~
chrispeel
I agree, this would be good. Intel's ParallelAccelerator.jl [1] is making some
progress in this area.

[1]
[http://julialang.org/blog/2016/03/parallelaccelerator](http://julialang.org/blog/2016/03/parallelaccelerator)

------
KKKKkkkk1
Does Prof. Edelman have a financial stake in Julia? He is such an enthusiastic
booster of the language, that either it must be truly amazing, or there is an
undisclosed motive.

~~~
KenoFischer
Alan is one of the people who started the language (which is mentioned in the
article). He is also one of the cofounders of Julia Computing (the company we
formed to provide support and other services for the company). So from my
biased viewpoint, the language is both truly amazing and Alan has a motive to
promote the language, if only since he has a significant chunk of time and
effort into making it a reality. I don't think it's fair to call it
undisclosed however.

~~~
KKKKkkkk1
I think it's great that Prof. Edelman is dedicating his time to Julia and I
hope he will be rewarded for it. However, I think that a statement of the sort
you provided above should have appeared below the SIAM News article. This is
something that would have been done in any major newspaper or scientific
journal.

~~~
KenoFischer
Yes, I don't disagree. I don't know why the SIAM news editors didn't. I do
hope my statement here makes clarifies the facts at least for people coming
from here.

------
vonnik
This is super. Fwiw, Java and Scala aren't bad for numerical computing either:
[http://nd4j.org/](http://nd4j.org/)
[https://github.com/deeplearning4j/nd4j/](https://github.com/deeplearning4j/nd4j/)

~~~
namelezz
How is nd4j compared to Breeze and jblas, which are used in Spark MLlib[1]?

[1] - [http://spark.apache.org/docs/latest/mllib-data-
types.html](http://spark.apache.org/docs/latest/mllib-data-types.html)

~~~
agibsonccc
See my post here:
[https://news.ycombinator.com/edit?id=11275071](https://news.ycombinator.com/edit?id=11275071)

We have this concept of a backend where we had net lib java and jblas, but
both are horribly slow/limited and need some updating which is why we added
our approach to this.

If a new matrix framework comes out, I will just write a backend for it and
allow people to keep the same dsl.

Breeze also isn't usable from java:
[http://stackoverflow.com/questions/27246348/using-breeze-
fro...](http://stackoverflow.com/questions/27246348/using-breeze-from-java-on-
spark-mllib)

FWIW, we also support both row and column major (you can specify the data as
well as ordering) very similar to numpy.

If you come use nd4j, it will mainly be for a dsl that encourages
vectorization just like any other numerical language.

