Slashdot Mirror


Is Julia the Next Big Programming Language? MIT Thinks So, as Version 1.0 Lands (techrepublic.com)

Julia, the MIT-created programming language for developers "who want it all", hit its milestone 1.0 release this month -- with MIT highlighting its rapid adoption in the six short years since its launch. From a report: Released in 2012, Julia is designed to combine the speed of C with the usability of Python, the dynamism of Ruby, the mathematical prowess of MatLab, and the statistical chops of R. "The release of Julia 1.0 signals that Julia is now ready to change the technical world by combining the high-level productivity and ease of use of Python and R with the lightning-fast speed of C++," says MIT professor Alan Edelman. The breadth of Julia's capabilities and ability to spread workloads across hundreds of thousands of processing cores have led to its use for everything from machine learning to large-scale supercomputer simulation. MIT says Julia is the only high-level dynamic programming language in the "petaflop club," having been used to simulate 188 million stars, galaxies, and other astronomical objects on Cori, the world's 10th-most powerful supercomputer. The simulation ran in just 14.6 minutes, using 650,000 Intel Knights Landing Xeon Phi cores to handle 1.5 petaflops (quadrillion floating-point operations per second).

21 of 386 comments (clear)

  1. Translation by TimMD909 · · Score: 5, Funny

    Is Becky's baby the cutest baby in the entire world? Becky thinks so, as Birthday 1.0 arrives.

  2. Let's make something to meet everyone's use cases! by kalpol · · Score: 3, Insightful
    --
    12:50 - press return.
  3. Great.. by Anonymous Coward · · Score: 5, Insightful

    Great... Just what we need... another language.. oh wait, that will need a new package manager.. and new frameworks.. and..
    screw it I'll just stick to C++.

  4. Take A Look At Crystal by Bruce+Perens · · Score: 4, Interesting

    There is always going to be argument about which language is the best, which Linux distribution, which web framework, and systemd.

    I have been using Crystal and the Lucky Web Framework for a large project, and it's been great. Crystal's handling of types, and the fact that you get all of the error-killing power of tight typing while you often don't have to specify the types at all because they are inferred, has make my code cleaner and easier to write, with fewer bugs and less need for testing. You write it like an interpreted language (it follows Ruby syntax, but treats typing and metaprogramming differently) and it has compiled speed (uses LLVM).

    1. Re:Take A Look At Crystal by farble1670 · · Score: 4, Insightful

      I have been using Crystal [crystal-lang.org] and the Lucky Web Framework [luckyframework.org] for a large project, and it's been great. Crystal's handling of types, and the fact that you get all of the error-killing power of tight typing while you often don't have to specify the types at all because they are inferred, has make my code cleaner and easier to write, with fewer bugs and less need for testing. You write it like an interpreted language (it follows Ruby syntax, but treats typing and metaprogramming differently) and it has compiled speed (uses LLVM).

      I'm sure your employer (or contractor) is ecstatic about the fact that they'll have to pay 3x the going rate to find devs that can work on the project you've built. Well actually that's not true. They'll have to pay someone to completely re-write the project when they can't find anyone to work on it and / or the niche framework you've picked is no longer supported / evolved.

      Maybe it was a pet project though.

    2. Re: Take A Look At Crystal by farble1670 · · Score: 3, Insightful

      Your viewing this from the perspective of the sort of programmer who is hired like an interchangeable cog.

      If you are telling me that you develop in a way that isn't easily picked up by another engineer, I don't think you are the master you think.

      Software engineering is... engineering. That means it's well documented, easily understood standard practices. Part of that is choosing a language, toolchain, and development environment that is stable and well understood.

      They are probably more concerned with time-to-market than anything else.

      Probably? So you explained it to them right? They probably don't understand the implications of your choices.

  5. No. by xtal · · Score: 5, Informative

    C is lightning fast and is the tool for when you know what you're doing.

    Python is .. for everything else.

    Everything else just turns into a clusterfuck over time. C and Python have somehow avoided turning into clusterfucks by being simple, while building an unstoppable freight train of reference work.

    Julia solves lots of problems in a specialized domain, but most programming is laughably mundane.

    --
    ..don't panic
    1. Re:No. by fahrbot-bot · · Score: 4, Insightful

      C is lightning fast and is the tool for when you know what you're doing.

      Python is .. for everything else.

      So Python when (a) you don't need fast and (b) you don't know what you're doing. :-)

      [ And when you don't want C, but want fast and you know what you're doing, use Perl. ]

      --
      It must have been something you assimilated. . . .
    2. Re:No. by serviscope_minor · · Score: 4, Insightful

      C is lightning fast and is the tool for when you know what you're doing.

      C is a lightning fast tool for people who are obsessed with micromanaging things which can be easily automated. If yu want lightning fast performance (often faster) but don't really want to do things by hand that a computer can be easily taught how to do then there's C++.

      Everything else just turns into a clusterfuck over time. C and Python have somehow avoided turning into clusterfucks by being simple

      C moves the complexity of the language into every single project that uses it. So the language per-se might not be a cluster fuck, but it is the epicentre of a custerfuck of biblical proportions.

      --
      SJW n. One who posts facts.
    3. Re:No. by fortytwoQAM · · Score: 4, Interesting

      TL; DR: There are a lot of great and nuanced features of Julia, but if you're writing off Julia without understanding the potential power of "multiple dispatch", I'd really encourage you to read up on multiple dispatch and its benefits. Also, if your programming is "laughably mundane", watch out that a machine or machine-learned model doesn't take your job. I'm surprised this got upvoted to a 5. One of the aims of Julia is to 'solve' or 'avoid' the "two-language problem". Interestingly, you just embraced the two-language problem. You can call and use C-code from Python, but that's not necessarily simple. At that point, anything that is "fast" from a computational standpoint now needs someone who's expert at both languages to provide functionality. Most Julia packages provide "fast" code, while allowing any Julia user to help and fix things by learning Julia - i.e. the "one-language satisfaction" ? Julia code is generally "fast" while being very "expressive" - i.e. an aim at trying to avoid the 2-language problem. Crystal looks very interesting and is an "LLVM-language" like Rust and Julia, but I don't see any mention of "N-Dimensional Arrays". To quote another poster, "dealing with ND Arrays with for loops is like pulling teeth". Python has NumPy, but all the good syntax was taken by the time NumPy came along (mid-2000s), so the ND Array syntax can be quite cumbersome with Python, as much as I like the NumPy/SciPy stack. I've been working almost exclusively with Julia over the past 3 months. I'm parsing large-ish (~1GB) binary files generated by arduino boards and a lot of signal analysis work. I'm absolutely loving it, but Julia has been on my radar for a few years now. A few years ago I did a bunch of the Euler challenges with Julia while trying to write as little code as possible and that was a fun exercise to see how powerful some of the syntax is.

  6. To quote Julia (Child)... by The+Original+CDR · · Score: 3, Funny

    Quote: "These damn things are as hot as a stiff cock!"

  7. Re:Julia? by fibonacci8 · · Score: 4, Insightful

    I z^2+c what you did there.

    --
    Inheritance is the sincerest form of nepotism.
  8. A good Matlab replacement, not the next big thing. by jma05 · · Score: 5, Insightful

    If MIT had been having its way, we'd all be using Scheme.

    Julia is a better Octave (open source Matlab replacement) - good for computer scientists, but software engineers will not be interested. Question is, will the scientific community create enough definitive libraries to provide alternatives for Matlab toolboxes. Not enough seem to have attended the Octave party.

    Also, computer scientists don't define popular adoption of programming languages. Else, we'd be using Haskell/Scheme by now.

  9. Okay. Let's do this ... by fahrbot-bot · · Score: 4, Funny

    ... for developers "who want it all" ...

    I want: local/global "goto" operations; unchecked pointers and arrays; brace *and* white-space (for you Python freaks) block delineation; weird operators like "+-+", "=!=", "-+/*" and "..."; support for casting on the *left* side of the assignment (ya, I did that on 4.3 BSD w/K&R C); random requirements for some variable to be in UPPER case and/or start with specific letters (for you FORTRAN fans) ...

    Feel free to add to this; I'll be back after I get a fourth cup of coffee.

    --
    It must have been something you assimilated. . . .
  10. Four cups of coffee by maroberts · · Score: 3, Funny

    ..are you having a day off?

    --

    Donte Alistair Anderson Roberts - hi son!
    Karma: Chameleon

  11. MatLab eh.. by volodymyrbiryuk · · Score: 3, Funny

    the mathematical prowess of MatLab

    Like arrays starting at index 1?

    --
    sudo rm -r -f --no-preserve-root /
  12. Re:Obligatory Betteridge's Law Post. by ilsaloving · · Score: 3, Interesting

    To save people effort googling:

    https://en.wikipedia.org/wiki/...

  13. Cat by DrYak · · Score: 5, Funny

    ...but why {...} ?!? {...} the syntax looks like the bastard child of Fortran and Perl

    Because since Python started overtaking Perl, my cats are sad because they can't write fully compliant programs just by random walking across the keyboard anymore.

    --
    "Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
  14. I would like by tgibson · · Score: 4, Funny

    the readability of Perl with the brevity of COBOL.

  15. HR Posting by sycodon · · Score: 4, Funny

    Technologically aggressive company in the expanding AI and Scientific arena is looking for experts in Julia.

    Must have at least 5 years hands on experience building applications with Julia in multi-core, machine learning applications and simulations.

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
  16. Re:The "dynamism" of Ruby? by jma05 · · Score: 4, Informative

    Once you get over your newbie tunnel vision with the block syntax, you will find that Julia is a compact (despite the ends), powerful, high-performance, array language with meta-programing features.

    No, it is not an academic language like say, Haskell. It is a practical programming language for research into math-heavy algorithms - Artificial Intelligence, Signal Processing, Image Processing etc.

    No, it is not a general purpose language for day-to-day scripting or web/business programs. It is not, as you put it, for "bootcamp coders".

    "want it all" refers to the historically diametric needs of computer scientists. They need a high-level, expressive, vectorized language like Matlab to prototype and interactively explore data... and a high performance language like Fortran or C++ to implement that algorithm after, on the fastest supercomputers. This gives them both in one tool.

    It sounds like your never wrote any significant matrix/math code in your life. Writing any complex matrix code with just loops is like having one's teeth pulled, compared to how it is done in an array language like Julia. The block syntax is the least of one's worries when dealing with high-dimensional data.