Best programming language for science in 2024

preview_player
Показать описание

Recommended textbooks:
Quantum mechanics:
Statistical mechanics:
Quantum information:

0:00 Intro
4:32 criteria
11:00 Fortran
17:29 C
19:05 C++
23:10 Julia
27:12 Python
29:44 Matlab
31:20 Mathematica
Рекомендации по теме
Комментарии
Автор

@14:20 OOP was introduced in Fortran 90 (released in 1990). It's... not great, but it's there.

timhaines
Автор

hello, thanks for the vid!

For reference, Fortran dependency management is getting better. See, for example, the fpm package manager, in development by the fortran-lang group.
Just in case anyone wants to learn more.

Fortran ftw!

coriollis
Автор

I use Mathematica for plotting. There might be other options, but I find that nothing beats it in its capabilities and how common-sensical the syntax is when generating complex plots.
BTW, I work inindustry and use Mathematica....

mihailamarie
Автор

Julia can call pyplot... Moreover, you get the ITensors library. Many Body Physics and Julia hands down!

dihydroxyacetonep
Автор

Very good advices in general.
I think that the gist is that it varies a lot depending of the field.
For instance, I work usually in few-body physics and most of my colleagues uses Fortran (some work with fortran77 and some work with modern fortran). I usually use python for simpler stuff and fortran for more demanding stuff.
The language of choosing really depends on the job that is given. I have some code in fortran77 and some code with more modern approaches using coarrays and whatnot.

Great video!

LuizGustavo-fomr
Автор

Python is similar to a markup language. If you have a problem, you say to python call the library written in another language. That means you have to learn python and a some libraries. One for calculation, one for visualization at least. You talked about the wired point syntax. Actually it is a strength of Julia.

demophilo
Автор

Really hope Haskell gains more attention in mathematical physics area!

scientificsurrealism
Автор

12:33 about in static languages such as C++ supported by GCC "[needing to worry about] garbage collection" (GC), I believe it's meant that you have to throw it out (and allocate manually), i.e. you only have manual memory management, unlike in GC-based languages like Julia (and Python). Yes, true for C, Fortran, less so for C++ and Rust (RAII gives similar benefit), but you CAN add GC to C and C+ (commonly done, e.g. most web browsers do that). GC-based like Julia (or in effect when you add GC in C++) IS easier. It can have downsides that are all avoidable in Julia, i.e. it allows avoiding heap-allocations (or preallocating there) to to help with real-time or just to eliminate small (unpredictable) overhead. [About Fortran not having OOP later at 14:20, is historically true, but it actually has OOP by now in recent versions, but still probably not much used, or too idiomatic, at least in vast majority of old/current code. And not like OOP is better... there or in C++ or Python, it's not for speed, Julia does away with traditional OOP, but such can be added with packages.]

pallharaldsson
Автор

Notice about Julia, It has several plots ecosystem but there are 2 that are the most popular: First is Plots.jl that is one you were showing in the video, which is good if you want something fast to plot without into going into so much verbose details, but the other you didn't mention is Makie, jl, that is something you could compare with Matplotlib, and the quality of the visualizations are really high.

navi
Автор

I'd like to throw my hat in the ring, Sagemath is great if you're working on high level theory or anything with GR

thetachyon
Автор

35:36 Did you say Numba will make your code a LITTLE BIT faster ? In my experience for pure Python code (bereft of compiled libraries) you can expect an easy 50x-100x speedup.

arnabacharya
Автор

Julia is great, but coming from MATLAB, I find its error messages can be a bit intimidating to dissect and understand. I think an LLM to customize the error messages for the user(and his background) might be a good thing.

arnabacharya
Автор

Hey Jonathon, I’m an applied math undergrad. How did you manage to get into a physics masters? Did you do computational physics research as an undergrad?

a.j.apalla
Автор

Thanks for the video. Your recomendations are very much in line with my opinions. Personally, I use Julia for all my scientific computing tasks. I did like Matlab, but compared to Julia it is slow, expensive and does not have the easy access to packages and community that Julia has. And I much prefer the syntax of Julia as well.

mskaarupj
Автор

@Jonathan Riddell have you thought about scripting it out more before you begin? This is an useful presentation but your hesitance makes it very hard to listen to. You talk very slowly as if you are working out what you want to say while you are talking. In the section I just listened to, I counted the "um"s and "ah"s and you say "um" or "ah" about ten times a minute. It's too slow and hesitant for me to follow it. After five minutes I decided to go to a different source.

vapourmile
Автор

C/C++ are certainly starting to show their age. C++ in particular looks like someone who has had too many plastic surgeries to still look young.

androth
Автор

Thanks for the tips!
Is there any language/software that matches Mathematica's optimization for symbolic calculation?
From what I understand, theoretical physicists depend heavily on this.

tzal
Автор

Great video Jonathon! We can talk about it for a looong time 😅

As a computational physics student myself (who used Julia for the past three years for my research projects), I can only confirm your points:
1) R is not popular in physics research.
2) Python or Julia are. Then, maybe, MATLAB (especially in engineering fields). Some researchers still prefer to use C/C++.

*Python*: easy to learn, very well documented, etc. Sufficient for most researchers.

*Julia*: easy to learn, performance-oriented (almost all Julia libraries are written in Julia as well, Just-In-Time compiled), easy to implement distributed and GPU code (especially writing your own GPU kernels when the task at hand is super specific to your research field).
If performance is an issue, and Python does not cut it, Julia is a great choice for computation-heavy programs.

Now, how would Python compare to Julia in scientific ML projects? This is what I am hoping to answer next.

juliaifrank
Автор

Thank you for this great presentation, really nice.

I am not sure I understand your point when you say that functional programming is limited for scientific computing compared to object oriented programming. I can't find in which case it is true. Also Julia (multiparadigm) is more functional oriented in its core than object oriented (struct instead of class for instance). So I am a bit confused.

Another point: I think it might be fair to compare Makie.jl to matplotlib instead of Plots.jl.

Great video anyway!

blaisepascal
Автор

Hello, thank you for this video. I had a question. I am currently a CS student, and I am exploring all fields related to my expertise, and currently I am so curious about this path, computional science; But I don't find any good video. I want to know about one's experience who really worked something. Can you please fill a video and explain what is and how is your job, nad how can we enter this field?

artinzareie
visit shbcf.ru