In recent years I’ve come to understand that there tends to be a big difference in attitude from people who are expecting a “product”, and those who are simply looking for a programming language.
What I mean by “product” is that some people seem to be expecting
- A mature, stable language with a regular release schedule.
- Mature, stable tools such as debuggers and linters.
- A mature, stable IDE with all sorts of GUI elements.
- A variety of mature, stable packages.
- A curated list of tools and packages.
- Perhaps a single download and installer that installs absolutely everything you might want to use.
Alternatively, others of us, when starting to use Julia, were expecting a mature (or perhaps not even mature), stable language only, and if we wanted any of these other things we’d have to evaluate what’s available.
The “product” concept is rather new to me, especially for a programming language, and I suspect that is the case for many other users here as well.
Matlab is proprietary, and has been around quite along time, so they certainly have developed a “product”. Python has also been around a very long time, and as an open source project has much more in common with Julia than Matlab, but for some reason I’ve yet to discover, Python seems to be the recipient of an almost unimaginable amount of time and effort on the parts of a very lage number of people who, again for reasons I can’t understand, have tried implementing just about everything under the sun in Python. There are, as a result, a number of packages in which people have gathered a whole bunch of very mature, polished Python “stuff”, and assembled it into a “product”.
As for Julia: I think you will find that it feels quite impressively mature for a language so young. Bugs in the language itself are quite rare. While there is no regular release schedule, development in Julia is quite active, and the core devs do an extremely professional job at deciding what gets merged. The debugger is pretty new. I find it works quite well, but I’d agree there is still some awkwardness in teh debugging workflow. It’s certainly fair to say that the debugger is immature. If a really mature debugger is really important to you, my advice would be stay tuned. There is already a bewildering variety of really interesting Julia packages at various levels of maturity, stability and maintenance. There certainly exists a large enough subset of these which are quite stable and relatively mature that Julia is quite usable as a language without the need to rely too much on calling other languages (though it has good interoperability with C, C++ and Python at least). I agree that there is a discovery problem: it’s hard to tell what to use, especially when you are starting out. That problem is not unique to Julia. I’m not aware of any curated lists. Julia has a variety of editor plugins also at varying levels of maturity. I can’t really speak to these since, as a vim user, I’m more than satisfied with the vim plugin, the excellent Julia REPL, and Revise which is an essential part of my workflow.
At this point, the reasons to use Julia are the merits of the language itself, and the merits of some of the packages available for it. In most cases the latter are derived from the former. I suspect that a “product” containing Julia, the likes of which people looking for that sort of thing are likely to be satisfied with will exist at some time in the future, but that is probably still years off. In the meantime, I’m quite satisfied with how things are working out.