Hacker News new | ask | show | jobs
by ok123456 244 days ago
People who use MATLAB use it for the toolboxes.

The language itself is awful.

2 comments

Matlab/Octave is great for numerical programs that perform within an order of magnitude of Fortran. If some things aren't fast enough, you can rewrite them in C or Fortran without too much trouble. If you're doing anything other than numerical computing, it's awful, and you should use a different language.

(Source: I did a PhD using a mixture of Octave for numerical stuff, Perl for text-processing and automation, and C++ for the parts that were too slow. Choose the right tool for the job.)

Modern Fortran is better all around. The compiler will check usage based on interface. It has a working and supported module system (unlike C++). A couple of openmp pragmas will parallelize it. Multidimensional dense arrays are first class objects. The compiler can emit code with array bounds checking. Keyword and optional arguments. Standardized C FFI. f2py inter-op with Python/numpy.

Most people encounter large FORTRAN IV or FORTRAN 77 heirloom codes, and assume that's what Fortran is like in 2025.

> The language itself is awful.

As a programming language freak, I must disagree... in what other programming language can you solve a linear system Ax=b in one line

    x = A\b
without any external libraries or imports, just with the base language?

I never used any official matlab "toolbox", but still love the language via the octave interpreter. It's so clean and straightforward!

> without any external libraries or imports

Why does this matter in the least? Like you must understand that this is a library call right? Like just put `import numpy as np` in your PYTHONSTARTUP and it's the exact same UX in python.

https://docs.python.org/3/using/cmdline.html#envvar-PYTHONST...

Well, in Julia, for one.
Also APL: b ⌹ A
In Python you can use a library, then it is: x = np.linalg.solve(A, b). But yeah, Octave is nice, because it stays very symbolic.
GNU Maxima.

Not a general purpose one, but good enough.

Also, qalc from libqalculate for trivial stuff.

In R, this is: x <- solve(A, b)