Announcement

Collapse
No announcement yet.

Julia 1.0 Programming Language Released

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Julia 1.0 Programming Language Released

    Phoronix: Julia 1.0 Programming Language Released

    Julia, the LLVM-based, speed-focused, dynamic and optional typing, full-featured programming language focused on numerical computing has reached the version 1.0 milestone...

    http://www.phoronix.com/scan.php?pag...a-1.0-Released

  • #2
    built-in package manager
    Could we get a new language that doesnt have this? I know they have lots of advantages but they makes it harder to get third party build systems, like meson or cmake, to work with them which in turn makes it harder to justify integrating components made in then into larger projects

    Comment


    • #3
      Originally posted by SpyroRyder View Post
      Could we get a new language that doesnt have this? I know they have lots of advantages but they makes it harder to get third party build systems, like meson or cmake, to work with them which in turn makes it harder to justify integrating components made in then into larger projects
      Julia's old (now defunct) package manager was dependent on GitHub. I am not sure how the new one works (I know it does allow using different/additional repositories, making it easier for a team to use within a business that don't want their code in the open). I think it will depends on Git, or at least when you say you want to develop a package it still uses git clone, but normal installs now no longer clone the whole thing.
      I don't think this should be a major issue / if your build new to download dependencies, you should be able to do it without the package managermanager.
      For building apps, Julia's static compilation into shared libraries or executables has to get better. Because that's not a breaking change, most work on that was waiting until after 1.0.

      I think Julia will start trying to move towards more general programming in the future, but right now its focus is definitely on numerical work/ number crunching, like R/MATLAB/ Fortran/ NumPy. In that realm, many users are scientists or mathematicians first, programmers second. And their goal is to run a reproducible analysis of some kind, not to make an app for distribution.

      Comment


      • #4
        Incredible! I do everything with Julia, for which Rust isn’t a good fit.

        Comment


        • #5
          Originally posted by Zyklon View Post
          Incredible! I do everything with Julia, for which Rust isn’t a good fit.
          Interesting comment, you obviously have experience with Julia so I have to ask, would it not make more sense to extend another modern language like Rust, Swift or whatever, to handle science oriented computational loads then you have yet another language that will get little adoption? Seriously, I'm not sure what attraction there is to a language few will use and even fewer will learn to use well when the world is producing millions of C++, Rust, Swift or whatever users.

          I'm left with the feeling Julia will be more of a niche language than APL.

          Comment


          • #6
            Originally posted by wizard69 View Post

            Interesting comment, you obviously have experience with Julia so I have to ask, would it not make more sense to extend another modern language like Rust, Swift or whatever, to handle science oriented computational loads then you have yet another language that will get little adoption? Seriously, I'm not sure what attraction there is to a language few will use and even fewer will learn to use well when the world is producing millions of C++, Rust, Swift or whatever users.

            I'm left with the feeling Julia will be more of a niche language than APL.
            Julia is my primary language.
            It is less niche than languages like R and MATLAB, neither of which are that small.

            Julia has a REPL, letting you easily run it interactively, unlike C++, Rust, etc.
            Yet it still compiles to efficient native code via LLVM (like C++, Rust, etc), making it fast without much effort -- unlike R, MATLAB, or Python.

            The chief advantages:
            1) Multiple dispatch. This is more powerful than the single dispatch of object oriented programming, and allows for easy syntax.
            2) Generic programming. Functions are like C++ templates by default, with Rust-like type inference meaning you don't need any annotations. Parametric or fully general typing is the norm, giving great flexibility. A cool example of this is automatic differentiation, where they add methods to a "dual numbers" type, and then calling functions involving your code and mixes from random Julia libraries will suddenly spit out derivatives.
            3) Metaprogramming. The abstract syntax tree is just another Julia object, and you can do whatever you want with it at compile time. Combined with things like multiple dispatch, you can make all sorts of generic, adaptive algorithms that automatically specialize for a specific problem.
            4) Because it is normally JIT compiled, specialization is natural. This is in contrast to Python, where if you create your own custom class, you can't make a numpy array of it, and the compiled C/C++/Fortran binaries that are doing your heavy lifting certainly wont be able to specialize for it.

            Comment


            • #7
              Originally posted by wizard69 View Post

              Interesting comment, you obviously have experience with Julia so I have to ask, would it not make more sense to extend another modern language like Rust, Swift or whatever, to handle science oriented computational loads then you have yet another language that will get little adoption? Seriously, I'm not sure what attraction there is to a language few will use and even fewer will learn to use well when the world is producing millions of C++, Rust, Swift or whatever users.

              I'm left with the feeling Julia will be more of a niche language than APL.
              Julia has been around for 6 years now, I think that ship sailed long ago. Python already did what you're talking about (well, the heavy lifting is actually done in C) and it's rather popular. Rust would be hideous for this kind of work, you don't even want to think about memory.

              Comment


              • #8
                Thanks for the details. Im actually surprise by the high usage you allude to. This indicates more potential than i thought.


                What has my concern is the proliferation of new programming lsnguages. There are actually many good ones supporting modern techniques. It would be nice to see at least one of these lsnguages widely adopted. A C++ for the next decade or two.
                Originally posted by celrod View Post

                Julia is my primary language.
                It is less niche than languages like R and MATLAB, neither of which are that small.
                this actually surprises me. MATLAB was actually taught in colleges (engineering schools)
                Julia has a REPL, letting you easily run it interactively, unlike C++, Rust, etc.
                Yet it still compiles to efficient native code via LLVM (like C++, Rust, etc), making it fast without much effort -- unlike R, MATLAB, or Python.

                The chief advantages:
                1) Multiple dispatch. This is more powerful than the single dispatch of object oriented programming, and allows for easy syntax.
                2) Generic programming. Functions are like C++ templates by default, with Rust-like type inference meaning you don't need any annotations. Parametric or fully general typing is the norm, giving great flexibility. A cool example of this is automatic differentiation, where they add methods to a "dual numbers" type, and then calling functions involving your code and mixes from random Julia libraries will suddenly spit out derivatives.
                3) Metaprogramming. The abstract syntax tree is just another Julia object, and you can do whatever you want with it at compile time. Combined with things like multiple dispatch, you can make all sorts of generic, adaptive algorithms that automatically specialize for a specific problem.
                4) Because it is normally JIT compiled, specialization is natural. This is in contrast to Python, where if you create your own custom class, you can't make a numpy array of it, and the compiled C/C++/Fortran binaries that are doing your heavy lifting certainly wont be able to specialize for it.

                Comment


                • #9
                  Thanks for the different perspective. In my little corner of the world not much is said about Julia. In fact this forum is one of the few places where i hear anything at all about it.
                  Originally posted by brrrrttttt View Post
                  Julia has been around for 6 years now, I think that ship sailed long ago. Python already did what you're talking about (well, the heavy lifting is actually done in C) and it's rather popular.
                  The little bit of programming i do has been done in Python larely. This is what motivated me to ask questions. Python is great for what it is but it does have limitations.

                  Rust would be hideous for this kind of work, you don't even want to think about memory.
                  One of the reasons im interested in Swift is that it adopts some features or behaviors from Python It also has a REPL and similar features as Julia. I see a lot of potential in Swift which is another part of why i started asking questions here. Unfortunately a good Linux implementation is still off in the future so i work with Python at the moment.

                  It is possible that my original concerns about Julia adoption is wrong. I just haven't seen one single ad for a Julia programmer locally. This includes the universities and the labs they manage.

                  Comment


                  • #10
                    Originally posted by wizard69 View Post

                    Interesting comment, you obviously have experience with Julia so I have to ask, would it not make more sense to extend another modern language like Rust, Swift or whatever, to handle science oriented computational loads then you have yet another language that will get little adoption? Seriously, I'm not sure what attraction there is to a language few will use and even fewer will learn to use well when the world is producing millions of C++, Rust, Swift or whatever users.
                    I totally agree, that there are too many (and partly quite superfluous) languages, and a concentration on fewer of them would be far better. But for getting that kind of performance and abilities which Julia provides, the architecture had to be designed from the ground up on the lessons learned – it’s like you cannot build a skyscraper on top of the basement of a regular house. (And you really can’t compare scripting languages with fully compiled ones.)

                    Julia is able to supersede all other scripting languages I ever used. I now do everything in Julia, I did before in {sh/bash/zsh, Python, Tcl, Lua, Matlab/Octave/Scilab, etc}. The only exception to Julia for me is Rust (for system programming and applications, which also was able to supersede C/C++ for me). So Julia makes everything FAR better than before and helps me to really concentrate on just two main languages. I always hated that big array of “use language X for Y”. The ecosystem may currently be not as big as Python’s for example – which is just a matter of time, but Python probably *never* gains that set of features which Julia already has. Also you can easily use Python and C out of Julia, with PyPlot via Plots.jl being the best example. And I really don’t think you like Bash scripting with awk, to give another example, so shelling out via Julia is also advantageous. You also can see the ascending of Julia when you for example look at the stack overflow survey of march.


                    Originally posted by brrrrttttt View Post
                    Julia has been around for 6 years now, I think that ship sailed long ago.
                    v1.0 is out since two days. The pre-versions weren’t ABI-stable and missed quite some things, so I don’t think you can really count that time.
                    Last edited by Zyklon; 08-10-2018, 08:06 AM.

                    Comment

                    Working...
                    X