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).
Is Becky's baby the cutest baby in the entire world? Becky thinks so, as Birthday 1.0 arrives.
Obligatory Betteridge's Law Post.
This is my signature. There are many like it, but this one is mine.
https://xkcd.com/927/
12:50 - press return.
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++.
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).
Bruce Perens.
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
Quote: "These damn things are as hot as a stiff cock!"
I can see perhaps adding some greek symbols to ascii for variable names, function names, but allowing full unicode is a disaster of a design decision since it permits all kinds of deliberately obscured code.
Languages need to be about well-chosen constraints to guide creativity, not about absolute freedom. Libertarian languages are a bad idea, since code is maintained and extended collectively.
Unicode for string data, yes, of course. But entity names in the language, no, no, no.
Where are we going and why are we in a handbasket?
So complete dumpster fire then - got it
Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
Because almost all the other names have been taken: https://en.wikipedia.org/wiki/...
After that, all we have left is "Zittzers".
If you don't get the reference, you don't belong here.
Mimetics Inc. Twitter
I z^2+c what you did there.
Inheritance is the sincerest form of nepotism.
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.
... 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. . . .
Except those handful of people in the world whose first language isn't English.
What does this language accomplish that none of the other thousands of languages in existence do not?
..are you having a day off?
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
My impression is that for every language other than C/C++, there are three things more important than almost any feature of the language or runtime:
(1) the package system - how you search+download+reference them, how dependencies+conflicts are managed, how updates are managed
(2) the build system
(3) editor integration, be it Emacs or Sublime or VSCode
Comment removed based on user account deletion
Almost all programming languages that end up in common use become messy as features and adjustments based on practical experience and industry changes are added over time. The originators cannot anticipate all future needs and trends/fads*.
C# used to be relatively simple because it applied to hard lessons of Java, but has grown screwier over time to keep up with the Jones' (along with Java).
Just try to do reflection on nullable C# types, for example. It's a WTF moment. When you investigate why it's that way, you learn that nullable types are an ugly hack on top of the existing dynamic type sub-engine. (Reflecting on nullable types is a common need when you want to automate class/schema mapping between layers, per DRY.)
* Some fad-driven features are just plain stupid. Some fads should be ignored, and language builders often lack the discipline to wait out fad storms.
Table-ized A.I.
the mathematical prowess of MatLab
Like arrays starting at index 1?
sudo rm -r -f --no-preserve-root /
and try to limit the egregiousness of bad code.
One example. Languages should probably enforce the presence of a method header comment.
If you still choose to make it a useless comment, you're just advertising your complete misfit / incompetent status.
Language made it easier to do the right thing and harder to do a bad practice.
Same goes for meaningful indenting enforcement. It's a good thing, because it doesn't hurt, and encourages comprehensible code.
The freedom you NEED as a programmer is freedom to
- organize the order of your ifs, loops, and subroutine calls,
- choose names, although that should be limited to a limited character set and probably enforced case and/or underscore conventions.
- create arbitrary hierarchical data structures.
You actually NEED no other freedoms than that.
And the fewer extra freedoms you get, the less you will completely screw up the experience of others trying to read and understand your code.
Where are we going and why are we in a handbasket?
Software engineers hate R.
Statisticians love R and find it very easy to learn and use.
Different target audience.
I use Python much more than C or C++, but seriously. The complication between Python 2.x and 3.x compatibility is immense. And then there are the third-party libraries that frequently are no platform independent. To try to address this nightmare, the concept of Python virtual environments has been created as a hacky workaround.
For these reasons, I cannot agree with you that Python evades the clusterfuck designation.
$5 / month hosted VPS on linux = awesome!
No, there was definitely some subtle complexity to it.
File under 'M' for 'Manic ranting'
I have a copy of Romeo and Juliet in Japanese and her name is not Julia in it.
Indeed, looks like "Romio to Djurietto"
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Python 2.x to 3.x incompatibility is a total clusterfuck, and it's why I left the language.
At this point I only trust people if can define their language up front in a way that can be safely extended and hopefully standardized. I'm not going to muck with Python again only to have it break in some version 4 or version 5. (Yes, I still have code in production with K&R prototypes even though ANSI C has been around for nearly 30 years.)
Languages that offer useful pure functional programming are the future when it comes to massively parallel projects. The next big thing is going to be related to ML, Haskell, or OCaml. But it's a damn shame my old C skills make me no good at these languages.
So I'll probably have to retire once a proper programming language comes around. Lucky for me nobody seems to be doing a very good job at making me obsolete!
Yes, Python is the current replacement.
However, Python is just not an array programming language by design.
https://github.com/malmaud/Ten...
Julia is Python + Numpy + Numba, without GIL, with metaprogramming features to make the code more symbolic than is possible with Python.
It's community also tries to work along side Python, rather than compete. There are packages to call both ways.
If you write only occasional linear algebra code, Julia is not worth the effort. But for those who write a lot more math code, it could be.
And we can continue, in most latin languages (and slavic and several others), she tends to be called after the Italian "Giulietta" (and local transcriptions there of).
(Which is again different than Juliett - and would even make sense in the context given that's how is the language where the action is supposed to take place.
Note that these will also tend to pronounce her lover "Romeo", again closer to Italian)
So no, not the whole planet is calling them by the Shakespear's original english.
Germans just use whatever is the local variant of Juliett, for ease of pronunciation.
As German is a language regularily refered in the science (Mad scientist cliché) and computer (Blinkenlight !) lore, Romeo und Julia, could be fitting for computing language pairs.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
It's like the story of Johann and Margaret, you know, those two kids who got abandoned in the forest and tried to follow breadcrumbs to get home.
http://www.zverovich.net/2016/...
Like most of the comments here, not impressed... See the comments under the article for rebuttals. They have some good points, but I think this will only suit a niche user if it survives in the longer run.
Comment removed based on user account deletion
For someone who is taking a shot at bootcamp coders, you are evaluating Julia with the syntax superficiality of someone who learnt programming last year.
Usually, when a headline asks a question like "Is x the next big thing?" Usually, the answer is no.
Yes, that's Betteridge's law of headlines.
http://betteridgeslaw.com
It's just really great that they solved the open problem of how to end a function effectively. Clearly "}" was just not cutting it and had to be improved upon.
julia> function hypot(x,y)
x = abs(x)
y = abs(y)
if x > y
r = y/x
return x*sqrt(1+r*r)
end
if y == 0
return zero(x)
end
r = x/y
return y*sqrt(1+r*r)
end
Yeah man, that is fucking awesome! Who would not love to write 1000s of lines of code in that?
...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 ]
the readability of Perl with the brevity of COBOL.
People who currently write Matlab/Octave code.
It is trying to be familiar to its community of computer scientists writing vector code. You are clearly not the target audience.
This is like wailing at design choices of R without understanding its S legacy.
Also people who used Algol based languages in the past. Just be thankful, the begin wasn't also added.
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.
You can always use straight Lisp instead of going through Julia, nobody prevents you.
Ezekiel 23:20
No curly braces? Asymmetric 'end' doesn't work for me.
No switch control statements? Seriously?
Garbage collected = ick.
Socket interface was written by mickey mouse. No protocol family? Apparently only works with IP (TCP/UDP only) and domain sockets. To say that Sockets.setopt is lacking is the understatement of the year.
Included function library way too weak to take seriously.
Julia is actually a lot better than I thought it would be. Was expecting typical academic snobbery. Yet it fails to bring anything compelling (to me) to the table. Currently if I wanted to use a garbage collected language would much rather use C#.
Nearly seamless multitasking over an entire network.
https://www.youtube.com/c/BrendaEM
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.
I think I've seen this headline "is xx the next big language" 1/2 a dozen times on this site....
The language isn't named after the mathematician, though.
My first thought was Julia from Nineteen Eighty-Four, but that's not the case either. From an interview of one of the creators:
If you look for Python in Julia, you will be disappointed. When I first tried Julia, a few years ago, on a slow machine without an SSD, the plot package, Gadfly, took minute(s) to load.
This was likely due to the JIT. Startup times are not a key factor for its target audience. This is not a typical scripting language. People fire up the interpreter and leave it running all day or all week, as they test snippets in it. It is used like Matlab or like a Jupyter notebook session. Scientific packages in Python take several secs to load as well. On the full dataset, the extra few secs of startup means little when the savings are in orders of magnitude.
But if you are testing on small datasets and starting it up like a scripting language, I can see how you would be disappointed.
I read through the docs and was really liking what I was seeing... right up until the part that it says arrays are 1-based. Ah well, nevermind then.
julia> else = false
ERROR: syntax: unexpected "else"
That error message should be "Can't assign to a language keyword, you %&#@£!!!"
Generally speaking, NO ONE of the many new languages I have seen in decades give a thing about precise error reporting and human-meaningful explanation of the wrongdoing. Why so much hate???
You could more easily win programmers to your language if they won't need the necronomicon to fathom what's wrong with their code... but NNOOOOO, let's give them hell...
Installed Julia as a result of some earlier Slashdot post. Installed and played with it a bit and didn't get immediately pissed off by anything blatant, that's already good. Looked a bit deeper, found that it has extensible types but does not have methods on types, instead it has signature-based function dispatch. For me, the jury is still out on just how well it works. Otherwise, this one looks really promising.
Like many others, I have been casting around for a great language for casual programming that also extends to full blown production systems and team work if necessary. Python... so close, yet so far. Pathetic performance, stupid whitespace convention, and terrible C interface relegate Python firmly to the "nice try" category for me. Python was my go to language for bash script replacement and quick prototyping until recently, when Go because clearly better. But Julia seems better than Go on balance. All just my opinion of course.
Thanks for the refresher post, I think Julia deserves a closer look for any serious practitioner.
When all you have is a hammer, every problem starts to look like a thumb.
Yet another programming language that promises to do it all.
> Even in older machines I still had to come to a python package that didn't load in a fraction of a sec
Spacy would take a while to load the english model. Pandas + Scikit-learn used to take a few seconds some years ago, without an SSD (~1 sec each now). So did matplotlib. With SSDs and modern hardware though, things got a lot better.
Only some of Julia's packages were heavy. Gadfly was the worst then. When I first looked at it, the slow startup stood out for me as well. But I can tolerate 5 sec for a large package though in an interactive session. I am used to that. Still, I would agree that load times should be their priority.
I haven't followed Julia much in a while. So I can't speak for the performance changes. I tried it when it first came out.
I really like how in Julia how instead of ending a function with a closing brace, or just white space, you type out "end".
I don't know about you, but I actually type "end" faster than "}", because of no need to shift. I'm ok with either brace style or end style. On balance end-style is less ambiguous and less prone to error. I slightly prefer curlies anyway.
When all you have is a hammer, every problem starts to look like a thumb.
We just want to know.
When all you have is a hammer, every problem starts to look like a thumb.
I've definitely compiled the crystal compiler as recently as last week, without using Perl or Python. It just compiles itself, and makes use of some pretty standard libraries like openssh. I would suspect that it is the BED package installation system that is using Perl and Python
Bruce Perens.
That should say BSD package system.
Bruce Perens.
... when it's presented in an article posted on what must be the shittiest technews website ever. Running slower that the most degraded WordPress installation I've seen or worked with, loading north of 30 external trackers, codesnippets and such.
Un-fucking-believable, that's what.
We suffer more in our imagination than in reality. - Seneca
I've been programming for over 30 years and have used switch less than 10 times in that entire time. It's completely pointless IMHO. How Go could inlcude switch but no foreach is totally beyond me. ... Although I sort of like Go.
We suffer more in our imagination than in reality. - Seneca
... with that of Kotlin or TypeScript.
Then I'll consider it viable for a checkout.
And I'm not even joking.
We suffer more in our imagination than in reality. - Seneca
First problem is that C demands byte addressing, so can only address 4 gig with 32 bits. So we move to 64 bit architectures, which almost double the memory requirements of may programs.
Java, for example, can address 32gig with 32 bits, which is plenty for almost all normal applications. That is because it does not need to support the idiotic pattern of running a pointer through a string.
Likewise, larger C and worse C++ programs tend to do a lot of copying of data structures in order to control "ownership". A properly garbage collected language does not require that. And malloc/free is actually a pretty inefficient way to garbage collect.
There are idiocies in other languages which slow them down. For example, UTF-16 Strings in Java and .Net. But that is not fundamental.
With safety turned off, C# can be as efficient as C using a C style. Compilers optimize out array indexing etc.
Your comment is excellent. I don't have any points right now, so just thought I'd thank you. -CNTOAGN
nonono. its Juria.
It just looks like MATLAB to me. Matlab isn't niche. It is quite high and climbing in the tiobe index for whatever that is worth.
refactor the law, its bloated, confusing and unmaintainable.
Hi this is Rajeesh from Infosys.
I am seeking a senior architect with 10 years experience of Julia for a position in Antartica. Must have 8 years of experience in Go as well and HTML 6 will be handy as required by the PM of this client. If interested please respond back and I will call you at 5am your time only if meet the requirements.
Take care.
http://saveie6.com/
âoelock her upâ
Is that Finish?
No, it's iPhonish.
Cant we all grow up and just go back to using C?
Almost every language that has been tossed out in these posts is written in C, some in C++, including the language in question!
A few, a very few, are written in the ISA's version of assembler.
I see the biggest part of the problem comes from CompSci people trying to get their PHD and needing to do something, hell, anything to complete their dissertations!
C is a tiny language, C is compact, C is lightning fast, and C has saved my bacon more than once in my career.
If you can't write it in C, you shouldn't be writing code, anywhere! Be a plumber! Be an electrician, be an HVAC person, be any of the high paying jobs that this country is crying out for! Use your education, become the owner of any of those types of companies, but please, leave writing code, to those of us who started with assembler, learned C after that and can write any kind of code you want or need, and yes that includes everything.
Hey KID! Yeah you, get the fuck off my lawn!
> Cant we all grow up and just go back to using C?
That is not growing up. That is being plain stupid.
Julia is faster Matlab. Just about everyone who uses MATLAB knows C. These are properly-educated computer scientists. MIT isn't a place for VB6 coders.
Julia is meant for people who think in Math, not instruction sets. If you never had college level math education, you will be unable to see its utility.
The problem isn't that people don't understand C. It is that YOU don't understand WHY no one who uses Matlab is eager to write in C, even when it is bloody slow. It is too distracting from the problem at hand. You think they are complicating things for the sake of a PhD. No genius. They are desperately trying to get done. They work all day with high-dimensional matrices. C is a pain in the neck to code that.
Do you have a 4 year college degree? Did that have any significant math in it? Do you read CS research papers? If not, you are perhaps just an overpaid code monkey who solves fairly repetitive and dumb problems. You won't get this.
The closest C++ has to Julia is Armadillo.
http://arma.sourceforge.net/
Even that is not pitched for research, but to migrate Matlab code, once the algorithm has been developed.
Julia removes the need for this migration.
You might want to look through this http://www.gnu.org/software/gs...
Hey KID! Yeah you, get the fuck off my lawn!
Or just run this simple google search: https://www.google.com/search?...
Hey KID! Yeah you, get the fuck off my lawn!
And as opposed to your snide, and rude remarks... Yes I have a 4 year degree, and it had lots of math. So please either reply objectively, or please don't reply, at all.
Hey KID! Yeah you, get the fuck off my lawn!
I sincerely hope you meant Turbo-Pascal, you heretic!
#DeleteFacebook
> Yes I have a 4 year degree, and it had lots of math.
Good for you. And yet you don't understand the value of an array programming language?
> And as opposed to your snide, and rude remarks
Oh, that stings?
> > If you can't write it in C, you shouldn't be writing code, anywhere! Be a plumber! Be an electrician, be an HVAC person, be any of the high paying jobs that this country is crying out for!
Does the above sound intelligent to you? I just replied in kind.
> leave writing code, to those of us who started with assembler, learned C after that and can write any kind of code you want or need, and yes that includes everything.
Your assembler and C experience won't help you learn Haskell faster. This is like Sheldon on Big Bang Theory arguing that he has a better opinion on Biology or Medicine since he knows Physics, since that is eventually underneath it all. Doesn't work that way.
In CS research departments, they have a few low-level coders around. These are implementers, not researchers.
> Or just run this simple google search: https://www.google.com/search?... [google.com]
We can all do Google searches. How many mathematicians do you know today who do modern math in C?
All your results are for rudimentary C 101 tutorials for programming newbies explaining what a for loop is. These are basic arithmetic level tutorials.
That is not where math research is today.
> http://www.gnu.org/software/gs...
GSL gives you some very useful algorithms, but it won't help you write clean math code. You want to write code as close to the symbolic stuff, not clutter it with imperative loops, memory allocations, deallocations and casts.
Compare some Julia code vs. gsl_vector code side by side.
Statisticians choose R over C for very good reasons. Web devs use PHP/Ruby over C for very good reasons. CS researchers and Engineers choose Matlab over C for very good reasons. Kernel/Programming language/Core library designers choose C/C++ for very good reasons. There is no silver bullet.
Just about everything is an improvement over C in terms of productivity and safety. All too often, people mistake sunk cost bias for rational choice. Low-level programming choice is often mistaken for intelligence.
Cheezburger add-ons aer abailable from awl gud kittehs.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
It's not something you can differentiate, though.
Besides, this pun run is unstable at every point.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Address: 147 Rassilon Way, Gallifrey.
Years of experience with Julia: 729
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Could be worse. Occam-Pi is beautiful and elegant in every respect bar syntax. Same goes for Oberon 2.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
The identifier at the start of his code block.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
I've seen faster COBOL.
Java is ugly, horrible to write in, bloated and incredibly slow. Threading is a pain, indeed everything is a pain. It's not pure OO and it has a crappy format for databases.
It's so bad, performance frameworks moved off it.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Crystal is one of a shrinking number of environments I've not worked in. And I respect Bruce enough to try it.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Octave isn't really aimed at computer scientists, rather scientists. Matlab is aimed at scientists and engineers. OK, somewhat of a simplification, but Computer Science is not what springs to mind when someone says Octave.
Of course scientists also use R, Python, C++, and Fortran, depending on what they do, etc. And occasionally Java, Scala, Julia, and a few others.
I call it Romeo. Why Romeo you ask?
No. I ask wherefore Romeo.
I like Julia, I went through a period of enthusiasm for it a few years ago, and I'm going through another now. But.
The packages, which are necessary for any serious work, are almost all below v. 1. They are plagued by constant bugs and quirks: e.g. Flux only supports the GPU if Julia is compiled from scratch, while Distributions only works if you downloaded binaries. There are half a dozen different graphics packages, so its not clear you should invest your time learning any of them.
But I'm still optimistic about its chances in the future, after a few more years of shakeout.
`Perche non reggi tu, o sacra fame de l'oro,l'appetito de' mortali?'
If you squint hard enough, everything is assembler in the end.
But it's hard doing useful things when you're squinting all the time.
C is just mutilated B anyway. B was also lightning fast, and it was much smaller than C at that (no need to mess with types - you deal with machine words, and context defines whether it's a number or a pointer etc). Why not go back to that?
Really. What language is pure OO in your estimation, and why is that good? And what is this crappy Java database format you're talking about?
Took a look at Julia. Seems like a really nice language. BUT... every time I see a new language I can't help but think every new language is doomed to reinvent Lisp, but badly. Other than the typical hatred of prefix notation, what does Julia hope to give me over Lisp or Scheme?