Loved vs Dreaded again. Who's beating Julia?

Today I visited the StackOverflow 2021 survey results as part of an effort to convince a co-worker that we should use Julia rather than VBA in Excel. I expect his follow up question to be “Why not use the most loved language, Rust?”. I can answer for Rust, but not all of the languages above Julia. I know last time this survey came up the response was to not trust the results too much, but I’m still curious who’s around us.

Elixir and Clojure are both general purpose programming languages similar in age to Julia, but I had not heard of them before today. I wonder if someone here can tell me what they do well or what niche they fill in relation to Julia?

2 Likes

What is the use case you’re looking for a language for?

Crunching numbers with some curve-fitting, integrals, and zero-finding mixed in, but I am interested in a general answer.

Elixir, being a BEAM language, is designed for highly reliable and low-latency concurrent network services. There is a tradeoff between concurrency and within-task performance, in which Elixir favors concurrency and Julia doesn’t.

Clojure is a lisp on the JVM. It doesn’t have the same numerical focus that Julia does, but it has a nice design and the huge JVM ecosystem behind it. There’s a lot Julia could learn from Clojure, like its Spec system. Transducers.jl is inspired by the same feature in Clojure.

Both languages are functional, which I hope Julia will do more of.

16 Likes

I would take any language over VBA, so I view your problem as 2 stage.

  1. Why should you move away from VBA? [Obvious to anyone who has real experience using anything else]

  2. Why Julia over any other language like Python, Rust, R, etc? Here the arguments become more muddled. I’ll sing the praises of Julia every day, but I’d be lying if I told you that I would have been any less productive or successful if I had been using Python or R. Some things are easier in Julia, some things are harder. At the end of the day, for what I do, programming languages are just tools. I’m sure everyone has their favorite hammer.

12 Likes

The statistical significance of that study is pretty meh (for a few small but loved language you posted). Besides, Julia is in the very early stage that you don’t see people being “forced” to use it. Any sufficiently mature, popular language will have a non-small portion of people “hating” it because they are forced to work on it one way or another.

4 Likes

Agreed, but unfortunately I have no experience with VBA and he has no experience with any other language, so we don’t have much common ground to stand on. I can explain why I like Julia better than the other languages I have used which are Matlab, Fortran, and Python, but I must rely on others for comparisons with other general purpose languages.

I agree with you and actually posted the same comment on the previous post about this survey, but my argument benefits from this. :wink:
I’m actually just curious about the other languages people are liking and why.

FWIW I use Julia, Python, and R, and strongly prefer Julia. Having said that, most of my work is exploratory in nature, so the code I want often hasn’t been written before. In the situation where I’m doing something a little more standard, it is really nice just loading up a fully mature package from R or Python where all the hard work has been done and iterated over a million times by a million sets of eyes. Of course, Julia is quickly catching up in this regard also though so…

2 Likes

Also, when there’s something in R or Python that just does one component of your problem well and fully debugged, RCall and PyCall are there for you :slight_smile:

2 Likes

100%. I have a real-time trading program that I use on a daily basis that runs from Julia but uses PyCall to connect to the brokers Python API.

2 Likes

I wish there wasn’t PyCall and RCall at all. As a person from julia community I only use julia, since in this way i can understand what is the missing part of julia and someday when I am good at it I can fill the gap.

I switch from python to julia is because of I need to write high performance custom GPU kernels(with one language).

I had choices like learning C++ and using C++ to write the kernel then embeded into python.

To learn C++ itself is okay, before I noticed that the C++20 I learned is not compile-able at that moment… And older version of C++ is just too less modern to me. You have to write something complicated carefully to do something simple, it’s very easy to make a mistake in C++ for new learner like me.
Also I found using compiler and writing compile script does not have very good tutorials, and there are tons of choises for compiling C++ projects, package management etc. I got quickly lost in those.

Then I found julia, it does not only solved my problem very quickly without steep learning curve, it kinda changed the way I thought of programming(largely because of multiple dispatch).
And it is just so much elegent than using C++(or most other languages I know of), just like how I believed that being elegent has no conflict from being fast, and most other languages are just making compromises.

Modern Javascript and typescript is actually doing pretty well in term of speed and elegence, but they just don’t have much community resouses other than web related stuff. Although they’re general purposed language, they’re not that general enough in real world practice.

Julia is not perfect, I found that if I’m to write something don’t need high performance, sometimes a one time script on very small data, python seems to be the one to go. The time-to-first-plot problem is very painful in this senario. It just seem not very responsive to dev in Julia than python on these small scripts.
Also pakcages are not very matured like python, I experienced multiple regressions and new bugs through developing while I constantly trying to update all the packages I have. Good news is that they tends to be fixed really fast, sometimes minutes after I post the issue on github. Julia community is soooo amazing.
Also by just watching juliacon or Julia’s official ytb channel, I was introduced to many interesting areas that I have never heard of, very inspiring to me.
After working for years, Julia’s community makes me feels like a student again. I really love that.

8 Likes

Visual Basic is considered legacy even by Microsoft itself:

Going forward, we do not plan to evolve Visual Basic as a language.

Source: Visual Basic support planned for .NET 5.0 - Visual Basic Blog

And it looks like VBA in Excel is being replaced with JavaScript in the long term (https://techcommunity.microsoft.com/t5/excel-blog/announcing-office-scripts-preview/ba-p/1093559).

More reasons against VBA / Excel / Access:

  • Both Excel and Access have no clear separation of data and processing logic, which causes major issues in reprocibility, scalability, etc.
  • Both Excel and Access (and thus also VBA) does not work well with version control (Git).
  • Both work rather poorly together with other ecosystems (there are solutions, but they are much more cumbersome than for e.g. Python, R, Julia).
  • Both have scalability issues (Excel 1M row limit, Access has / had issues with databases >> 1GB).
  • Vendor lock-in

My opinion is that if you are using Excel or Access for any productive (i.e. regularly repeating and business critical) process in a company, you are doing something wrong.

5 Likes

Fully agree. It’s not just a matter of numbers, but also of which population you consider. Matlab and R guys are much less likely to respond to this survey or even frequent SO than Python, C or Java guys… (and I would say Julia guys are in the middle)

No one makes anyone use PyCall or RCall, but if you are doing a project in Julia and there is a well debugged library for accessing some data online and this is just a tiny part of what you do such as in @colintbowers example it is crazy to reimplement it, when you can spend your time implementing the real value added parts. Often these things are a small side-issue on your project.

If it’s your main concern, then yes I agree we should implement the important functionality in Julia and can get added value from that.

2 Likes

Web search “don’t use Excel for statistics” for many reasons not to use Excel for serious math.

You could use Julia for what it is best at – serious math – and Excel at what it is best at, forms and interfaces.

However, you’d probably be best off with a system neither of you know – SAS JMP, which can do all the math and you can program using the JSL scripting language.

What does BEAM Language mean?

It’s the runtime vm for elixir.

2 Likes

Does Julia use a virtual machine?