I guess most have heard about the recent 3b1b MIT course video and how it’s the most viewed julialang video already. Hopefully, many will be introduced to Julia through it so the community grows further. Many are excited by the thought of this growth, it seems to me.
That has made me wonder what we as the current community wish the future of the language to be like. I ask this because it sometimes seems like overtaking Python or Matlab or R as the language of choice is some kind of endgame for some people, so that Julia may “win” (and we as the current users would be on the “winning” side). Sometimes this feels a bit like fanboyish behavior, where new users come in saying “I heard this was the best language ever”. This attitude is of course not great, as we don’t gain anything by people not using or bashing Python or Matlab or R per se. But users bring in funding, so the goal could be “get a lot of funding via lots of users”, but then the question would be, what would you want to be done with that funding.
Is it just faster and faster numerical code? Is it specific software packages that are currently not feasible? Julia already basically can do all the things it was supposed to do when it was built, so is it more of a question of dominating the scene now?
I can say what my own wish is, and it’s rather modest. I want Julia to become so established that I can use it as a tool for scientific collaboration without people asking me “why not python / R / matlab”. I would like people I work with to recognize how much more approachable and maintainable their research code could be with multiple dispatch and custom types. So that I can convince them to try it, I want the friction in working with the language to reduce as much as possible, that’s mostly IDE and data handling tooling, as well as compilation issues now. Basically, I want to be able to actually harness the strengths of the language, which really agrees with the way I think and empowers me to be more than an end user, even though there are no purely technical reasons why I have to use it. In that way, people like 3b1b giving a recognition boost to Julia helps me without a single thing about the language changing.
I would be interested what others think where they want to go with Julia.
I think the direction of Julia as a programming language is very clearly set and defined here. Leaving aside the technical aspects and the target domains, one can see this endeavor was started by passionate people who never cease to push themselves, learn and improve. The seed has been planted and I saw a lot of other people joining over the years and contributing not only with excellent packages, but sharing the same passion and desire to improve to newcomers.
Julia had it’s 1.0 party two years ago and its packages already caught up with lots of libraries which are much older. How exciting is that!
Sure, there are issues and inconveniences, and they will be ironed out, but this is not the point. The community and it’s culture driving it forward are more important. And from this point of view I think Julia already won.
Incidentally, I love looking at people’s bookshelves when I visit their house — it tells so much about the individual. So one unexpected benefit of people working from home is that I get to see their bookshelf during online meetings.
But recently video conferencing tools started blurring these out automatically. I hate this. Bring back the backgrounds!
Julia has made high performance computing accessible to everyone without a formal background in programming. In a way, Julia has broken the C/C++ brick wall a lot of scientific programmers hit when coding in high level languages. The next brick wall I would like Julia to break is compiler technology. In a lot of ways, the Julia compiler feels like a magician pulling fast running rabbits (assembly code) out of our elegant looking hats (Julia code). Making compiler technology more accessible and amenable to scientific programmers is something I would like to see to push the line even further. This is already happening with tools like IRTools, Cassette and with the new compiler coming in Julia 1.6 but so far it has only been a playground for a handful of people brave enough and with enough free time to jump into the unknown. Documenting and explaining the underlying concepts behind these tools and making them more hackable is something I am excited for. A full-on compiler technology course taught by the masterminds behind the Julia compiler would be like a dream come true. Ideally, this should lead to a bigger compiler team that can help maintain and improve the Julia compiler or experiment with new proposals. But beside that, a lot of fields such as automatic differentiation and probabilistic programming could really benefit from people who can competently use compiler technology in Julia to do various seemingly magical things. Sorry for the rant!
As a Julia beginner I can hardly talk about the present, let alone the future. But, for whatever my two cents are worth, I think some newcomers may suffer from the “package-choice overload syndrome”. Looking ahead, this problem might snowball… Fortunately, the language is beautifully designed and the work produced by the experts is truly outstanding, with very good community support.
Package choice paralysis is symptomatic of a good thing, an excess of excellent packages. Hopefully the packages are mostly different in their approaches, like the ML ecosystem we have right now. But it’s always good to have choice and to just benchmark between the different options.
I just finished Giovanni Boccacio’s The Decameron, written ca. 1352 – I thought it a fitting read. At the end, the author writes:
“Elegant ladies, as I believe you know, the wisdom we mortals possess does not merely consist of remembering things past and apprehending the present, but on the basis of these two activities being able to predict the future, which is considered by serious men to be the highest form of human intelligence.”
Page 851 in the Wayne A. Rebhorn translation, W. W. Norton & Company. Kindle Edition
You can look at the 2.0 “milestone” and judge for yourself (I know of no, one, very major change, but I haven’t looked carefully):
You should think of all 51 proposals/issues as a breaking change, each one, so in some sense there would be “major changes”, in numbers at least, IF all implemented. I view them all as discussion points that may or may not happen. Including my own 2.0 issue (likely will not happen).
I’ve seen no clear indication Julia 2.0 will even happen, or if when. Julia 1.6 is now in development, and there’s currently no other (meaning 1.7) planned future milestone, but note 2.0 has no set “due date”. It’s been like that for a long time, and new 1.x milestones added after it, 1.4, 1.5 if I recall came later, and I expect 1.7 will.
Some of the interesting issue I see are:
This would change the nature of the language, we’re now like C# and other languages that have GC with finalizers, unlike C++ with destructors. Maybe Julia will become more like Rust (and C++), regarding resource usage.
That issue only affects predictablility of destruction, now speed (GC is often incorrectly thought to be slower than manual memory management). I see only one 2.0 issue also marked awith the “performance” label:
that said, I believe this is only about the standard library, you should always be able to make fastest possible code with Julia 1.x, with (or possibly by avoiding the) standard library.
Personally, I’d like Julia to become more popular than python or R because most job offers require python or R. I hope Julia will be a popular language by the time I look for a new job because I like it and I don’t want to move back to another one just because more people know how to use it.