Why Julia is very often related to a data science / economics language only?

I’m entirely confident that I can’t run any of my Matlab code from any point in time since I no longer have access to a license. (Otherwise the biggest difference is that I’ve never used any user contributed library in Matlab whereas most of my Julia code depends on such.)

4 Likes

Sorry, definitely NOT the case. My code from 6-7 years ago no longer runs. Moderate changes would be required. Code from 15 years ago does not have a chance: the language and the graphics in particular would require major effort to make it work. Matlab written today is a bloody mess just a few years from now.

1 Like

I’m not saying it definitely won’t work, but there’s always a chance a function is renamed, an argument is swapped, or a returned struct no longer has the field you were looking for. These things happen, and the more toolboxes etc. that are used the more likely it is. So the only true way to reproduce MATLAB code is to tell someone to buy the version that the code was first ran with.

Compare that with a Julia, you can download any old version and old package. And with a Manifest.toml it’ll grab the right versions for you. There are definitely some things to improve with Julia, but reproducibility is not a place where MATLAB is close.

2 Likes

Mirone is a > 200 k loc tool written in Matlab 6.5 (> 15 years old version). It still runs perfectly in R2022a (well, for me because I keep update the external MEXs it depends on).

Yes, Matlab broke compatibility tons of times but I never adopted any of the breaking changes and that allows me to still be able to (truly) compile it with modern compilers. The compiled version works, not only fine, but blazingly faster than when I use it directly from Matlab (except some computations that became real fast in modern Matlabs).

But ofc this is something that can only happens on Windows where backward compatibility is a sacred thing. Older working version on Unix are long, long broken for good.

1 Like

Interestingly, one of the reasons I started to search for a new language back in 2012 was because my code in MATLAB 2011b was not running in MATLAB 2012a :smiley:

If you use only the basic, the core language, maybe it is true that ancient MATLAB code can run today. However, anything a little bit deeper seems to have problems. In my case, I had compatibilities issues with Simulink, CMEX, and some specialized toolboxes.

By the end of 2012, I started searching for fast languages specialized in Linear Algebra. When I found Julia, I was very happy that you could create a matrix using A = [1 2; 3 4] and multiply it by a vector using A * b, instead of that almost unreadable code using NumPy.

In my case, Julia was just the perfect replacement for MATLAB. The only thing that it is really missing, is a good IDE (VS Code seems to be going to the right direction, but I just can’t leave neovim :D).

7 Likes

That is the experience we had with Pandas, code recommended in 2018, was already depreciated in 2020.

We are looking forward to the day when the Julia data management tools (basically all that is not the wonderful dataframe) will mature enough to allow us to give Python the boot.

1 Like

Probably one for another thread, but would be interested to hear what pandas functionality you’re missing that prevents you from “giving Python the boot”?

I haven’t used pandas in a few years, but never looked back after switching to DataFrames (plus some companions like ShiftedArrays, RollingFunctions etc). Of course my use cases are (like everyone’s I guess!) limited, so it’d be good to hear what’s lacking from people that have different needs. As you’ll probably know DataFrames is extremely actively developed and the maintainers are always interested in user perspectives on how to improve the package.

It is not pandas but python, and this is relevant for our workflow. dataframes are brilliant and superior to pandas in all we tried. What is not brilliant is

  1. Parquet and SQLite libraries. Both have bugs that we have to work around, and last time we checked, neither worked on Apple M1
  2. AWS interface. Yes it exists but the bits we needed are undocumented and we could not do what we needed even after reading the code. boto3 on python just works.
  3. julia version of python requests
  4. Inability to save compressed binary forms of dataframes and dictionaries.

So at the moment our workflow uses python to handle data with julia called from python for the calculations. not optimal.

2 Likes

Just wanted to thank you guys for such numerous direct messages. I will try to answer all of them definitely not later than by the end of the weekend. Special thanks to @Ronis_BR for creating this thread topic and bringing it under discussion!

As for VS Code vs NeoVim I fully agree! I have mentioned it a few times in this forum: Julia centric Erudite Vim and adjusted LunarVim setups are really simply out of space! :slight_smile:

1 Like