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.

27 of 131 comments (clear)

  1. Really impressive by 110010001000 · · Score: 4, Funny

    This is really impressive from the technical standpoint, but I am wondering if they have a Code of Conduct for the language?

    1. Re:Really impressive by Tough+Love · · Score: 4, Funny

      I am wondering if they have a Code of Conduct for the language?

      This language is polite and respectful.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  2. 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.
  3. 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.

  4. Are petascale computers programmed in assembly? by Megol · · Score: 2

    Otherwise claiming "Julia is the only high-level language that has run at petascale" is a bit of an exaggeration.

    1. Re:Are petascale computers programmed in assembly? by iggymanz · · Score: 3, Insightful

      it's just a lie, C++ and Fortran are also used. We can argue if C is "high level" or "medium" level...

  5. First impression by Tough+Love · · Score: 4, Interesting

    My first impression of Julia was favorable. I fired up the command line interpreter and typed in 2 + 2. Prints out 4, just like Python. Then typed in 2**4:

    julia> 2**4
    ERROR: syntax: use "^" instead of "**"

    Wow, I like that. I managed to define a function, f(n) = n * n, without reading the manual but didn't get much further without reading the docs docs. But great start, I already see this as a reasonable alternative to what I usually use Python for: a desktop calculator.

    Initial impression matters. Now, with a postive one, I will go deeper and see if Julia is really what I should be coding one-offs in, instead of Python or Go.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
  6. Woot! by Anonymous Coward · · Score: 2, Insightful

    I want a tool that puts nails in like a hammer, screws screws like a screwdriver, lifts steel like a crane, cuts wood like a saw, digs dirt like a backhoe, shoots animals like a gun, stabs children like a knife...

  7. Re:I think xkcd already has this covered by nadass · · Score: 2

    https://xkcd.com/927/

    Except this is a HPC programming language, not a one-size-fits-all HTML5-style standard.

  8. Cheat sheet by Tough+Love · · Score: 5, Informative
    --
    When all you have is a hammer, every problem starts to look like a thumb.
  9. Re:I think xkcd already has this covered by Junta · · Score: 5, Insightful

    Roughly, one should think of this more as a 'next gen fortran' than 'oh this will replace all your programming'.

    Python with numpy has been respectable, but there's room for a language built from the ground up around technical computing.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  10. No classes, No goto by Tough+Love · · Score: 2

    Good or bad? Hard to say, but I would rather have these things than not. It is currently the fashion to leave out classes and provide similar functionality with interfaces or equivalent, but I find that a sticking point. Let's see how it goes.

    There are situations where goto is far preferable to fiddling with local logic variables and such. Sure, goto can be tricky to implement with respect to local scope and such, but leaving it out to avoid work... doubtful. Leaving out goto for purity reasons... beyond doubtful.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
    1. 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.
    2. 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.
    3. Re:No classes, No goto by Misagon · · Score: 3, Interesting

      The instances where goto is useful can often be boiled down to a few different cases.
      IMHO it would be better to have specific language support for those cases than a generic statement. Having a generic goto (or even only a break label-statement) would encourage it to be used for things that it wasn't intended for, and such code would not be as readable.

      * Breaking out of nested loops. Something like break label or multibreak number.
      * Clause after a loop has reached its end and not broken. Python reuses else for this.
      * Error handling: A type of exception handling. It could be simplified by using labels instead of throwing and catching objects of specific types.

      --
      "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
    4. Re:No classes, No goto by Aighearach · · Score: 2, Interesting

      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?

      Because having neckbearded snowflakes whining about their tender technical opinions doesn't actually help the language designers with any part of what they're doing. It doesn't solve technical problems, it doesn't encourage adoption, it doesn't even produce useful criticisms. If you make sure to include some aesthetics from different camps and mix them together in an innocuous way, you can make nearly everybody go "ewwww" a little bit, and then the ones who freak out will escort themselves out the door. It is the only known way of even getting rid of them.

    5. Re:No classes, No goto by The+Evil+Atheist · · Score: 2

      As other people have pointed out, Julia already has things specific to it that fit the role of classes, that have mathematical analogues, without being like classes. And given that you have all those other features, like coroutines which are a better form of goto, why are you whining?

      --
      Those who do not learn from commit history are doomed to regress it.
  11. Plotting is Broken by Anonymous Coward · · Score: 2, Interesting

    For a technical computing language, One of the major overnights was plotting. It is a mess. There were about 6 different plotting libraries, each with different interface. The most popular was to install python and use Matplotlib.

    There has been an attempt to wrap all of them up into plots.jl but you end up with something that never quite covers what you need.

    It also uses array indexa starting from 1......

  12. Re:Licenses by Crispy+Critters · · Score: 2

    The "language" consists of the compiler (the contents of src/), most of the standard library (base/), and some utilities (most of the rest of the files in this repository).

    https://github.com/JuliaLang/j...

    Probably someone watching Oracle asserting ownership of the Java base classes. Use was allowed, but not alterations or compatible implementations.

  13. Their want list sounds like by ezakimak · · Score: 3, Insightful

    A leprechaun riding atop a unicorn handing out buckets of gold.

    If they pull it all off in a single language, more power to them.

    1. Re:Their want list sounds like by Aighearach · · Score: 3, Funny

      I'm sure they can handle the unicorn and the buckets of gold, but if you want leprechaun support you're going to need a Haskell interface.

  14. Re:No native compiler by SQL+Error · · Score: 2

    No, it doesn't use a template library. Or in a sense, all your code is templates.

  15. Re:No native compiler by Aighearach · · Score: 2

    It is a lot more like Perl; it runs fast, and you can write it fast too. But reading it is going to take time.

    That tradeoff isn't going to go away, it is baked into the range of problems we want to solve with the same tool. The less verbose the language is, the more of the complexity is hidden. That makes it expert-friendly, but it also makes collaboration more difficult.

    I prefer the Ruby solution; it can't do everything. Lots of stuff that is hard you would write in C instead. And it has an excellent C interface.

    That's great for typical problems, but it doesn't really provide for distributed problems. That's what Julia is for. So it is competing with Go for non-statistical uses, not Python.

    But it is mostly competing with matlab and R for those statistical uses. Also, notice they mention LISP instead of Haskell? They're not actually as ambitious as they claim to be.

  16. how good is the multithreading? by ooloorie · · Score: 3, Insightful

    The multithreading support in Julia 1.0 still says "experimental". So does it have usable threads or not? How good is the thread implementation? Comparable to Java? To C++? Are the standard data structures thread safe? How many spurious locks are there?

  17. Re: No native compiler by Crashmarik · · Score: 2

    Don't worry the hardware will take care of performance issues by the time the product ships*

    *Am I joking or not ?

  18. Re:I think xkcd already has this covered by Junta · · Score: 2

    I say the larger content seems to be clearly oriented around scientific computing.

    There is a fair amount of ill-advised 'marketing' sort of propaganda that is misleading in their pages however, which is unfortunate as I think the core goal and how they go about it seems respectable enough.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  19. .x d by fyngyrz · · Score: 2

    I know the Julia law, and will obey it.

    Heretic! Splitter! Dimensional fractionator!

    The Mandelbrot law is supreme!

    --
    I've fallen off your lawn, and I can't get up.