Slashdot Mirror


Julia 1.0 Released After a Six-Year Wait (insidehpc.com)

An anonymous reader quotes InsideHPC: Today Julia Computing announced the Julia 1.0 programming language release, "the most important Julia milestone since Julia was introduced in February 2012." As the first complete, reliable, stable and forward-compatible Julia release, version 1.0 is the fastest, simplest and most productive open-source programming language for scientific, numeric and mathematical computing. "With today's Julia 1.0 release, Julia now provides the language stability that commercial customers require together with the unique combination of lightning speed and high productivity that gives Julia its competitive advantage compared with Python, R, C++ and Java."
The Register reports: Created by Jeff Bezanson, Stefan Karpinski, Viral Shah, and Alan Edelman, the language was designed to excel at data science, machine learning, and scientific computing.... Six years ago, Julia's creators framed their goals thus:

"We want a language that's open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that's homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled...."

In a julialang.org post announcing the milestone, the minders of the language claim to have achieved some of their goals.

5 of 131 comments (clear)

  1. Re:No native compiler by Tough+Love · · Score: 4, Informative

    Didn't RTFM? Julia has several backends including LLVM. Performance is more than respectable. In particular, puts Python to shame and close to Java + JIT but without the JIT lag, load time and memory footprint annoyance.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
  2. Re:No native compiler by SQL+Error · · Score: 5, Informative

    It's natively compiled, just not statically compiled.

    If compiles optimised versions of your functions as needed. So you can define a function that works on any supported numeric type, and when you call it with doubles, it will compile and cache a version of the code optimised specifically for doubles.

    As a result, it is very fast for numeric code, without having to create separate function definitions for each supported type.

  3. Cheat sheet by Tough+Love · · Score: 5, Informative
    --
    When all you have is a hammer, every problem starts to look like a thumb.
  4. Re:No classes, No goto by dlakelan · · Score: 4, Informative

    Classes are definitely included in the language. Specifically they're included by strong typing and type-specialized functions. A type specialized function is a "class method" that dispatches on more than just the first (usually implicit) argument.

    Goto is implemented via the @goto macro.

    --
    ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
  5. Re:No classes, No goto by Tough+Love · · Score: 4, Informative

    Classes are definitely included in the language.

    Julia has no classes

    It does have compound types and extensible types (subtypes). Instead of class methods it has parametric polymorphism, a flavor of generics somewhat resembling interfaces. While this seems nice and natural as far as it goes, I am not sure how far it goes. Jury is out.

    I absolutely hate the case conventions for identifiers. Why does every language of the month need to come with at least one blatantly stupid, avoidable idiocy guaranteed to trigger a large proportion of its intended audience? This is a minor thing but not something I could ever used to. A prime candidate for "sorry that was dumb, let's just fix it now before it festers".

    At least, no significant indents, thanks for that.

    --
    When all you have is a hammer, every problem starts to look like a thumb.