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.
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.
This is really impressive from the technical standpoint, but I am wondering if they have a Code of Conduct for the language?
Therefore it's slow like Java and Python. That's not a bad thing if your app is I/o bound or quick development time is more of a priority.
But it failed it's goal of overtaking Java and Python if it's JIT compiled as you might as well use them instead
http://saveie6.com/
https://xkcd.com/927/
Otherwise claiming "Julia is the only high-level language that has run at petascale" is a bit of an exaggeration.
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:
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.
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...
Cheat sheet
When all you have is a hammer, every problem starts to look like a thumb.
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.
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......
Until it has a third party module for every conceivable thing you might want to do, I'm not dropping Python. I'll pop back in 10 years and check it out :)
"We want a language that's open source with a liberal license..."
I'm not a programmer, and I can easily prove that if necessary.
Are there programming languages with restrictive licenses? What sorts of jobs would you be unable to do because of those licenses?
You can't just have all the best features of scripting languages like Python and Perl and then magically expect the speed of C. Those features are inherently slow, no matter what you implement them in. That's like saying "we want automatic garbage collection with the speed of no garbage collection." It doesn't work that way. I'd like to have the speed of a car that has gas in it without having any gas in it, but it just doesn't work that way.
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.
Dynamism of Ruby with native speed of C? Ever heard of Compilation?
Anyway, Julia itself is written on top of LLVM; If they are able to bootstrap Julia in Julia and the performance stays the same, then i'll listen to their goals about the lofty language they claim to invent.
Why no mention of the reigning champ in the number crunching space, FORTRAN? Julia's ass will be handed to it.
I've played with my own toy language design, and there are so many agonizing choices. I empathize with these guys, trying to get it all down.
For just one little example, take integer literals.. To sys depend or not?, that is the question. They've chosen to sys depend like C. That leads to the convenience of automatic scaling; but it's a form of implicit conversion which is evil. It potentially leads to "works on my machine" bugs. The alternative is to force something that's generally supported on modern hardware but "big enough" like 32 or 64 bit; but that leads to "dog slow or not working on embedded" because you have to simulate it on a more constrained architecture.
That's just one little choice. There are hundreds of choices like this in language design, thousands? Some are more important than others.
Good luck, guys.
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?
I can go down their list of features and pretty much find every single one in Common Lisp, which has been around for decades. Why should I use Julia instead?
Of course, someone will make fun of Lisp for being a niche and unpopular language, but it's not like Julia is any better in that department.
Heretic! Splitter! Dimensional fractionator!
The Mandelbrot law is supreme!
I've fallen off your lawn, and I can't get up.
Way ahead of ya
I've fallen off your lawn, and I can't get up.
Um-hmmm. Just go back to whining about your inability to manage whitespace, will you? We need some more entertainment from incompetents claiming to be programmers around here. You were saying?
I would like to hear from people who switched from the more mainstream numpy and tensorflow for linear algebra.. to Julia.
What were your experiences? Was the worflow much more productive? What were the other gains?
Contrary to languages with a contrived Code of Conduct there aren't tons of lawyer-friendly rules but just one requirement :
- If you want to use Julia you have to kill a bunny.
How about package management? Is it as good as npm? If so, I would contribute modules.