Hacker News new | ask | show | jobs
by argd678 2518 days ago
Does anyone have any recommendations for using Julia on real world projects at this point? Is it mature enough to use and debug on a day to day basis for example? Mainly I’ve been using R for context.
3 comments

In terms of "canonical ways" and "community approved libraries" here is what the current state looks like to me:

- as a substitute to something as low-level as numpy it is superb

- for anything dealing with differential equations, the ecosystem is unsurpassed

- plotting is a bit chaotic (and the community has not settled on a "one true way to plot")

- a good dataframe implementation already exists

- serialization is a bit chaotic (plenty of ways to do it but no "one true way" yet)

- automatic differentiation is on the cusp of being unsurpassed, but a lot of the tools are still experimental (and the community still has not settled on the best way forward)

- the Juno IDE looks amazing

- the profiling toolkit is amazing

- it is ridiculously easy to use other languages from within Julia

Agreed on all points, but you will pay for all this with usability issues and early adopter bugs. The error messages are horrendous, documentation is lacking, and if you run code on hpc, saving the data is probably going to cause you dataloss at least a few times until you find the right obscure GitHub issues.
This is my experience, hopefully now that 1.x is home and dry we will gradually see the pain of old libraries suddenly failing ebb away, and documentation becoming more co-herant and accurate. Also thanks for calling out the error messages - this has been something I've struggled with and needs some careful attention from the Julia community.

On the otherhand our expectations are huge - I remember early Java and the level of support that you get with Julia now really took a very long time to appear for Java, and that was backed by SUN.

If I were an Intel exec I'd be putting money into this though; I can see it gradually crushing the life out of nVidia and AMD, although I think that there will be a few smiles at ARM towers when they look at this too! I wonder what people could do with 2000 ARM cores in a rack?

I would add:

- Good integrated test system (and test culture in the community)

- Super good package/environment manager

- Great integrated documentation system

- Good version control practices in the community

- Awesome community

I started using in it earnest after 1.0 and can honestly say that it's super stable and easy to write and debug errors. The only "bugs" I've had with it have stemmed from abuse/misunderstanding of the dispatch system, and you can write a lot of Julia without running into those kind of user mistakes.
I work at company using Julia in production. What sort of recommendations are you looking for? :)
Mainly, am I going to spend hours fussing with the basics of the language. For example in R, it’s too slow, so I had to write Rcpp, only to discover there’s no real way to debug it from RStudio, down into the rabbit hole, lldb, Rinside, everything that can crash does, terse errors messages with out line numbers, opaque SEXP types XCode can’t decode etc. So basically are the normal everyday use cases fraught with quirks you need to know more about the internals of Julia or can you just be a user? If that makes sense.
“Writes like Python runs like C” is one tagline I’ve seen them use. Julia gives you a lot of control over how fast you want your code to be. You can write some code without really thinking too much and it’ll be fast and work just fine. If you get to a point where it’s not fast enough then there’s a whole host of tools to help you speed it up.

At any stage you can call @code_{warntype, lowered,...} and inspect exactly what code has been produced by the compiler to find bottlenecks.

I’ve not written much R before but in my experience I’ve never had to go to those lengths to debug Julia code! (Although the error messages can sometimes be a bit of a mouthful, I think because it uses LLVM)

Not the parent, but I am interested in a good list of libraries that might be non obvious to find.
You can use the search tools to find libraries for the categories you're interested at:

https://juliaobserver.com/packages

https://pkg.julialang.org/docs/

As a personal answer, I really like unitful for keeping track of physical units and libraries like MLStyle.jl or Match.jl which add stuff like pattern matching to the language (though they are more general helper libraries compared to stuff like Turing.jl and DifferentialEquations.jl):

https://painterqubits.github.io/Unitful.jl/stable/highlights...

https://github.com/thautwarm/MLStyle.jl