Julia Language Co-Creators Win James H. Wilkinson Prize For Numerical Software (mit.edu) 108
An anonymous reader writes: Three co-creators of the MIT-incubated Julia programming language are the recipients of the 2019 James H. Wilkinson Prize for Numerical Software. With origins in the Computer Science and Artificial Intelligence Laboratory (CSAIL) and the Department of Mathematics, Julia is a programming language created in 2009 by Jeff Bezanson PhD '15, former MIT Julia Lab researchers Stefan Karpinski, and Viral B. Shah, and professor of mathematics Alan Edelman. The prize will be awarded to Bezanson, Karpinski, and Shah "for the creation of Julia, an innovative environment for the creation of high-performance tools that enable the analysis and solution of computational science problems."
Released publicly in 2012, Julia has over 3 million downloads and is used in over 1,500 universities for scientific and numerical computing. "I am proud of the intellectual contributions of the Julia Lab, which applies the latest in computer science to science and engineering problems, while engaging interdisciplinary collaborations all over campus and beyond," said Edelman. "Julia is increasingly the language of instruction for scientific computing at MIT."
Released publicly in 2012, Julia has over 3 million downloads and is used in over 1,500 universities for scientific and numerical computing. "I am proud of the intellectual contributions of the Julia Lab, which applies the latest in computer science to science and engineering problems, while engaging interdisciplinary collaborations all over campus and beyond," said Edelman. "Julia is increasingly the language of instruction for scientific computing at MIT."
Languages are not that important (Score:3, Insightful)
Libraries are. On the other hand, every real expert can learn a programming language in a week or two, so special-purpose languages have merit.
Re: creimer's phat bootay is hot as phuck!!! HNNNN (Score:5, Informative)
"Why is everyone so interested in Julia?
"At some high level, Julia seems to solve what Steven Johnson (MIT) described at EuroSciPy on Friday as 'the two-language problem'. It's also known as Outerhout's dichotomy. Basically, there are system languages (hard to use, fast), and scripting languages (easy to use, slow). Attempts to get the best of boths worlds have tended to result in a bit of a mess. Until Julia.
(https://agilescientific.com/blog/2014/9/4/julia-in-a-nutshell.html)
https://en.wikipedia.org/wiki/... [wikipedia.org]
"the language-agnostic design of LLVM has since spawned a wide variety of front ends: languages with compilers that use LLVM include ActionScript, Ada, C#,[4][5][6] Common Lisp, Crystal, CUDA, D, Delphi, Fortran, Graphical G Programming Language,[7] Halide, Haskell, Java bytecode, Julia, Kotlin, Lua, Objective-C, OpenGL Shading Language, Pony,[8] Python, R, Ruby,[9] Rust, Scala,[10] Swift, and Xojo."
While Julia is not running on JVM it should be noted that a recent update to the JVM helps it be an interesting compiler target.
See: Java 7 JVM implements JSR 292: Supporting Dynamically Typed Languages[7] on the Java Platform, a new feature which supports dynamically typed languages in the JVM. This feature is developed within the Da Vinci Machine project whose mission is to extend the JVM so that it supports languages other than Java. (https://en.wikipedia.org/wiki/Java_virtual_machine)
LLVM
Riddle me this, Batman! (Score:2)
Is Julia a Lisp?
https://juliacomputing.com/blo... [juliacomputing.com]
If it is, how does it distinguish itself from previous attempts at Lisp Without So Darned Many Parenthesis?
The beloved C language and Unix OS (FreeBSD, Linux being what is current) were once characterized as the crude, Worse-is-Better New Jersey approach (Bell Labs) that "gets stuff done" as opposed the MIT approach that wins the sort of awards that are the subject of the GP.
The closest anyone had come to turning the tide on Worse-is-Better is Java,
Re:Languages are not that important (Score:4, Interesting)
On the other hand, every real expert can learn a programming language in a week or two
This is only true for "normal" programming languages that are a series of instructions executed in sequence, with standard control instructions such as loops and conditional branches. So all you have to do is learn some new syntax.
But many programmers have difficulty learning languages that don't fit that paradigm, such as Prolog and Verilog.
Re: (Score:2)
Yes, due to most programmers being stupid and lazy. Some even think javascript is a good language...
Re: (Score:1)
That is why I said "real expert". Same-paradigm is easy and anybody smart can do it. You are correct that many programmer will find it very hard or even fail even to learn a language from a different paradigm. Heck, many will fail to learn a language from the same paradigm in a short time. Verilog does not quite count IMO, as learning it is not so hard, but doing useful hardware in it requires additional knowledge. Same, for example, with Computer Algebra languages like Axiom, where you need to understand t
Re: (Score:3)
That is why I said "real expert".
How do you know if an expert is "real"? Does he also have to be a Scotsman?
Verilog does not quite count IMO, as learning it is not so hard, but doing useful hardware in it requires additional knowledge.
Verilog is a Turing complete language. Most Verilog programs are not hardware descriptions, they generate FPGA bitstreams.
Re: Languages are not that important (Score:1)
Because this special-purpose language is as easy and fast to write as Python and MATLAB, while being as fast to execute as C or Fortran? Believe it or not, for e.g. numerical phycisists, that's the most important feature a language can have.
Re:Languages are not that important (Score:5, Insightful)
Re: (Score:2)
Also, I did that about 20 years ago. Decoded to drop it again as that language was designed by complete idiots, for numerous reasons.
Re: (Score:3, Funny)
The phrase "cluster fuck" was invented to describe the C++ language.
Re: (Score:2)
Indeed.
Re: Languages are not that important (Score:1)
Re: (Score:2)
The problem happens to be on your side here, not mine.
Re: Languages are not that important (Score:2)
Re: (Score:2)
Since your thinking is defective, why should I care?
Re: Languages are not that important (Score:2)
Re: (Score:2)
Wow, you do have a problem. Impressive.
Re: Languages are not that important (Score:1)
There is a reason fortran is still used for numerical software. Maybe julia will finally replace it
Re: (Score:2)
Doubtful, those Fortran libraries are called and used from many other languages.... no need to rewrite them
Re: (Score:2)
My Linux Mint is showing v0.5.2, but I manually installed v1.0.3 (fortunately it was very easy to do). I'm currently using Julia for most of my work, and there's really no reason not to be using the latest version.
Re: (Score:1)
First, the nebulous "real" attached to his "expert"
Second, Julia is for scientists, not programmers, in the same way that VBA is for accountants, not programmers.
Re: (Score:2)
It doesn't really matter. If their conclusions are contrary to what the Bible, big oil and the rugwearer-general say they're wrong anyway.
Re: Languages are not that important (Score:2)
Re: (Score:2)
Au contraire. I said the language used does not matter much to the _developer_ (if said developer is a real expert). You are saying it is important to the _project_. That is a bit different. Depending on the project, that may or may not be the case, but it is hardly "the most important decision". That thinking is for people with low levels of insight and experience.
Re: (Score:2, Insightful)
On the contrary, this is one of those cases where the language matters, I think. Julia's plan is pairing Matlab's ease of use with C-level performance, and you simply don't get there without some serious design effort on the language and its standard library. The authors have various examples on why you can't simply take Matlab and improve its compiler; for instance, the type stability of sqrt.
Re: (Score:2)
Libraries are. On the other hand, every real expert can learn a programming language in a week or two, so special-purpose languages have merit.
intermediate lang/ffi pretty much solves the library issue. It's the language that allows you to glue and model your job. In a week you get the syntax, takes longer to understand the language implementation quirks and adopt a style that works and looks native to the language.
Re: (Score:2, Interesting)
If you prefer 0-based indexing, you might find it more intuitive, but I assure you there are those of us who find 1-based indexing more intuitive, especially when you consider the differences between ordinality and cardinality. The amount of explanation that seems to go into showing new programmers how 0-based indexing works suggests it really isn't all that intuitive after all.
The thing that comes 1st is at array position 1. The thing that comes 0th... doesn't exist, so why reserve an array position for it
Re: Dijkstra is rolling (Score:2, Informative)
In dutch we have a separate word for closed ranges like monday to friday. English needs to get with the times.
Re: (Score:1)
As a fellow mathematician, I think that you are finding 1-based indexing is more intuitive just because you are used to it. The examples you make reinforce it --- "the 0th thing" is just a naming convention. Even if you don't consider programming at all, it would make sense if the whole mathematics were rewritten with 0-based indexing. When you think about it, there's a lot of spurious -1's in various computations and formulas that just disappear if you use zero-based indexing and intervals of the form [a,b
Re: (Score:2)
The thing that comes 0th
No, it's "The thing that comes at offset 0." Array indexes are offsets.
Re: (Score:1)
Many calculus and discrete operations start at 0 and accumulate to N.
And some start at 1, and some start at 2. Some only use the even or odd terms. Including a zero can be a problem sometimes, e.g. Dirichlet series (like the Rieman zeta function) start at 1 because otherwise you're beginning by dividing by zero.
Should exponents start at 1 or at 0?
Exponents can be any real number, it doesn't matter where you start.
However modeling algorithms with 1-based indexes necessitates positing the existence of the end of the collection being a non-data object, an extra.
The Julia programmer doesn't have to worry about any theoretical extra points, or even what the indices ar
Re: (Score:2)
This. You should be able to define an array from -17 to 666 if that fits the problem domain better and allows cleaner code.
Re: (Score:2)
I suppose that you also use rulers that start at 1 cm or 1 inch?
Re: (Score:2)
I suppose that you also use rulers that start at 1 cm or 1 inch?
Of course not, that's counting (or measuring, with some notion of quantity), not ordering. And on a ruler after 0 you get 0.1 (1mm), or 1/16, not 1.
If you're storing some elements in your array (e.g. [0.0, 0.3, 10.5, 2.7, 10.3]), then the elements are stored in some order and you're looking for the nth element in the array, in which case the 1st element is 0.0, the 2nd is 0.3, the 3rd is 10.5 etc. You're not measuring distance from the start of items with some width given in bytes (okay, that's how the mach
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:1)
Well R is a fine choice if its extensive stats libs have something you need. It's hard to beat R for esoteric stats packages.
However, Octave is a broken piece of shit.
CFD and FEM, and OpenProcessing (Score:2)
Re: (Score:1)
Huh? There are tons of open source CFD codes....
Re: (Score:2)
Well, let's see....
OpenFoam has cross-platform issues. It doesn't play well on Windows outside a virtual Linux environment..
Code Saturne's multi-language support is not good. It's French, and not only that, it's French, and so is Aster..
Elmer I had hopes for, but their focus seems to be academic sized(small) studies. Oddly, I don't think it will accept an STL, for remeshing, so you are looking at GMSH or Salome for Meshing, though FreeCAD has come a long way, and is the rising star for preparing studies. .
Re: (Score:2)
Re: (Score:2)
Octave should just close shop (Score:2, Insightful)
It's old and buggy. Half the libraries are broken because they are never updated to match the new releases. It's a mess. It's time to pull the plug on Octave.
Julia came along at just the right time
Was there any competition? (Score:2)
nt.
Hodge-podge mutt of a language (Score:2)
I went to a meetup a few years ago where some of its developers presented Julia. I left at the break because it was clear that this was yet another mutt offspring of a couple of popular scientific languages - R and Matlab - without even a vague idea of grammar or consistency. Also, yet another language that works with arrays but does not know how to treat them as first-class citizens. "An array? Let's start a loop!"
The initial comment about language not mattering could have come from anyone who think