477

(Please don't lob rocks at me. I love Python.)

you are viewing a single comment's thread
view the rest of the comments
[-] abbadon420@lemm.ee 94 points 3 days ago

A lot of it is c in a python raincoat

[-] Amberskin@europe.pub 15 points 3 days ago

The underlining linear algebra routines are written in… FORTRAN.

[-] abbadon420@lemm.ee 5 points 3 days ago

I've never played with FORTRAN, but I've done some linear algebra with matlab. Matlab was interesting for the native handling if matrices. What makes FORTRAN so good at linear algebra?

[-] mkwt@lemmy.world 7 points 2 days ago

Matlab's syntax for matrices actually derives from Fortran. There's a lot of flexibility in Fortran's array features for

  • multidimensional arrays
  • arrays of indeterminate and flexible length
  • vectorized operations on arrays without explicitly writing loops.

Because Fortran does not have a pointer in the sense of C, the Fortran compiler is free to make several optimization that a C compiler can't. Compiled Fortran is often faster than C code that does the same thing.

[-] lime@feddit.nu 11 points 3 days ago

the main thing that makes fortran preferable to C is the way it handles arrays and vectors. due to different pointer semantics, they can be laid out more efficiently in memory, meaning less operations need to be done for a given calculation.

[-] LeninOnAPrayer@lemm.ee 5 points 3 days ago* (last edited 3 days ago)

Interesting. Is this a fundamental limitation of C or is it just more preferable and easier to use FORTRAN when implementing it?

Meaning could the same performance be achieved in C but most optimized libraries are already written so why bother? Or basically C can't achieve the memory optimization at all?

[-] lime@feddit.nu 8 points 3 days ago* (last edited 3 days ago)

you can get the same performance by using the restrict keyword in C.

basically, C allows pointer aliasing while fortran does not, which means C programs need to be able to handle cases when a value is accessed from multiple locations. fortran does not, so a lot of accesses can be optimized into immediates, or unrolled without guards.

restrict is a pinky-promise to the compiler that no overlapping takes place, e.g. that a value will only be accessed from one place. it's basically rust ownership semantics without enforcement.

[-] atx_aquarian@lemmy.world 3 points 3 days ago

That reminds me, I had a ride share driver named Blas, and I had to giggle and tell them about it.

[-] Reddfugee42@lemmy.world 19 points 3 days ago

Which can be ASM in a C raincoat

[-] Viking_Hippie@lemmy.dbzer0.com 23 points 3 days ago

Which can be ASMR depending on pronunciation and tone of voice.

[-] ImplyingImplications@lemmy.ca 6 points 3 days ago
[-] Ziglin@lemmy.world 2 points 3 days ago

Thank you I suppose?

this post was submitted on 15 May 2025
477 points (98.4% liked)

Programmer Humor

23326 readers
537 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS