News for hackers. Stuff that matters.
Re:Julia adoption keeps climbing by superbcarrot on Monday January 18, 2021 @06:52AM (#25820806)
Julia is a nice language, it's just tough to compete with Python.

- The beginner experience in Julia is still much worse than it is in Python. Stuff that should work intuitively sometimes doesn't, and when you get a cryptic error message, it's difficult to find relevant help online. And when you do find help, some of it is out of date because the language has changed over the past few years.

- You can squeeze a lot of performance out of Python and the ecosystem of libraries is hard to beat.

- Julia has to be way better than Python to give people an incentive to switch. Being just marginally better in some aspects of the language isn't enough. And it's very difficult to be much better than Python especially in useability and ecosystem.

Re:Julia adoption keeps climbing by veddox on Monday January 18, 2021 @09:36AM (#25822154)
> Julia has to be way better than Python to give people an incentive to switch.

A language doesn't necessarily have to give all the old programmers an incentive to switch, if it can position itself as a good language for new programmers to learn.

For example: at our institute (computational biology), we had a PhD student who was an early Julia adopter and wrote his model in that. Several students have since joined the project he started, so obviously they're now writing Julia too. That project's experiences with the language were so good, it soon became obvious that for our use case, Julia was superior to any other language we'd used so far. So pretty much the whole research group has now shifted to Julia, and that's what we teach new students. Slowly, other groups in our institute became interested, and more and more people are adopting it, which in turn means that their new students will also end up learning it in future.

Re:Julia adoption keeps climbing by CoolGuySteve on Monday January 18, 2021 @11:28AM (#25823347)
If you work with a lot of data, Julia is already a 10-100x improvement over Python.

Being able to iterate and mangle huge columns with real lambdas and without having to marshal arguments to/from C++ is a huge advantage.

Where I used to spend hours in aggregate searching through docs for pandas/numpy, for stupid shit like "how do I shift but also skip NaNs", now I just write a for-loop in a couple minutes and get on with my work.

There's a whole subclass of tasks in R/pandas to work around the interpreter that just aren't needed in Julia.

For me at least it's well worth the syntactical warts and slow interpreter.

Re:Julia adoption keeps climbing by VHRanger on Monday January 18, 2021 @01:32PM (#25824897)
As an experienced python/data science user, this (creating fast complex column-wise transforms) is rarely a problem for me.

The truly huge advantage for Julia is how it plays with parralelism. The GIL makes it an absolute pain to do parallelism in python. Always ends up in threading hacks with numba or joblib, or multiprocessing, which has its own unfixable flaws

Re:Julia adoption keeps climbing by oblio on Monday January 18, 2021 @11:31AM (#25823381)
Examples: Basic, C (both Basic and C, to a degree), Visual Basic, PHP, Javascript, Python. I'm probably missing some. These displaced older languages just by being adopted by newbies.
Re:Julia adoption keeps climbing by bluenose69 on Monday January 18, 2021 @07:28AM (#25821085)
This is an insightful and level-headed comment that applies equally to R.

Although Julia is a growing alternative to Fortran/C/etc for long-running computations, it remains awkward and unpleasant for interactive analysis. Users familiar with Python/R/etc must weight the benefits of Julia against its slow library startup, its cryptic error messages, and its thin documentation.

Also, the lack of a community repository for well-vetted Julia libraries can limit uptake by professional researchers who must be able to trust their tools. A real strength of R (in comparison not just to Julia but also to python) is that such a repository exists, and that it has automated testing across a range of computer architectures and versions of R, including not just unit testing within individual libraries, but also testing of related libraries.

Re:Julia adoption keeps climbing by disgruntledphd2 on Monday January 18, 2021 @08:46AM (#25821694)
Yeah, the R community owes a lot of it's stability to Uwe Ligges, and his (sometimes annoying) insistence on CRAN package quality.
Re:Julia adoption keeps climbing by BadInformatics on Monday January 18, 2021 @11:58AM (#25823731)
> Julia is a growing alternative to Fortran/C/etc for long-running computations, it remains awkward and unpleasant for interactive analysis

Did you mean to write short-running scripts? If anything, the Julia dev workflow is biased towards interactive analysis in a REPL a la R or IPython/Jupyter. I don't mean to imply that there's no startup overhead, but how often are you restarting the REPL when doing EDA? Unless it's more than once every few minutes (which is a very odd workflow), then startup overhead is effectively amortized.

> A real strength of R (in comparison not just to Julia but also to python) is that such a repository exists

CRAN is certainly a cut above many other package repos here, but I'm not sure "trust their tools" can apply to all packages on there. Anecdotally, I've had a lot of issues with compiled dependencies and missing/out of date external assets on less well-trodden packages. There's a reason MRAN, Conda and JuliaBinaryWrappers exist after all.

For whatever reason, Julia package maintainers also seem more receptive to making their work compatible with other libraries as well. This goes beyond just multiple dispatch as well--imagine if tidyverse/non-tidyverse wasn't such a hard split.

Re:Julia adoption keeps climbing by chalst on Monday January 18, 2021 @09:16AM (#25821974)
There are warts with the beginner experience with Python, principally the awful situation with packaging.

If you care about performance in code that mixes together several packages in nontrivial ways, Julia is way better than Python.

There's a far broader range of libraries in Python than Julia, but none of them are going to prevent adoption of Julia when its performance advantages are crucial, because of the excellent facilities for using Python from Julia.

Re:Julia adoption keeps climbing by watwatinthewat on Monday January 18, 2021 @09:59AM (#25822382)
I'm not sure the package problem is really a problem for beginners. Just within the last year firsthand I've seen people in undergraduate classes, in graduate classes, and at work try Python the first time, and the default install of Anaconda worked for them in every case. The classes were taught by different professors, and they all suggested Anaconda independently and were not Python programmers.

It is overkill/brute force to install all the Anaconda default packages when a beginner is not going to use over maybe 5-10 libraries, but it's a solution that has worked flawlessly for beginners from my experience watching non-software engineers and "non-technical" people using Linux, Windows, and MacOS try Python for the first time in math and data science classes.

Re:Julia adoption keeps climbing by shiftingleft on Monday January 18, 2021 @07:10AM (#25820927)
I think this is a fair assessment, and would like to add that the "time to first plot" is also quite the usability issue.

Julia is using LLVM for code-gen has to compile a lot of code before you can actually use stuff like plots.

It takes ages to get a Pluto Notebook up and running, while a jupyter notebook is available instantly.

Re:Julia adoption keeps climbing by enriquto on Monday January 18, 2021 @07:46AM (#25821241)
Wait, why can't you use a regular jupyter notebook for julia? The "ju" in "jupyter" stands for what, then?
Re:Julia adoption keeps climbing by jakobnissen on Monday January 18, 2021 @08:47AM (#25821704)
You can, but Pluto is (I would argue) a better notebook than Jupyter. Regardless, the latency experienced with Julia applies equally whether you use Pluto, Jupyter, or any other front-end.
Re:Julia adoption keeps climbing by carterschonwald on Monday January 18, 2021 @08:58AM (#25821804)
Pluto is a notebook design the world needs. It’s nice enough for it to motivate me to use Julia for some new prjects.

But yeah latency kills :)

Re:Julia adoption keeps climbing by spacedome on Monday January 18, 2021 @08:47AM (#25821706)
You absolutely can use regular jupyter notebooks for julia! Pluto has some advantages, like being stored as a normal julia file. The julia startup time issues affect both.
Re:Julia adoption keeps climbing by enriquto on Monday January 18, 2021 @09:08AM (#25821903)
> being stored as a normal julia file.

Oh, man, this is indeed a major feature. My main point of friction with jupyter notebooks is the stupid json ipynb format. Why can't it be just a regular language file with comments?

Re:Julia adoption keeps climbing by Jugurtha on Monday January 18, 2021 @11:58AM (#25823733)
>My main point of friction with jupyter notebooks is the stupid json ipynb format. Why can't it be just a regular language file with comments?

Have you ever used Jupyter notebooks? They contain code, rendered Markdown, images, plots, video players, widgets, etc.

How do you see a "regular language file with comments" supporting this, instead of the "stupid ipynb format"?

You can use plain text files with Jupyter, too.

Re:Julia adoption keeps climbing by enriquto on Monday January 18, 2021 @12:08PM (#25823857)
> They contain code, rendered Markdown, images, plots, video players, widgets, etc.

The code could be verbatim python code (or whatever language the notebook uses), and the rest could be embedded inside comments. I don't see any problem with that (besides the very concept of "rendered Markdown" being totally out of order). The fact that they are saving it as json by default seems more to be laziness by the developers than a well thought-out solution, that could be just a straightforward serializer.

Re:Julia adoption keeps climbing by Jugurtha on Monday January 18, 2021 @12:23PM (#25824066)
>and the rest could be embedded inside comments. I don't see any problem with that

Do you mean embedding images and plots inside comments? If yes, please elaborate on how you see that happening in the real world.

>The fact that they are saving it as json by default seems more to be laziness by the developers than a well thought-out solution, that could be just a straightforward serializer.

So, how would that well thought-out solution in the form of a "straightforward serializer" work? I have a flat file, and I want to display images, plots that you can zoom into out of, figures, etc. as comments. How would that happen?

Re:Julia adoption keeps climbing by disgruntledphd2 on Monday January 18, 2021 @02:59PM (#25825894)
Well you could look at the source for org-mode, which does what Jupyter does but in Emacs, and using plain-text files.

https://github.com/bzg/org-mode

Re:Julia adoption keeps climbing by enriquto on Monday January 18, 2021 @12:34PM (#25824210)
> How would that happen?

At the very least, you could put the whole json stuff inside a comment. It's already plain text, isn't it?

Re:Julia adoption keeps climbing by lenkite on Wednesday January 20, 2021 @01:30AM (#25843170)
Python supports multi-line strings for this. No need for comments.
Re:Julia adoption keeps climbing by Jugurtha on Monday January 18, 2021 @12:46PM (#25824338)
>At the very least, you could put the whole json stuff inside a comment. It's already plain text, isn't it?

So instead of having the whole file as JSON, which is lazy and not well thought-out, we'll put all content in JSON, then put that JSON inside a comment in a plain text file. Do I read you correctly?

I feel we're making progress faster than these lazy Jupyter org bandits.

Re:Julia adoption keeps climbing by enriquto on Monday January 18, 2021 @01:04PM (#25824590)
> we'll put all content in JSON, then put that JSON inside a comment in a plain text file

Only the "output" content. The code inside the cells is verbatim, and the markdwon cells are regular text comments.

See, I'm not discussing you just because. I have a legitimate problem with ipynb: very often I want to run the code of a notebook from the command line, or import it from another python program. This is quite cumbersome with the ipynb, but it would be trivial if it was a simple program with comments.

Re:Julia adoption keeps climbing by Jugurtha on Friday January 22, 2021 @11:37AM (#25873163)
I believe people reading this are not detecting the sarcasm. I'm demonstrating that the Jupyter folks are not lazy engineers, and the "obvious" solutions people come up with are not that well thought-out when you start actually thinking about them.
Re:Julia adoption keeps climbing by ulucs on Tuesday January 19, 2021 @02:33AM (#25830900)
Rmarkdown does this perfectly
Re:Julia adoption keeps climbing by goerz on Monday January 18, 2021 @10:34AM (#25822701)
Sounds like you want jupytext
Re:Julia adoption keeps climbing by enriquto on Monday January 18, 2021 @12:10PM (#25823884)
Yes. What I really want is that ipynb disappears everywhere forever to be replaced by jupytext or a variant of it.
Re:Julia adoption keeps climbing by jsinai on Monday January 18, 2021 @09:16AM (#25821969)
You can also use VS Code notebooks and Julia support in VS Code keeps getting better. As a newcomer to Julia I am super impressed with the experience. No getting around loading the Plots package but producing a high quality plot and getting the data there is a much more enjoyable experience than pandas + numpy + Matplotlib + whatever tensor framework you’ve sworn to.
Re:Julia adoption keeps climbing by disgruntledphd2 on Monday January 18, 2021 @02:59PM (#25825898)
Unfortunately for Julia, its actual competitors in this space are ggplot and R.
Re:Julia adoption keeps climbing by krastanov on Monday January 18, 2021 @10:49AM (#25822892)
Do you still have latency issues in Julia 1.6? The latency improvements in the last 3 versions of julia have been so significant that I do not really notice it anymore. Supposedly there are additional speedups planned for 1.7.
Re:Julia adoption keeps climbing by kwertzzz on Monday January 18, 2021 @11:18AM (#25823230)
I tried also recently the beta version of Julia 1.6 and the speed improvement of installing/loading package are quite impressive. Essentially, packages get precompiled after installation using multiple threads.

Beside this, if you only infrequently install/update package, you can use PackageCompiler.jl. I use it for PyPlot.jl (based on matplotlib), DataFrames.jl, ... and plotting some data quasi instantaneous as it is in python (even the very first time in a session).

Re:Julia adoption keeps climbing by alephnil on Monday January 18, 2021 @07:05AM (#25820896)
Julia has the focus on scientific and numerical computing, and is overtaking the python/numpy combo in that niche. In addition to being considerably faster than python, it also has quite some innovative libraries in the area. This can also extend into machine learning, where python has been the go to language, despite its limitations.

For other areas, like web programming, there is no sign of Julia replacing Python in the forseable future.

Re:Julia adoption keeps climbing by superbcarrot on Monday January 18, 2021 @07:08AM (#25820917)
> and is overtaking the python/numpy combo in that niche

No, it's isn't. Julia is growing but it's far from overtaking Python at this point.

> For other areas, like web programming, there is no sign of Julia replacing Python in the forseable future.

That's where Go comes in.

Re:Julia adoption keeps climbing by bsdubernerd on Monday January 18, 2021 @07:27AM (#25821079)
I second this. Python is actually starting to get significant traction in the scientific community. Depending on the field, R, Fortran and Matlab (and even C++) still have a huge lead.

It's nice that Julia is getting noticed, but it's a distant blip in the radar.

The sci community is really hard to move from existing battle-tested and performant libraries.

Re:Julia adoption keeps climbing by oefrha on Monday January 18, 2021 @07:41AM (#25821197)
I don’t have much insight on the scientific computing landscape in general, but here’s one notable data point: I worked on the CMS experiment of LHC (Large Hadron Collider) for a while, which is one of the highest profile experiments in experimental physics. The majority of CMS code is C++, which you can check for yourself at https://github.com/cms-sw/cmssw (yes, much/most? of the code is open source). What I worked on specifically was prototyped in Python, then ported to C++ and plugged into the massive data processing pipeline where performance is critical due to the sheer amount of data. So I probably wouldn’t put C++ in parentheses.
Re:Julia adoption keeps climbing by pansa2 on Monday January 18, 2021 @07:54AM (#25821306)
> prototyped in Python, then ported to C++

This need to rewrite, of course, is what Julia is trying to avoid. My workflow is exactly the same, and I’d love to be able to write code in a high-level language like Python and then use that directly instead of having to rewrite.

However, in my case the reason for rewriting isn’t just performance, but also to be able to build compiled binaries. Julia aims to be as high-level as Python but faster - is there a language that’s as high-level as Python but AOT-compiled?

Re:Julia adoption keeps climbing by pjmlp on Monday January 18, 2021 @11:29AM (#25823361)
> is there a language that’s as high-level as Python but AOT-compiled?

Common Lisp, Ocaml for example.

Re:Julia adoption keeps climbing by oefrha on Monday January 18, 2021 @08:15AM (#25821466)
Nim? I know it has Python-like syntax and aims to be performant, but don’t know much beyond that.
Re:Julia adoption keeps climbing by 0-_-0 on Monday January 18, 2021 @10:19AM (#25822565)
Indeed, the Julia autodiff implementation linked above would look very similar in Nim as well.
Re:Julia adoption keeps climbing by mlthoughts2018 on Monday January 18, 2021 @08:28AM (#25821559)
Cython - in fact I think in 2021 if you want to write a pure C or pure C++ program, Cython is the best way to go, and just disable use of CPython.

The “need to rewrite” is actually a sort of advantage with Cython. You only target small pieces of your program to be compiled to C or C++ for optimization, and the rest where runtime is already fast enough or otherwise doesn’t matter, you seamlessly write in plain Python.

Using extension modules is just a time-tested, highly organized, modular, robust design pattern.

Julia and others do themselves a disservice by trying to make “the whole language automatically optimized” which counter-intuitively is worse than make the language overall optimized for flexibility instead of speed, yet with an easy system to patch optimization modules anywhere they are needed.

Re:Julia adoption keeps climbing by cycomanic on Monday January 18, 2021 @11:56AM (#25823717)
I have been using pythran for the last year and the nice thing is that you hardly have to rewrite anything but get speeds which are often as fast (or sometimes faster) than c modules.

The problem with cython is that to really get the performance benefits your code looks almost like C.

I agree with you on the optimize the bits that matter, often the performance critical parts are very small fractions of the overall code base.

Re:Julia adoption keeps climbing by szemet on Monday January 18, 2021 @08:59AM (#25821825)
> Using extension modules is just a time-tested, highly organized, modular, robust design pattern.

I really don't get this. I'am fully on the side that limitations may increase design quality. E.g I accept the argument that Haskell immutability often leads to good design, I also believe the same true for Rust ownership rules (it often forces a design where components have a well defined responsibility: this component only manages resource X starting from { until }.)

But having a performance boundary between components, why would that help?

E.g. This algorithm will be fast with floats but will be slow with complex numbers. Or: You can provide X,Y as callback function to our component, it will be blessed and fast, but providing your custom function Z it will be slow.

So you should implement support for callback Z in a different layer but not for callback X,Y, and you should rewrite your algorithm in a lower level layer just to support complex numbers. Will this really lead to a better design?

Re:Julia adoption keeps climbing by mlthoughts2018 on Monday January 18, 2021 @09:19AM (#25821991)
> “But having a performance boundary between components, why would that help?”

It helps precisely so you don’t pay premature abstraction costs to over-generalize the performance patterns.

One of my biggest complaints with Julia is that zealots for the language insist these permeating abstractions are costless, but they totally aren’t. Sometimes I’m way better off if not everything up the entire language stack is differentiable and carries baggage with it needed for that underlying architecture. But Julia hasn’t given me the choice of this little piece that does benefit from it vs that little piece that, by virtue of being built on top of the same differentiability, is just bloat or premature optimization.

> “you should rewrite your algorithm in a lower level layer just to support complex numbers.”

Yes, precisely. This maximally avoids premature abstraction and premature extensibility. And if, like in Cython, the process of “rewriting” the algorithm is essentially instantaneous, easy, pleasant to work with, then the cost is even lower.

This is why you have such a spectrum in Python.

1. Create restricted computation domains (eg numpy API, pandas API, tensorflow API)

2. Allow each to pursue optimization independently, with clear boundaries and API constraints if you want to hook in

3. When possible, automate large classes of transpilation from outside the separate restricted computation domains to inside them (eg JITs like numba), but never seek a pan-everything JIT that destroys the clear boundaries

4. For everything else (eg cases where you deliberately don’t want a JIT auto-optimizing because you need to restrict the scope or you need finer control), use Cython and write your Python modules seamlessly with some optimization-targeting patches in C/C++ and the rest in just normal, easy to use Python.

Re:Julia adoption keeps climbing by chalst on Monday January 18, 2021 @09:41AM (#25822206)
> One of my biggest complaints with Julia is that zealots for the language insist these permeating abstractions are costless, but they totally aren’t.

This sounds like it might be interesting, but your later comments about overhead and abstraction costs sounds like you maybe don't understand what Julia's JIT is actually doing and how it leverages multiple dispatch and unboxing. Could you be a bit more concrete?

Re:Julia adoption keeps climbing by mlthoughts2018 on Monday January 18, 2021 @09:53AM (#25822315)
No I think that’s what I’m saying. When raising the issue that using multiple dispatch this way is premature abstraction that has intrinsic costs, all I get is the religious pamphlet about multiple dispatch.
Re:Julia adoption keeps climbing by oivey on Monday January 18, 2021 @10:44AM (#25822823)
In practice the multiple dispatch overhead is elided by the compiler. If it can’t be you’re doing something truly dynamic, which is generally unavoidably slower. It’s still a better place to be than everything being a generic Object type.
Re:Julia adoption keeps climbing by mlthoughts2018 on Monday January 18, 2021 @12:31PM (#25824171)
The nice thing about Cython is that you can have both - all the multiple dispatch you want with fused types, or escape that paradigm to do other things if you desire. It gives a lot of surgical control.
Re:Julia adoption keeps climbing by oivey on Monday January 18, 2021 @01:13PM (#25824688)
I don’t think that is true. As far as I know, Cython let’s you do function overloading and single dispatch via class inheritance. I think you also miss out on the type inference that lets you do things like pipe dual numbers through functions without any dispatch related overhead.
Re:Julia adoption keeps climbing by galangalalgol on Monday January 18, 2021 @10:19AM (#25822566)
Does compiling with cython decrease the ffi overhead of the calls into native code? My problems with numpy have always been that I have to make a lot of calls on small bits of data and the ffi overhead eats all my performance gains. If I put more logic on the native side and made fewer bigger calls it would be faster, but that often doesn't make sense, or is a slope where putting the logic unto native pulls a data structure over or another related bit of logic until I just have a tiny bit of python left.
Re:Julia adoption keeps climbing by cb321 on Monday January 18, 2021 @03:52PM (#25826499)
Probably. Cython compiles a C-style superset of Python into C. Then a C compiler compiles that to a Python-importable DLL/.so. So, the overhead to call a C function is no more than declaring its types (programmer person overhead) and then, in the generated C, the native C-linkage function can be called like any other. Now, just one C function calling another from another translation unit (i.e. object file or shared lib) can be "high" overhead (nothing like Py FFI), but you may also be able to eliminate that with modern compilers with link-time-optimization with some build environment care.
Re:Julia adoption keeps climbing by bsdubernerd on Monday January 18, 2021 @08:31AM (#25821573)
Just for reference, my experience is mostly computational genomics. R is king of analysis, and most of the actual "meat" is implemented in C++. But I work with other teams as well, so the experience is a bit more varied if you look across different areas.
Re:Julia adoption keeps climbing by pjmlp on Monday January 18, 2021 @07:30AM (#25821111)
First Go needs to offer comparable stacks to .NET and Java offerings, not only their platforms languages, but also their guest ones.

And yes, there are ways to AOT compile as well.

Re:Julia adoption keeps climbing by oblio on Monday January 18, 2021 @11:35AM (#25823446)
It's all about which "bubble" you're in. Many people posting here work for startups using micro services (for which Go is a decent fit) and for companies close to the whole Docker/Kubernetes ecosystem, which is based on Go. So naturally they assume Go is huge.

My anecdata kind of tells me that Go is reasonably big, but it's not yet near .NET and Java, worldwide. But it could get there in a few years, I've seen/heard about some enterprises adopting it.

Re:Julia adoption keeps climbing by pjmlp on Monday January 18, 2021 @11:43AM (#25823553)
You don't need to write C or C++ when using a SQL RDMS, likewise .NET and Java shops don't need to write Go when using Docker/Kubernetes.
Re:Julia adoption keeps climbing by oblio on Monday January 18, 2021 @11:54AM (#25823690)
True, but I'm not talking about simple users. I'm talking about companies extending Kubernetes or building adjacent software. Even if their service doesn't necessarily integrate with Kubernetes, there is frequently a temptation to "follow your heroes".

Look at the whole Cloud Native Foundation thing, I think most of their projects are developed using Go.

So if you're using that stack, it's easy to assume that all new development everywhere is in Go.

It will probably balance out once the newness wears off Go (I think this is already happening).

Re:Julia adoption keeps climbing by pjmlp on Monday January 18, 2021 @12:23PM (#25824064)
Actually Rust in what concerns Microsoft.

https://deislabs.io/posts/still-rusting-one-year-later/

I should also note that after creating the initial support for Go on VSCode, they have given it away to Google to maintain it.

Re:Julia adoption keeps climbing by physicsguy on Monday January 18, 2021 @07:42AM (#25821205)
It's not overtaking at all. It's seen growth in some areas.

The issue with regards to web programming/other programming is important, because sometimes it's useful to make a website/build another tool as a scientist. Python can do both easily.

Re:Julia adoption keeps climbing by amkkma on Monday January 18, 2021 @11:38AM (#25823482)
Re:Julia adoption keeps climbing by physicsguy on Monday January 18, 2021 @12:30PM (#25824165)
They're not exactly mature frameworks yet though, which is more the point I'm making. Of course, you can do most things in Julia, but does it provide a good experience for it yet?
Re:Julia adoption keeps climbing by oxinabox on Monday January 18, 2021 @11:46AM (#25823586)
there are so many tools coming up around this in julia that it is arguably a problem. THere was a whole session last juliacon that was just on web-dashboard tools like Dash.jl and Stipple.jl and several others. And there was another half-session worth of other talks about web related things.
Re:Julia adoption keeps climbing by fnord123 on Monday January 18, 2021 @11:48AM (#25823598)
>Julia has the focus on scientific and numerical computing, and is overtaking the python/numpy combo in that niche\

I agree. In fact if Julia hasn't overtaken Python in numerical computing by January 2022 I will consider it a huge failure.

Re:Julia adoption keeps climbing by evgen on Monday January 18, 2021 @12:37PM (#25824241)
Seriously?!? Julia has no hope of overtaking Python in numerical computing by 2032, expecting movement by 2022 is just delusional. Here is a better prediction: by 2022 people using Python for numerical computing who started doing so in the previous year will exceed the number of people who have ever downloaded Julia since it was first released.
Re:Julia adoption keeps climbing by fnord123 on Tuesday January 19, 2021 @07:20AM (#25832754)
No, not seriously. But also seriously. The article is based on % change which is of course ridiculous because the % increase of a small population isn't at all interesting. And GP also has a ridiculous claim. So I'm offering a stake in the ground to determine if Julia is on the track that GP claims. If GP wants to come back and discuss where the stake should be, it will be an interesting conversation.
Re:Julia adoption keeps climbing by kazinator on Monday January 18, 2021 @01:44PM (#25825017)
Not people that matter, though, mostly just redundant copies of the same person.
Re:Julia adoption keeps climbing by ForHackernews on Monday January 18, 2021 @06:56AM (#25820845)
You can call Python directly from Julia https://github.com/JuliaPy/PyCall.jl so much of the Python library ecosystem (say, matplotlib) is available to be used in Julia programs.

That helps the adoption story quite a bit. You can do the number-crunching in Julia where performance counts, and then analyse and present the results using Python.

Re:Julia adoption keeps climbing by superbcarrot on Monday January 18, 2021 @07:12AM (#25820940)
- Using Python directly is a better experience than calling Python from Julia

- I've never run into unsolveable performance issues with Python

So I guess I'm not in the target audience unless I just happen to be curious about a new language? That's kind of my overall point - even if Julia is a good language on its own and I work in data science, I don't have reasons to pick it over Python.

Re:Julia adoption keeps climbing by galangalalgol on Monday January 18, 2021 @07:55AM (#25821311)
If you haven't hit a brick wall with python, it is just because you haven't run into the right problem. I was doing something that required lots of conditional operations on small matrices. The FFI into numpy's native library really bogged it down. I didn't have permission to install a compiler on that machine so I wrote it in vba in excel. It was 11x faster.
Re:Julia adoption keeps climbing by pjmlp on Monday January 18, 2021 @07:31AM (#25821118)
Except when Python fails, the option is to write C, in Julia I can carry on writing Julia.
Re:Julia adoption keeps climbing by Grimm1 on Monday January 18, 2021 @09:42AM (#25822214)
I said something similar in another thread, but for me it doesn't have to be better than Python, as that is largely going to be subjective, the package ecosystem just has to grow and have some offering, at all, for the things that I do.

https://fluxml.ai/Flux.jl/stable/

Is still very barebones compared to Torch/TF/Flax and I would be hamstringing myself by switching to Julia even if I find the language otherwise attractive.

Re:Julia adoption keeps climbing by huitzitziltzin on Monday January 18, 2021 @10:38AM (#25822751)
Maybe keep an eye on this issue:

https://github.com/FluxML/Flux.jl/issues/1431

They are going for feature parity with pytorch hopefully in the near term.

Re:Julia adoption keeps climbing by Grimm1 on Monday January 18, 2021 @11:34AM (#25823432)
Thanks for this, I will definitely follow along there. Yeah if they can just check a few of those boxes I'm much more likely to at least try to more regularly work with Julia.
Re:Julia adoption keeps climbing by macawfish on Monday January 18, 2021 @10:46AM (#25822854)
But can Torch/TF/Flax do autodifferentiation on constants ordinary functions? No they cannot!
Re:Julia adoption keeps climbing by komuher on Monday January 18, 2021 @11:42AM (#25823541)
Flax/jax can :)
Re:Julia adoption keeps climbing by ChrisRackauckas on Monday January 18, 2021 @01:15PM (#25824710)
If it's a pure function. Oh and if you have state-based control flow you have to turn off the JIT. Etc. If you take a standard library like some thermodynamics simulator and throw Jax on it do you expect it to work without modification? Most of the time it'll fail right at the start by using the wrong implementation of Numpy. So no, that's not "ordinary functions": those are functions where people consciously put in the effort to rewrite years of work onto Jax which is very different.
Re:Julia adoption keeps climbing by melling on Monday January 18, 2021 @10:13AM (#25822514)
Python used to be tough to compete with Perl.

But then times change... It’s usually the tooling and libraries. Now I don’t want to go back to Perl.

And I’d certainly be willing to give Julia a try.

Re:Julia adoption keeps climbing by dan-robertson on Monday January 18, 2021 @09:12AM (#25821943)
I found the beginner installation/package installation experience a million times better than python (except that it’s tricky to explain that you type ] to enter the package manager but you don’t see the ] that you typed)
Re:Julia adoption keeps climbing by jakobnissen on Monday January 18, 2021 @12:14PM (#25823929)
You can "using PKG" and then type "pkg"add MyPackage""
Re:Julia adoption keeps climbing by ptero on Monday January 18, 2021 @07:37AM (#25821165)
I think your "ecosystem of python libraries" is the key point. Python got a lot of mileage for a mass adoption from ML. Its libraries provided an "easy ML" for masses at the time ML got popular in science and job market, which quickly brought it into mainstream and built up its network effect.

A similar enabler in a new field could help Julia burst in as a general language. My 2c.

Re:Julia adoption keeps climbing by chalst on Monday January 18, 2021 @09:31AM (#25822116)
Autodiff is a place where there is a gulf between Julia and Python, one that I think can't be bridged well: JuliaDiff is astonishingly flexible and performant.

https://www.juliadiff.org/

Re:Julia adoption keeps climbing by oxinabox on Monday January 18, 2021 @11:49AM (#25823620)
Urg that website is so incredibly out of date. Julia has amazing things for autodiff. But like not the things listed on that website.

Also python is still doing great with Jax and PyTorch.

Re:Julia adoption keeps climbing by chalst on Monday January 18, 2021 @02:08PM (#25825295)
I linked to the website (which was updated in May, but its contents could do with more work) because it has examples of how well the suite fits together.

I don't know much about Jax. I've seen competent benchmarks showing an order of magnitude benefit for using ReverseDiff from the AutoDiff suite over Autograd, which is what Pytorch uses for reverse-mode autodiff

Re:Julia adoption keeps climbing by oxinabox on Monday January 18, 2021 @02:45PM (#25825734)
It was update in May to fix that the CDN changed. The actual content hasn't been updated in 7 years.

It really should be updated to have basically the content of this thread https://discourse.julialang.org/t/state-of-automatic-differe...

Re:Julia adoption keeps climbing by oxinabox on Monday January 18, 2021 @11:43AM (#25823551)
I remember in ~2005 people said almost the exact same thing about Python and Perl.
Re:Julia adoption keeps climbing by evgen on Monday January 18, 2021 @12:39PM (#25824266)
I think you are confusing 1995 with 2005. Perl was in decline by 2000 and by 2005 it was terminal; you could probably count the number of perl shops of any consequence in that year on the fingers of one hand.
Re:Julia adoption keeps climbing by oxinabox on Monday January 18, 2021 @02:02PM (#25825234)
I don't think that is the case. Sure Perl may have been in decline for ages, but people were not comparing Perl to Python for that long. Simply because python hasn't existed that long.

Python 2.0 was released in 2000. Python 1.0 was 1994, and Python 0.9 (first public release?) was 1991.

Check the google trends. https://trends.google.com/trends/explore?date=all&geo=US&q=p... Its unclear when perl peaked since it has been in decline since before 2004 But it wasn't til late 2007 that Python overtook Perl in google searches

Even while it was in decline people were still making that argument.

Re:Julia adoption keeps climbing by uncrex on Monday January 18, 2021 @08:53AM (#25821746)
> way better

People like to substitute "10x better" here but I think the real number is 100,000x better, aka it's not possible by default. Q: What it would take to replace Windows? A: iPhone was a new product category that targetted a new market.

Re:Julia adoption keeps climbing by jakobnissen on Monday January 18, 2021 @09:00AM (#25821834)
It does happen, though. C has mostly replaced FORTRAN for scientific applications. Not entirely, FORTRAN is (infamously) still used, but I don't know anyone who has started a new project with FORTRAN.

Just 6 years ago, I was taught Perl in my Introduction to Bioinformatics course. The teachers were still using Perl because it used to be the go-to language for bioinformaticians. The year after, and every year since, they've taught using Python.

Re:Julia adoption keeps climbing by Loic on Monday January 18, 2021 @09:19AM (#25822002)
We started a very large computational intensive project in Fortran. It is still easier to do maths in Fortran than in C/C++ and now, Fortran has a wonderful C binding system allowing direct call into C .so/.dll if you want to do some SQL or other kind of data input/output.
Re:Julia adoption keeps climbing by evgen on Monday January 18, 2021 @09:19AM (#25821995)
The idea that people were being forced to learn perl just for bioinfomatics as recently as 6 years ago fascinates me.

Python has gotten exceptionally lucky. I am sure the two or three remaining perl users on the planet are also on HN and ready to jump to its defense, but to me this just goes to show you how heavy the switching cost is for something like this is and also how lucky python was to have been the best language to switch to at this point. It was in the right place at the right time for a lot of these switches away from older languages in obvious decline and then it was able to leverage numpy and scikit to pick up a lot of additional momentum in ML and data science tasks. It is almost never the 'best' language for the job, but coming in as second choice on most tasks is a huge win.

Jack of all trades, master of none, but oftentimes better than some are at one.

Re:Julia adoption keeps climbing by TheRealKing on Tuesday January 19, 2021 @12:45PM (#25836215)
There are many new projects in modern Fortran. Just search GitHub.
Re:Julia adoption keeps climbing by Bostonian on Monday January 18, 2021 @11:10AM (#25823138)
People who use a version of Fortran later than FORTRAN 77 do not spell it in all upper case letters.