Live data from Hacker News

Julia: A fresh approach to numerical computing

arxiv.org

61–70 of 146 posts

Re: Julia: A fresh approach to numerical computing

#61
post #47

Earlier quoted context omitted.

This very much depends on what you want to do with it and what your background is. Here are some things that might bother you. * Julia's approach to OOP is via multimethods, not the usual class/inheritance model. This might be annoying for people who don't want to learn how to be an effective programmer in the other paradigm. * Julia's garbage collector is not generational/incremental and in some corner cases, GC can…

* lack of threads: they do support multiple processes which can be useful for splitting up work for large computation, but not a substitute for threads * module compilation is not cached, so if you use very many modules your start-up times can be slow * error messages sometimes require some head scratching. For example, it's not uncommon to get an error that there's no available function convert(::SomeType, (Some, Ar…

The first two are both WIP. Threading is https://github.com/JuliaLang/julia/tree/threads (although it hasn't been updated in a little while) and static compilation of modules is https://github.com/JuliaLang/julia/pull/8745

Re: Julia: A fresh approach to numerical computing

#62
post #47
post #4

What I would like to know before jumping in a new programming language is what it sucks at and how badly it sucks there. Never in my life have I ever heard anyone say anything good about how wonderful it is language X is good at y which is what it was designed for. I have however heard plenty of people cursing languages for not doing something which they thought was an "obvious" thing for a language to do and X didn'…

This very much depends on what you want to do with it and what your background is. Here are some things that might bother you. * Julia's approach to OOP is via multimethods, not the usual class/inheritance model. This might be annoying for people who don't want to learn how to be an effective programmer in the other paradigm. * Julia's garbage collector is not generational/incremental and in some corner cases, GC can…

Static compilation is not too far away:

https://github.com/JuliaLang/julia/pull/8656 https://github.com/JuliaLang/julia/pull/8745

Being tied to LLVM is real, but we do have JavaCall.jl to call Java code.

https://github.com/aviks/JavaCall.jl

Re: Julia: A fresh approach to numerical computing

#63
post #58
post #47

Earlier quoted context omitted.

This very much depends on what you want to do with it and what your background is. Here are some things that might bother you. * Julia's approach to OOP is via multimethods, not the usual class/inheritance model. This might be annoying for people who don't want to learn how to be an effective programmer in the other paradigm. * Julia's garbage collector is not generational/incremental and in some corner cases, GC can…

What a fantastic list. And just to echo what the parent said, I find this so much more interesting than a list of 'good parts', which are generally easy to glean from the official docs. Back to Julia: lack of CUDA support was a limiting factor for me when I tried it a year ago.

The JuliaGPU organization pulls together projects that address this:

https://github.com/JuliaGPU

However, we personally feel that the path Intel is taking with Knight's Landing, is likely to be the best of both worlds - GPU and general purpose - assuming it materializes for real in 2015.

Re: Julia: A fresh approach to numerical computing

#64
post #20

I've been playing around with the Cxx library (currently only works with a source build of bleeding edge Julia) https://github.com/Keno/Cxx.jl It allows you to basically embed ordinary C++ code in Julia code, to interface with C++ libraries at runtime, and to slurp in entire .h files unmodified. (It also in theory allows a C++ REPL mode to be written, though such a thing does not exist for Julia yet.) It makes very c…

wbhart This sounds like a really interesting project! Is it already on Gitub? I suspect there are others in the Julia community who would love to join the effort too when you have something ready.

Re: Julia: A fresh approach to numerical computing

#65

Earlier quoted context omitted.

* lack of threads: they do support multiple processes which can be useful for splitting up work for large computation, but not a substitute for threads * module compilation is not cached, so if you use very many modules your start-up times can be slow * error messages sometimes require some head scratching. For example, it's not uncommon to get an error that there's no available function convert(::SomeType, (Some, Ar…

The first two are both WIP. Threading is https://github.com/JuliaLang/julia/tree/threads (although it hasn't been updated in a little while) and static compilation of modules is https://github.com/JuliaLang/julia/pull/8745

That's great to see. It's sometimes hard to keep up with everything that's going on. Incidentally I really got a kick out of the recent s/Uint/UInt/ rename (https://github.com/JuliaLang/julia/issues/8905). It took a day or so to propose and do it. To compare, java will probably never fix it's spelling oddities (for example int and Integer). Very refreshing to see fundamental things like that be fixed and so quickly!

Re: Julia: A fresh approach to numerical computing

#67
post #20

I've been playing around with the Cxx library (currently only works with a source build of bleeding edge Julia) https://github.com/Keno/Cxx.jl It allows you to basically embed ordinary C++ code in Julia code, to interface with C++ libraries at runtime, and to slurp in entire .h files unmodified. (It also in theory allows a C++ REPL mode to be written, though such a thing does not exist for Julia yet.) It makes very c…

wbhart This sounds like a really interesting project! Is it already on Gitub? I suspect there are others in the Julia community who would love to join the effort too when you have something ready.

It is, essentially. https://github.com/wbhart/Nemo.jl

See the wiki for a few bits of our planning that have actually made it online. Our current focus is twofold: 1) interface to Singular (http://www.singular.uni-kl.de/) from Julia 2) write a Singular interpreter in Julia (as an independent implementation of the Singular language). (Of course Julia will always be the main language of Nemo. The Singular interpreter will simply be a way for current users of Singular to benefit from Julia/Nemo and for users of Nemo to leverage the vast quantity of Singular library code out there written in the Singular language. And to have that code run faster of course.)

Yesterday we called the Singular C++ library, initialised it and created a Singular ring from within Julia for the first time. So very early days in that direction.

What is already committed on GitHub is a Julia interface to the flint library (which is pure C). Nemo is still a prototype, but you can Pkg.clone/Pkg.build it (Windows 32/64 support is there but clunky).

I will be visiting the Pari/GP people in January and working on a Nemo interface to Pari then.

Re: Julia: A fresh approach to numerical computing

#68
post #47

Earlier quoted context omitted.

This very much depends on what you want to do with it and what your background is. Here are some things that might bother you. * Julia's approach to OOP is via multimethods, not the usual class/inheritance model. This might be annoying for people who don't want to learn how to be an effective programmer in the other paradigm. * Julia's garbage collector is not generational/incremental and in some corner cases, GC can…

* lack of threads: they do support multiple processes which can be useful for splitting up work for large computation, but not a substitute for threads * module compilation is not cached, so if you use very many modules your start-up times can be slow * error messages sometimes require some head scratching. For example, it's not uncommon to get an error that there's no available function convert(::SomeType, (Some, Ar…

Our error messages do require a fair amount of work and so do line numbers in stack traces. Keno's debugger is almost ready though, and will greatly help.

Re: Julia: A fresh approach to numerical computing

#69
post #33

Earlier quoted context omitted.

> Or at least I think `+(u, v)` or `u + v`, is more natural then `u.plus(v)` or `u.+(v)` I definitely agree with that, I said that object.method() style is often more natural. Typically when you have an object with some internal state and you want to send a message to it that will change its state. For example: threadPool.run(command) feels more natural than run(thread_pool, command).

It's more natural to you (and to be fair, most programmers who have used OOP languages) purely because you're used to languages which work that way.

No, it is not some arbitrary choice, it confirms to the [second] most dominant word order in natural languages: subject-verb-object.

Re: Julia: A fresh approach to numerical computing

#70

For anyone in the Chicago area, Leah Hanson is giving a free Julia workshop next weekend (11/15): http://www.meetup.com/JuliaChicago/events/216950712/ Should be a great way to get introduced to the language and pose your nagging questions to a community expert.

Her blog is also a great resource to pick up some of the more useful parts of the language.
Post reply on HN