35 comments

  • stared25 minutes ago
    On the contrary, I think that well-designed general-purpose languages beat domain-specific languages. Even in the example given, in NumPy you can use np.array, but to make a fair comparison, use np.matrix.<p><pre><code> import numpy as np X = np.matrix([1, 2, 3]) Y = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) Z = Y * X.T W = np.hstack([Z, Z]) </code></pre> That way, we can extend our languages. If np.matrix is &quot;too many keystrokes&quot;, it can be imported as M, or similar.<p>X.T is as readable as X&#x27; - but on top of that, also extensible. If we want to add other operations, we can do so. Especially since transpose is a very limited operation: it only makes sense for vectors and matrices. In much of numerics (quantum physics, deep learning, etc.), we often work with tensors.<p>To make it clear, I agree with the main premise that it is important to make math readable, and thus easy to read and debug. Otherwise, it is one of the worst places for errors (numbers in, numbers out).<p>When it comes to matrix notation, I prefer PyTorch over NumPy, as it makes it easy to go from math on a whiteboard to executable code (see <a href="https:&#x2F;&#x2F;github.com&#x2F;stared&#x2F;thinking-in-tensors-writing-in-pytorch" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;stared&#x2F;thinking-in-tensors-writing-in-pyt...</a>).<p>Also, for rather advanced custom numerics in quantum computing, I used Rust. To my surprise, not only was it fast, but thanks to macros, it was also succinct.
  • mNovak13 hours ago
    As an engineer, I use Matlab (or rather, Octave the free equivalent) all the time. It&#x27;s really great for numerical computing and plotting. Most things &#x27;just work&#x27;, there&#x27;s a sizeable collection of packages, and I personally like how flexible the function inputs are.<p>Biggest drawback though is that it&#x27;s over-optimized for matrix math, that it forces you to think about everything as matrices, even if that&#x27;s not how your data naturally lies. The first thing they teach about performant Matlab code is that simple for-loops will tank performance. And you feel it pretty quickly, I saw a case once of some image processing, with a 1000x speedup from Matlab-optimized syntax.<p>Other things issues I&#x27;ve run into are string handling (painful), and generally OOP is unnatural. Would love to see something with the convenient math syntax of Matlab, but with broader ease of use of something like JS.
    • nallana13 hours ago
      @mNovak -- super helpful note! Thank you!<p>Author of RunMat (this project) here --<p>&gt; The first thing they teach about performant Matlab code is that simple for-loops will tank performance.<p>Yes! Since in RunMat we&#x27;re building a computation graph and fusing operations into GPU kernels, we built the foundations to extend this to loop fusion.<p>That should allow RunMat to take loops as written, and unwrap the matrix math in the computation graph into singular GPU programs -- effectively letting loop written math run super fast too.<p>Will share more on this soon as we finish loop fusion, but see `docs&#x2F;fusion&#x2F;INTERNAL_NOTE_FLOOPS_VM_OPS.md` in the repo if curious (we&#x27;re also creating VM ops for math idioms where they&#x27;re advantageous).<p>&gt; Would love to see something with the convenient math syntax of Matlab, but with broader ease of use of something like JS.<p>What does &quot;convenient math syntax of Matlab, but with broader ease of use of something like JS&quot; look like to you? What do you wish you could do with Matlab but can&#x27;t &#x2F; it doesn&#x27;t do well with?
      • dkarl8 hours ago
        Piggybacking on this comment to say, I bet a lot of people&#x27;s first question will be, why aren&#x27;t you contributing to Octave instead of starting a new project? After reading this declaration of the RunMat vision, the first thing I did was ctrl-f Octave to make sure I hadn&#x27;t missed it.<p>Honest question, Octave is an old project that never gained as much traction as Julia or NumPy, so I&#x27;m sure it has problems, and I wouldn&#x27;t be surprised if you have excellent reasons for starting fresh. I&#x27;m just curious to hear what they are, and I suspect you&#x27;ll save yourself some time fielding the same question over and over if you add a few sentences about it. I did find [1] on the site, and read it, but I&#x27;m still not clear on if you considered e.g. adding a JIT to Octave.<p>[1] <a href="https:&#x2F;&#x2F;runmat.org&#x2F;blog&#x2F;matlab-alternatives" rel="nofollow">https:&#x2F;&#x2F;runmat.org&#x2F;blog&#x2F;matlab-alternatives</a>
        • finbarr19874 hours ago
          Fair question, and agreed we should make this clearer on the site.<p>We like Octave a lot, but the reason we started fresh is architectural: RunMat is a new runtime written in Rust with a design centered on aggressive fusion and CPU&#x2F;GPU execution. That’s not a small feature you bolt onto an older interpreter; it changes the core execution model, dataflow, and how you represent&#x2F;optimize array programs.<p>Could you add a JIT to Octave? Maybe in theory, but in practice you’d still be fighting the existing stack and end up with a very long, risky rewrite inside a mature codebase. Starting clean let us move fast (first release in August, Fusion landed last month, ~250 built-ins already) and build toward things that depend on the new engine.<p>This isn’t a knock on Octave, it’s just a different goal: Octave prioritizes broad compatibility and maturity; we’re prioritizing a modern, high-performance runtime for math workloads.
    • queuebert13 hours ago
      &gt; Biggest drawback though is that it&#x27;s over-optimized for matrix math ...<p>I think this is what inspired the creation of Julia -- they wanted a Matlab clone where for loops were fast because some problems don&#x27;t fit the matrix mindset.
    • grandiego4 hours ago
      Yes, strings appear like an afterthought, and sadly the Octave version has slight incompatibilities which may be a PITA for any non trivial script which aims to be compatible.
    • hatmatrix7 hours ago
      It&#x27;s one of those languages that outgrew its original purpose, as did Python IMHO. So non-matrix operations like string processing and manipulation of data structures like tables (surprisingly, graphs are not bad) become unwieldy in MATLAB - much like Python&#x27;s syntax becomes unwieldy in array calculations, as illustrated in the original post.
  • lemonwaterlime14 hours ago
    There&#x27;s also Julia.<p>Earlier in my career, I found that my employers would often not buy Matlab licenses, or would make everyone share even when it was a resource needed daily by everyone. Not having access to the closed-source, proprietary tool hurt my ability to be effective. So I started doing my &quot;whiteboard coding&quot; in Julia and still do.
    • fph13 hours ago
      Precisely; today Julia already solves many of those problems.<p>It also removes many of Matlab&#x27;s footguns like `[1,2,3] + [4;5;6]`, or also `diag(rand(m,n))` doing two different things depending on whether m or n are 1.
      • hatmatrix7 hours ago
        An understated advantage of Julia over MATLAB is the use of brackets over parentheses for array slicing, which improves readability even further.<p>The most cogent argument for the use of parentheses for array slicing (which derives from Fortran, another language that I love) is that it can be thought of as a lookup table, but in practice it&#x27;s useful to immediately identify if you are calling a function or slicing an array.
      • freehorse7 hours ago
        Why is the `[1,2,3] + [4;5;6]` syntax a footgun? It is a very concise, comprehensible and easy way to create matrices in many cases. Eg if you have a timeseries S, then `S - S&#x27;` gives all the distances&#x2F;differences between all its elements. Or you have 2 string arrays and you want all combinations between the two.<p>The diag is admittedly unfortunate and it has confused me myself, it should actually be 2 different functions (which are sort of reverse of each other, weirdly making it sort of an involution).
        • BobbyTables26 hours ago
          What does it even mean to add a 1x3 matrix to a 3x1 matrix ?
          • freehorse6 hours ago
            This is about how array operations in matlab work. In matlab, you can write things such as<p><pre><code> &gt;&gt; [1 2 3] + 1 ans = [2 3 4] </code></pre> In this case, the operation `+ 1` is applied in all columns of the array. In this exact manner, when you add a (1 x m) row and a (n x 1) column vector, you add the column to each row element (or you can view it the other way around). So the result is as if you repeat your (n x 1) column m times horizontally, giving you a (n x m) matrix, do the same for the row vertically n times giving you another (n x m) matrix, and then you add these two matrices. So basically adding a row and a column is essentially a shortcut for repeating adding these two (n x m) matrices (and runs faster than actually creating these matrices). This gives a matrix where each column is the old column plus the row element for that row index. For example<p><pre><code> &gt;&gt; [1 2 3] + [1; 2; 3] ans = [2 3 4 3 4 5 4 5 6] </code></pre> A very practical example is, as I mentioned, getting all differences between the elements of a time series by writing `S - S&#x27;`. Another example, `(1:6)+(1:6)&#x27;` gives you the sums for all possible combinations when rolling 2 6-sided dice.<p>This does not work only with addition and subtraction, but with dot-product and other functions as well. You can do this across arbitrary dimensions, as long as your input matrices non-unit dimensions do not overlap.
          • quietbritishjim4 hours ago
            It means the same thing in MATLAB and numpy:<p><pre><code> Z = np.array([[1,2,3]]) W = Z + Z.T print(W) </code></pre> Gives:<p><pre><code> [[2 3 4] [3 4 5] [4 5 6]] </code></pre> It&#x27;s called broadcasting [1]. I&#x27;m not a fan of MATLAB, but this is an odd criticism.<p>[1] <a href="https:&#x2F;&#x2F;numpy.org&#x2F;devdocs&#x2F;user&#x2F;basics.broadcasting.html#general-broadcasting-rules" rel="nofollow">https:&#x2F;&#x2F;numpy.org&#x2F;devdocs&#x2F;user&#x2F;basics.broadcasting.html#gene...</a>
            • adgjlsfhk13 hours ago
              One of the really nice things Julia does is make broadcasting explicit. The way you would write this in Julia is<p><pre><code> Z = [1,2,3] W = Z .+ Z&#x27; # note the . before the + that makes this a broadcasted </code></pre> This has 2 big advantages. Firstly, it means that users get errors when the shapes of things aren&#x27;t what they expected. A DimmensionMismatch error is a lot easier to debug than a silently wrong result. Secondly, it means that julia can use `exp(M)` etc to be a matrix exponential, while the element-wise exponential is `exp.(M)`. This allows a lot of code to naturally work generically over both arrays and scalars (e.g. exp of a complex number will work correctly if written as a 2x2 matrix)
      • drnick113 hours ago
        I don&#x27;t think Julia really solves any problems that aren&#x27;t already solved by Python. Python is sometimes slower (hot loops), but for that you have Numba. And if something is truly performance critical, it should be written or rewritten in C++ anyway.<p>But Julia also introduces new problems, such as JIT warmup (so it&#x27;s not really suitable for scripting) and is still not considered trustworthy:<p><a href="https:&#x2F;&#x2F;yuri.is&#x2F;not-julia&#x2F;" rel="nofollow">https:&#x2F;&#x2F;yuri.is&#x2F;not-julia&#x2F;</a>
        • SatvikBeri12 hours ago
          &gt; Python is sometimes slower (hot loops), but for that you have Numba<p>This is a huge understatement. At the hedge fund I work at, I learned Julia by porting a heavily optimized Python pipeline. Hundreds of hours had gone into the Python version – it was essentially entirely glue code over C.<p>In about two weeks of learning Julia, I ported the pipeline and got it 14x faster. This was worth multiple senior FTE salaries. With the same amount of effort, my coworkers – who are much better engineers than I am – had not managed to get any significant part of the pipeline onto Numba.<p>&gt; And if something is truly performance critical, it should be written or rewritten in C++ anyway.<p>Part of our interview process is a take-home where we ask candidates to build the fastest version of a pipeline they possibly can. People usually use C++ or Julia. All of the fastest answers are in Julia.
          • pbowyer48 minutes ago
            &gt; Part of our interview process is a take-home where we ask candidates to build the fastest version of a pipeline they possibly can. People usually use C++ or Julia. All of the fastest answers are in Julia.<p>It would be fun if you could share a similar pipeline problem to your take-home (I know you can&#x27;t share what&#x27;s in your interview). I started off in scientific Python in 2003 and like noodling around with new programming languages, and it&#x27;s great to have challenges like this to work through. I enjoyed the 1BRC problem in 2024.
          • sbrother4 hours ago
            &gt; People usually use C++ or Julia. All of the fastest answers are in Julia<p>That&#x27;s surprising to me and piques my interest. What sort of pipeline is this that&#x27;s faster in Julia than C++? Does Julia automatically use something like SIMD or other array magic that C++ doesn&#x27;t?
            • jakobnissen2 hours ago
              I use Rust instead of C++, but I also see my Julia code being faster than my Rust code.<p>In my view, it&#x27;s not that Julia itself is faster than Rust - on the contrary, Rust as a language is faster than Julia. However, Julia&#x27;s prototyping, iteration speed, benchmarking, profiling and observability is better. By the time I would have written the first working Rust version, I would have written it in Julia, profiled it, maybe changed part of the algorithm, and optimised it. Also, Julia makes more heavy use of generics than Rust, which often leads to better code specialization.<p>There are <i>some</i> ways in which Julia produces better machine code that Rust, but they&#x27;re usually not decisive, and there are more ways in which Rust produces better machine code than Julia. Also, the performance ceiling for Rust is better because Rust allows you to do more advanced, low level optimisations than Julia.
            • adgjlsfhk13 hours ago
              The main thing is just that Julia has a standard library that works with you rather than working against you. The built in sort will use radix sort where appropriate and a highly optimized quicksort otherwise. You get built in matrices and higher dimensional arrays with optimized BLAS&#x2F;LaPack configured for you (and CSC+structured sparse matrices). You get complex and rational numbers, and a calling convention (pass by sharing) which is the fast one by default 90% of the time instead of being slow (copying) 90% of the time. You have a built in package manager that doesn&#x27;t require special configuration, that also lets you install GPU libraries that make it trivial to run generic code on all sorts of accelerators.<p>Everything you can do in Julia you can do in C++, but lots of projects that would take a week in C++ can be done in an hour in Julia.
          • drnick14 hours ago
            The C++ devs at your firm must be absolutely terrible if a newcomer using a scripting language can write faster software, or you are not telling the whole story. All of NumPy, Julia, MATLAB, R, and similar domain-specific, user-friendly libraries and platforms use BLAS and LAPACK for numerical calculations under the hood with some overhead depending on the implementation, so a reasonably optimized native implementation should always be faster. By the looks of it the C++ code wasn&#x27;t compiled with -O3 if it can be trivially beaten by Julia.
        • sundarurfriend13 hours ago
          As your comment already hints at, using Python often ends up a hodgepodge of libraries and tools glued together, that work for their limited scope but show their shaky foundations any time your work is outside of those parts. Having worked with researchers and engineers for years on their codebases, there is already too much &quot;throw shit at the wall and see what sticks&quot; temptation in this type of code (because they&#x27;d much rather be working on their research than on the code), and the Python way of doing things actively encourages that. Julia&#x27;s type hierarchies, integrated easy package management, and many elements of its design make writing better code easier and even the smoother path.<p>&gt; I don&#x27;t think Julia really solves any problems that aren&#x27;t already solved by Python.<p>I don&#x27;t really <i>need</i> proper furniture, the cardboard boxes and books setup I had previously &quot;solved&quot; the same problems, but I feel less worried about random parts of it suddenly buckling, and it is much more ergonomic in practice too.
          • wolvesechoes1 hour ago
            &gt; using Python often ends up a hodgepodge of libraries and tools glued together<p>At least it has those tools and libraries, what cannot be said about Julia.
            • forgotpwd1617 minutes ago
              What tools&#x2F;libraries you miss from Julia? Have you used the language or merely speculating?
        • MillironX8 hours ago
          &gt; I don&#x27;t think Julia really solves any problems that aren&#x27;t already solved by Python.<p>But isn&#x27;t the whole point of this article that Matlab is more readable than Python (i.e. solves the readability problem)? The Matlab and Julia code for the provided example are equivalent[1]: which means Julia has more readable math than Python.<p>[1]: Technically, the article&#x27;s code <i>will not</i> work in Julia because Julia gives semantic meaning to commas in brackets, while Matlab does not. It is perfectly valid to use spaces as separators in Matlab, meaning that the following Julia code is also valid Matlab which is equivalent to the Matlab code block provided in the article.<p><pre><code> X = [ 1 2 3 ]; Y = [ 1 2 3; 4 5 6; 7 8 9 ]; Z = Y * X&#x27;; W = [ Z Z ];</code></pre>
          • forgotpwd168 hours ago
            This snippet is also cleaner than one in article and more in spirit. Also the image next to whiteboard has a no-commas example.
        • jakobnissen2 hours ago
          Yes, Python code is indeed fast if you write it in C++... what a bizarre argument. The whole selling point of Julia is that I can BOTH have a dynamic language with a REPL, where I can redefine methods etc, AND that it runs so fast there is no need to go to another language.<p>It&#x27;s wild what people get used to. Rustaceans adapt to excruciating compile times and borrowchecker nonsense, and apparently Pythonistas think it&#x27;s a great argument in favor of Python that all performance sensitive Python libraries must be rewritten in another language.<p>In fairness, we Julians have to adapt to a script having a 10 second JIT latency before even starting...
          • wolvesechoes1 hour ago
            &gt; Pythonistas think it&#x27;s a great argument in favor of Python that all performance sensitive Python libraries must be rewritten in another language.<p>It is, because usually someone already did it for them.
        • kelipso8 hours ago
          Sometimes slower? No, always slower. And no one wants to deal with the mess that is creating an interface with C or C++. And I wouldn’t want to code in that either, way too much time, effort, headache.
        • forgotpwd168 hours ago
          &gt;I don&#x27;t think Julia really solves any problems that aren&#x27;t already solved by Python.<p>You read the article that compares MATLAB to Python? It&#x27;s saying MATLAB, although some issues exist, still relevant because it&#x27;s math-like. GP points out Julia is also math-like without those issues.
        • nallana13 hours ago
          In Julia, you explicitly need to still reason about and select GPU drivers + manage residency of tensors; in RunMat we abstract that away, and just do it for you. You just write math, and we do an equivalent of a JIT to just figure out when to run it on GPU for you.<p>Our goal is to make a runtime that lets people stay at the math layer as much as possible, and run the math as fast as possible.
    • dcanelhas12 hours ago
      I remember the pitch for Julia early on being matlab-like syntax, C-like performance. When I&#x27;ve heard Julia mentioned more recently, the main feature that gets highlighted is multiple-dispatch.<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=kc9HwsxE1OY" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=kc9HwsxE1OY</a><p>I think it seems pretty interesting.
      • shiroiuma8 hours ago
        Julia is actually <i>faster</i> than C for some things.
    • gmadsen5 hours ago
      simulink is the matlab moat ,not just general math expression
      • finbarr19874 hours ago
        Pictorus is a simulink alternative <a href="https:&#x2F;&#x2F;www.pictor.us&#x2F;simulink-alternative" rel="nofollow">https:&#x2F;&#x2F;www.pictor.us&#x2F;simulink-alternative</a>
    • a-dub6 hours ago
      julia is still clunky for these purposes! you can&#x27;t even plot two things at the same time without it being weird and there&#x27;s still a ton of textual noise when expressing linear algebra in it. (in fact, i&#x27;d argue the type system makes it worse!)<p>matlab is like what it would look like to put the math in an ascii email just like how python is what it would look like to write pseudocode and in both cases it is a good thing.
    • constantcrying13 hours ago
      Julia competes with the scientific computing aspect of matlab, which is easily the worst part of matlab and the one which the easiest to replace.<p>Companies do not buy matlab to do scientific computing. They buy matlab, because it is the only software package in the world where you can get basically everything you ever want to do with software from a single vendor.
      • wolvesechoes1 hour ago
        It is hard to explain that to people here.
      • moregrist5 hours ago
        In addition: Simulink, the documentation (which is superb), and support from a field application engineer is essentially a support contract and phone call away.<p>I say this as someone who’d be quite happy never seeing Matlab code again: Mathworks puts a lot of effort into support and engineering applications.
  • ubj12 hours ago
    Matlab is an great tool, if you can afford it.<p>It was a very unpleasant feeling when I graduated from my PhD and realized that most, if not all, of the Matlab scripts I had used for my research would now be useless to me unless I joined a company or national laboratory that paid for licenses with the specific toolboxes I had used.<p>I&#x27;m glad that a significant portion of tools in my current field are in open source languages such as Python and Julia. It widens access to other researchers who can then build upon it.<p>(And yes, I&#x27;m aware of Octave. It does not have the capabilities of Matlab in the areas that I worked in, and was not able to run all of my PhD scripts. I have not tried RunMat yet, but am looking forward to experimenting with it.)
    • drnick112 hours ago
      &gt; I graduated from my PhD and realized that most, if not all, of the Matlab scripts I had used for my research would now be useless<p>And this is why you should write free software and, as a scientist, develop algorithms that do not rely on the facilities of a specific language or platform. Nothing is more annoying than reading a scientific paper and finding out that 90% of the &quot;implementation&quot; is calling a third party library treated as a blackbox.
    • bsder8 hours ago
      &gt; And yes, I&#x27;m aware of Octave. It does not have the capabilities of Matlab in the areas that I worked in<p>Was there a specific reason for that? Or was it simply nobody wrote the code?
      • ubj8 hours ago
        Octave has not implemented all of Matlab&#x27;s functionality. You can see a list of Matlab functions that have not yet been implemented in Octave at the link below. It&#x27;s a long list.<p><a href="https:&#x2F;&#x2F;hg.savannah.gnu.org&#x2F;hgweb&#x2F;octave&#x2F;file&#x2F;tip&#x2F;scripts&#x2F;help&#x2F;__unimplemented__.m" rel="nofollow">https:&#x2F;&#x2F;hg.savannah.gnu.org&#x2F;hgweb&#x2F;octave&#x2F;file&#x2F;tip&#x2F;scripts&#x2F;he...</a><p>EDIT: If the original link above isn&#x27;t working, here&#x27;s a fairly recent archived version:<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20250123192851&#x2F;https:&#x2F;&#x2F;hg.savannah.gnu.org&#x2F;hgweb&#x2F;octave&#x2F;file&#x2F;tip&#x2F;scripts&#x2F;help&#x2F;__unimplemented__.m" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20250123192851&#x2F;https:&#x2F;&#x2F;hg.savann...</a>
      • kelipso8 hours ago
        You could say that no one wrote that code. But Matlab has serious packages in numerous engineering fields and it’s not anywhere close to easily replicable.<p>It’s like how open source will never replace Excel but probably worse because it’s multiple fields and it’s way harder to replicate it.
  • doawoo5 hours ago
    I want to come out and say that a long time ago at a startup we needed to generate a very particular type of analysis graph for a human operator to review in our SaaS.<p>and I just straight up installed GNU Octave on the server and called out to it from python, using the exact code the mathematician had devised.
    • drnick13 hours ago
      These days however with all the AI coding tools that are available, it probably makes more sense to just ask Claude to port the Matlab&#x2F;Octave script to Python and directly integrate it into your program. Numpy&#x2F;Scipy often provide drop-in replacements for Matlab functions, even the names are the same in some cases.<p>I have gone further and asked AI to port working but somewhat slow numerical scripts to C++ and it&#x27;s completely effortless and very low risk when you have the original implementation as test.
      • hatmatrix1 hour ago
        But then you lose the readability that is the core defense of MATLAB&#x2F;Octave. Ok so NumPy <i>is</i> readable, but less pleasantly so.
    • finbarr19875 hours ago
      Yeah, this is a pretty common pattern: use a domain-specific tool where it fits (Octave for the math), and a general language for the product glue (Python). Same idea as infra work — lots of teams would rather express intent in Terraform than build it in Rust, because a DSL can be a cleaner fit for the job.
    • grandiego5 hours ago
      For my thesis I did something similar: bash scripts to extract raw data from a Subversion repository, to be preprocessed with PHP scripts (now I would prefer Python but had more experience with PHP) for text extraction and csv output, and finally Octave did the math magic, generating tables and saving graphics in png format, ready for import into my Lyx document.
    • fithisux5 hours ago
      The most sensible thing I&#x27;ve heard this year.
  • themeiguoren12 hours ago
    Of the things matlab has going for it, looking just like the math is pretty far down the list. Numpy is a bit more verbose but still 1-to-1 with the whiteboard. The last big pain point was solved (<a href="https:&#x2F;&#x2F;peps.python.org&#x2F;pep-0465&#x2F;" rel="nofollow">https:&#x2F;&#x2F;peps.python.org&#x2F;pep-0465&#x2F;</a>) with the dedicated matmul operator in python 3.5.<p>Real advantages of matlab:<p>* Simulink<p>* Autocoding straight to embedded<p>* Reproducible &amp; easily versioned environment<p>* Single-source dependency easier to get security to sign off on<p>* Plotting still better than anything else<p>Big disadvantages of matlab:<p>* Cost<p>* Lock-in<p>* Bad namespaces<p>* Bad typing<p>* 1-indexing<p>* Small package ecosystem<p>* Low interoperability &amp; support in 3rd party toolchains
    • quietbritishjim4 hours ago
      &gt; Big disadvantages of matlab:<p>I will add to that:<p>* it does not support true 1d arrays; you have to artificially choose them to be row or column vectors.<p>Ironically, the snippet in the article shows that MATLAB has forced them into this awkward mindset; as soon as they get a 1d vector they feel the need to artificially make it into a 2d column. (BTW (Y @ X)[:,np.newaxis] would be more idiomatic for that than Y @ X.reshape(3, 1) but I acknowledge it&#x27;s not exactly compact.)<p>They cleverly chose column concatenation as the last operation, hardly the most common matrix operation, to make it seem like it&#x27;s very natural to want to choose row or column vectors. In my experience, writing matrix maths in numpy is much easier thanks to not having to make this arbitrary distinction. &quot;It&#x27;s this 1D array a row or a column?&quot; is just over less thing to worry about in numpy. And I learned MATLAB first, do I don&#x27;t think I&#x27;m saying that just because it&#x27;s what I&#x27;m used to.
      • D-Machine3 hours ago
        * it does not support true 1d arrays; you have to artificially choose them to be row or column vectors.<p>I despise Matlab, but I don&#x27;t think this is a valid criticism at all. It simply isn&#x27;t possible to do serious math with vectors that are ambiguously column vs. row, and this is in fact a constant annoyance with NumPy that one has to solve by checking the docs and&#x2F;or running test lines on a REPL or in a debugger. The fact that you have developed arcane invocations of &quot;[:,np.newaxis]&quot; and regular .reshape calls I think is a clear indication that the NumPy approach is basically bad in this domain.<p>You do actually need to make a decision on how to handle 0 or 1-dimensional vectors, and I do not think that NumPy (or PyTorch, or TensorFlow, or any Python lib I&#x27;ve encountered) is particularly consistent about this, unless you ingrain certain habits to always call e.g. .ravel or .flatten or [:, :, None] arcana, followed by subsequent .reshape calls to avoid these issues. As much as I hated Matlab, this shaping issue was not one I ran into as immediately as I did with NumPy and Python Tensor libs.<p>EDIT: This is also a constant issue working with scikit-learn, and if you regularly read through the source there, you see why. And, frankly, if you have gone through proper math texts, they are all extremely clear about column vs row vectors and notation too, and all make it clear whether column vs. row vector is the default notation, and use superscript transpose accordingly. It&#x27;s not that you can&#x27;t figure it out from context, it is that <i>having to figure it out and check</i> seriously damages fluent reading and wastes a huge amount of time and mental resources, and terrible shaping documentation and consistency is a major sore point for almost all popular Python tensor and array libraries.
    • amluto8 hours ago
      &gt; Autocoding straight to embedded<p>I used this twenty-something years ago. It worked, but I would not have wanted to use it for anything serious. Admittedly, at the time, C on embedded platforms was a truly awful experience, but the C (and Rust, etc) toolchain situation is massively improved these days.<p>&gt; Plotting still better than anything else<p>Is it? IIRC one could fairly easily get a plot displayed on a screen, but if you wanted nice vector output suitable for use in a PDF, the experience was not enjoyable.
  • NeroVanbierv13 hours ago
    For me, the main appeal to MATLAB was the REPL experience, allowing me to experiment with ideas and inspect results in the UI. Python notebook have bridged the gap a bit, but always require a combination of libraries (with different docs &amp; design choices) to write a single script.
    • cogman1012 hours ago
      Yup, for both Matlab and Maple the big feature was the Jupyter notebook experience right out the box. On top of that, at the time it had a pretty high number of math functions implemented.
  • sevensor11 hours ago
    &gt; The issue was never the syntax—it was the runtime. Why readable math still matters in a world aided by LLM-assisted code generation<p>I’m going to stop you right there. Matlab has 5 issues:<p>1. The license<p>2. Most users don’t understand what makes Matlab special and they write for loops over their arrays.<p>3. The other license<p>4. The other license<p>5. The license server<p>Mathworks seems to have set up licensing to maximize how much revenue they can extract with no thought given to how deeply annoying it is to use.
    • analog316 hours ago
      For me the friction of dealing with licenses would make it hard to fully integrate a commercial package into my routine. Commercial developers have to decide how they expect a product to be used, so they can allocate finite resources. This invariably imposes limits on users.<p>In my case, <i>trivial</i> uses are as important as high-visibility projects. I can spin up a complete Python installation to do something like log data from some sensors in the lab, while I do something in another lab, and have something going at my desk, and at home. I use hobby projects to learn new skills. I&#x27;ve played with CircuitPython to create little gadgets that my less technically inclined colleagues can work with. I encouraged my kids to learn Python. I write little apps and give them to colleage. I probably have a dozen Python installations running here and there at any moment.<p>This isn&#x27;t a slam on Matlab, since I know it has a loyal following. And I&#x27;m unaware of an alternative to Simulink, if that&#x27;s your bag. And Matlab might be doing the right thing for their business. My impression is that most &quot;engineering software&quot; is geared towards the engineer sitting at a stationary workstation all day, like a CAD operator. And this may be the main way that software is used. Maybe I&#x27;m the freak.
    • finbarr19879 hours ago
      That&#x27;s precisely the point(s), the runtime&#x27;s issues (closed source, cost, etc) are what is helping with the declining popularity of the language when really the language can be handy to people who work in math-heavy industries.<p>thankfully there are fast open source alternatives out there now, hint hint runmat ;)
  • ChaitanyaPatel12 hours ago
    For MATLAB, there exist many high quality free and&#x2F;r open source toolboxes from community and academia.<p>Also there are high quality free and&#x2F;or open source alternatives.<p>GNU Octave <a href="https:&#x2F;&#x2F;octave.org" rel="nofollow">https:&#x2F;&#x2F;octave.org</a> and Octave online <a href="https:&#x2F;&#x2F;octave-online.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;octave-online.net&#x2F;</a><p>Freemat <a href="https:&#x2F;&#x2F;freemat.sourceforge.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;freemat.sourceforge.net&#x2F;</a> (sadly no ongoing development)<p>Scilab <a href="https:&#x2F;&#x2F;www.scilab.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.scilab.org&#x2F;</a> and Scilab online <a href="https:&#x2F;&#x2F;cloud.scilab.in&#x2F;" rel="nofollow">https:&#x2F;&#x2F;cloud.scilab.in&#x2F;</a>
    • hatmatrix7 hours ago
      Indeed, there are many high-quality alternatives (sometimes described as &quot;MATLAB clones&quot; back in the day) that never gained bigger traction.<p>Among modern alternatives that don&#x27;t strictly follow MATLAB syntax, Julia has the biggest mindshare now?<p>GNU Octave, as a superset of the MATLAB language, was (is) most capable of running existing MATLAB code. While Octave implemented some solvers better than MATLAB, the former just could not replicate a large enough portion of the latter&#x27;s functionality that many scientists&#x2F;engineers were unable to fully commit to it. I wonder whether runmat.org would run up against this same problem.<p>The other killer app of MATLAB is Simulink, which to my knowledge is not replicated in any other open source ecosystem.
    • nallana12 hours ago
      Shameless plug for RunMat (we wrote this blog article, also an open source alternative for MATLAB):<p><a href="https:&#x2F;&#x2F;runmat.org" rel="nofollow">https:&#x2F;&#x2F;runmat.org</a>
      • readme8 hours ago
        glad I have your ear<p>as much as I love the meme in your post, it&#x27;s the reason I won&#x27;t be able to share it with work colleagues who use matlab every day<p>just something to consider
        • nallana8 hours ago
          Appreciate the comment actually! It&#x27;s good feedback -- we weren&#x27;t sure if it&#x27;s mixing work&#x2F;memes too much, and keeping our materials clean like engineering docs are probably a good way to go. We may edit it out of the post.<p>Cheers for the comment!
  • dwheeler13 hours ago
    Many people use Octave <a href="https:&#x2F;&#x2F;octave.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;octave.org&#x2F;</a> which is compatible (generally) with Matlab, supports this simple syntax, and is open source software. Indeed, I&#x27;ve taken at least one class where the instructor asked people use Octave for these kinds of calculations.
    • nallana12 hours ago
      Yep -- Octave was very helpful for me in school.<p>Octave is not particularly fast.<p>RunMat is very fast (orders of magnitude -- see benchmarks).
  • boscillator14 hours ago
    Interesting... I wrote a similar post about MATLAB&#x27;s syntax a while ago, and I still think MATLAB is one of the best calculators on the market.<p>RunMat is an interesting idea, but a lot of MATLAB&#x27;s utility comes from the toolboxes, and unless RunMat supports every single toolbox I need, I&#x27;m going to be reaching for that expensive MATLAB license over and over again.
    • nallana13 hours ago
      Yep! Makes sense. Though I think the cost of writing these toolboxes is lim --&gt; 0.<p>Will have a really solid rust inspired package manager soon, and a single #macro to expose a rust function in the RunMat script&#x27;s namespace (= easy to bring any aspects of the rust ecosystem to RunMat).
    • ModernMech11 hours ago
      It&#x27;s funny that you listed 1-based index as a strength, and another poster here lists it as a weakness. Goes to show there&#x27;s really no agreement when it comes to indexing!
  • nayuki2 hours ago
    I had a bad time with MATLAB. <a href="https:&#x2F;&#x2F;www.nayuki.io&#x2F;page&#x2F;matlab-language-pet-peeves" rel="nofollow">https:&#x2F;&#x2F;www.nayuki.io&#x2F;page&#x2F;matlab-language-pet-peeves</a>
    • D-Machine1 hour ago
      Glad to see this. MATLAB doesn&#x27;t even have consistent&#x2F;sensible syntax, or at least doesn&#x27;t have consistent syntax relative to almost all other programming languages in existence.
  • blt12 hours ago
    An underrated aspect of Matlab is its call-by-value semantics. Function arguments are copied by default. Python+NumPy is call-by-reference; mutations to array arguments are visible to the caller. This creates a big class of bugs that is hard for non-programmers to understand.
  • falcor8412 hours ago
    In this particular case, there was no need at all for the reshaping, and the result could have been achieved with just:<p><pre><code> Z = Y @ X W = np.c_[Z, Z]</code></pre>
  • tpoacher11 hours ago
    One small piece of feedback for the dev, since I see you&#x27;ve been replying to comments here.<p>I had to jump like 3 links and 4 pages down to figure out what runmat actually &quot;is&quot; &#x2F; &quot;does&quot;.<p>As someone who&#x27;s done their whole thesis using Octave this looks interesting.<p>I love Octave, it&#x27;s one of my favourite languages. And, for reasons I don&#x27;t understand even myself, I don&#x27;t like matlab that much (though I admit their documentation is excellent).<p>How would you &quot;sell&quot; runmat to someone like me?
    • finbarr198710 hours ago
      Thanks for digging in ;) We just released RunMat in August as an open-source, fast MATLAB runtime. The goal is to make it the fastest way to run math, period.<p>Coming from Octave, you&#x27;ll notice significant speedup advantages, you can see some of our benchmarks with it here <a href="https:&#x2F;&#x2F;runmat.org&#x2F;blog&#x2F;introducing-runmat" rel="nofollow">https:&#x2F;&#x2F;runmat.org&#x2F;blog&#x2F;introducing-runmat</a><p>Last month, we put out 250+ built-in functions and Accelerate, which fuses operations and routes between CPU&#x2F;GPU without any extra code&#x2F;memory management, i.e. no GPUarray.<p>We&#x27;re still flushing out the plotting function, but we&#x27;ll have updates to share around that and a browser version very soon.
      • tpoacher1 hour ago
        Why do you focus exclusively on matlab as your competitor posterchild?<p>I feel like you should be saying Matlab &#x2F; Octave wherever possible; especially since your target audience is far more likely to be the one that wants a &quot;faster Octave&quot; rather than a &quot;cheaper Matlab&quot;.<p>PS: Don&#x27;t trust github language stats; half of that code is octave specific, but still gets labelled as Matlab.
      • hatmatrix8 hours ago
        What&#x27;s the business model?
  • D-Machine4 hours ago
    Defending Matlab code in 2025 is like defending Emacs: it&#x27;s not that you don&#x27;t have <i>logically</i> good points, in many cases, it is just that you are so completely out of touch with modern advances, communities, and requirements that it isn&#x27;t even clear that you are speaking to anything more than what amounts to a rounding error.<p>EDIT: Specifically, it is extremely hard for me to think that anyone should be convinced to learn Matlab in 2025 - this seems to be a statistically useless and obviously soon-dying skill. Any logical arguments about what Matlab offers NOW seem to entirely ignore - what seems to me - this obvious practical reality.
    • faustlast3 hours ago
      &gt; Defending Matlab code in 2025 is like defending Emacs<p>I feel attacked.
      • D-Machine3 hours ago
        LOL. My friend, I sympathize deeply, and this was not the intention.
  • sansseriff12 hours ago
    When I read &quot;The honest truth: ...&quot;, the AI-generated alarm bells go off in my head. Whether the article is human written or not.
    • bonoboTP7 hours ago
      Seems like Claude to me.
  • esalman6 hours ago
    I dislike Matlab&#x27;s licensing and spaghetti style coding practices like anyone else, but there&#x27;s another reason python or other modern replacements are scorned at. There are some algorithm&#x2F;theorem implementations that will produce different results based on the platform and version you are using. With Matlab the chance of that happening is much much lower, if not zero.
  • habryka3 hours ago
    Alas, AI-written. Makes it much harder to trust.
  • NoahZuniga14 hours ago
    &gt; # We must reshape X to be a column vector (3,1)<p>&gt; # or rely on broadcasting rules carefully.<p>&gt; Z = Y @ X.reshape(3, 1)<p>Why not use X.transpose()?
    • fph13 hours ago
      Actually, I just tried Y @ X in Numpy and it works just fine.<p>It&#x27;s because in Python 1-dimensional arrays are actually a thing, unlike in Matlab. That line of code is a non-example; it is easier to make it work in Python than in Matlab.
      • ivansavz13 hours ago
        The result of `Y @ X` has shape (3,), so the next line (concatenate as columns) fails.<p>To make `Z` a column vector, we would need something like `Z = (Y @ X)[:,np.newaxis]`.<p>Although, I&#x27;m not sure why the author is using `concatenate` when the more idiomatic function would be stack, so the change you suggest works and is pretty clean:<p><pre><code> Z = Y @ X np.stack([Z, Z], axis=1) # array([[14, 14], # [32, 32], # [50, 50]]) </code></pre> with convention that vectors are shape (3,) instead of (3,1).
        • dgfl12 hours ago
          You do realize how many arbitrary words and concepts that are nowhere to be found in “conventional” math there are here, right?<p>I know what all of these do, but I just can’t shake the feeling that I’m constantly fighting with an actual python. Very aptly named.<p>I also think it’s more to do with the libraries than with the language, which I actually like the syntax of. But numpy tries to be this highly unopinionated tool that can do everything, and ends up annoying to use anywhere. Matplotlib is even worse, possibly the worst API I’ve ever used.
        • Aerolfos12 hours ago
          &gt; To make `Z` a column vector, we would need something like `Z = (Y @ X)[:,np.newaxis]`.<p>Doesn&#x27;t just (Y @ X)[None] work? None adding an extra dimension works in practice but I don&#x27;t know if you&#x27;re &quot;supposed&quot; to do that
          • ivansavz4 hours ago
            It seems `(Y @ X)[None]` produces a row vector of shape (1,3),<p><pre><code> (Y @ X)[None] # array([[14, 32, 50]]) </code></pre> but `(Y @ X)[None].T` works as you described:<p><pre><code> (Y @ X)[None].T # array([[14], # [32], # [50]]) </code></pre> I don&#x27;t know either RE supposed to or not, though I know np.newaxis is an alias for None.
    • wodenokoto13 hours ago
      Isn’t X.T still valid? I believe it’s been phased out in pandas but still around in numpy.
    • boscillator13 hours ago
      It doesn&#x27;t seem to be the example here, but I know that X.transpose() does not work if X is a (3,) and not a (3,1), which is the common way to present vectors in numpy. MATLAB forcing everything to be at least rank-2 solves a bunch of these headaches.
    • ivansavz13 hours ago
      I thought so too, but it doesn&#x27;t seem to work since X has shape (3,).<p>This seems to work,<p><pre><code> Z = Y @ X[:,np.newaxis] </code></pre> thought it is arguably more complicated than calling the `.reshape(3,1)` method.
    • Aerolfos12 hours ago
      &gt; Why not use X.transpose()?<p>Or just X.T, the shorthand alias for that
  • nromiun4 hours ago
    I remember my first encounter with Matlab. Some YouTuber was building a toy rocket and he was simulating it in Matlab (Simulink). He just put in the weight of the rocket and it gave him the trajectory, apogee, flight time etc. It was like magic to a beginner like me.<p>You can do the same thing in other languages but it won&#x27;t be built in like that.
  • kiernanroche8 hours ago
    I went to college a few miles from Mathworks&#x27;s global headquarters.<p>They came to speak at my school and described open source alternatives (Python in particular) as the biggest threat to MATLAB.<p>I think if they open-sourced the MATLAB runtime and embraced a model similar to Canonical or Red Hat where users paid for support or integrations, they&#x27;d make more money. But it&#x27;s hard to get there from where they are now.
  • eliasbagley13 hours ago
    Its been a while since I worked with MATLAB and others. Whats up with GNU Octave these days? IIRC thats what folks were championing 10 years ago when anyone was talking about the problems with MATLAB.
    • mike-the-mikado13 hours ago
      I sometimes run my MATLAB code under Octave (generally needs some minor tweaks to catch up with a few new features) and while I don&#x27;t hit bugs, I find it is much slower.<p>I think the MATLAB JIT compiler is probably difficult to match.
  • bachmeier6 hours ago
    Okay, but what&#x27;s your business model? We&#x27;ve all been down this road before.
    • finbarr19875 hours ago
      We don’t have a finalized business model yet, right now the focus is getting the open-source runtime solid, useful and very fast. If we add paid stuff later, it’ll be around optional services (not taking features away from the core runtime), and we’ll be clear about it up front.
  • fithisux14 hours ago
    Matlab code is fantastic for prototypes and for getting a &quot;feeling&quot; before doing the expensive optimal implementation.
    • nallana12 hours ago
      If the rewrite is for performance, ideally the logic capture = the thing executing in production.<p>Cases where a JIT running would conflict with requirements notwithstanding (e.g. HIL with strict requirements and whatnot)...
  • waterTanuki4 hours ago
    Most, if not all the points made in the article, seem to stem from a sense of &quot;we need to optimize the code to be readable by mathemeticians, not programmers&quot; which is fair, depending on what you&#x27;re doing. But goes a bit overboard with the safety argument, which we&#x27;ve seen much better ROI by focusing on memory safety, rather than abstract mathematical proofs.<p>In fact, the entire safety argument is undermined by the author themselves:<p>&gt; The engine is closed source. You cannot see how fft or ode45 are implemented under the hood. For high-stakes engineering, not being able to audit your tools is a risk.<p>What&#x27;s the point of optimizing your code to be easy for physicists&#x2F;mathematicians to read for safety, when you can&#x27;t even verify what the compiler will produce?<p>I suppose it basically boils down to whether your orgs engineering is run by academics or software engineers, but Matlab doesn&#x27;t really <i>do</i> anything that python can&#x27;t for free. And python is more accessible, has more use cases, and strong academic support already.
  • DrNosferatu12 hours ago
    Prototype in Matlab, production in C.
  • lorenzohess13 hours ago
    Simulink is great for Rapid Prototyping
  • Iwan-Zotow12 hours ago
    So this is basically jax?
  • Vaslo12 hours ago
    Every data scientist and statistician who joins our team is always happier moving to Python or R away from Matlab after using it for a bit. I guess it’s ok for academia but at the two large companies I have worked at, no one is using Matlab or complaining about it being gone.
  • stonecharioteer6 hours ago
    At GKN Aerospace, I was hired predominantly to migrate the team off Matlab and rewrite everything in Python. There was pushback from OEMs who wanted their specs to be in Matlab but eventually everyone folded. Having to need 2 licenses to run on 2 cores was horrible UX IIRC. I&#x27;m glad I learnt from that experience.
  • KingMob4 hours ago
    Ehhh, as someone who did cognitive neuroscience in grad school and wrote non-stop Matlab 20 years ago, this is correct but insufficient. The toolbox and licensing situation sucked, but that&#x27;s not why I hated it.<p>At the time, we had massive issues with using Matlab with large fMRI&#x2F;EEG&#x2F;MEG data sets, and attempts to write naive matrix-based versions of code would occasionally blow up memory consumption, and turn a 3-week analysis into a <i>50-year</i> analysis.<p>So, yeah, I had to replace a decent amount of pretty matrix code into gnarly, but performant, for loops. Maybe the situation has improved since then, but I don&#x27;t care to find out.<p>---<p>Want strings? You had your choice of cells or 2D char matrices? Who ever thought char matrices were a good idea? strfind() vs findstr()? Even after years of Matlab, I had to double-check the docs to recall which one I wanted.<p>---<p>Anything to encourage reliability or assist scientists in their workflows, like built-in version control? Nope. Or basic testing support for your ad hoc statistical functions? No.<p>I guarantee there&#x27;s a ton of Matlab code that produced biased&#x2F;wrong results, and nobody knows because it produced numbers in the expected range, and nobody ever thought to check it.<p>Mathworks was in a unique position to improve scientific code quality, and did nothing with it.<p>---<p>Matlab really excelled at only two things: matrix math and making pretty plots. As soon as you needed to do anything else, it was unbelievably painful, and that&#x27;s where my personal dislike came from.
    • D-Machine4 hours ago
      Have to agree, working with fMRI and MRI data. Matlab is nearly impossible to debug or even find basic workarounds for problems in this domain, in comparison to Python, because of how closed and niche Matlab is, and the lack of community and trustworthy documentation, or ability to write sensible code with performant for loops.<p>In my experience, those arguing for the value of Matlab are mostly 50+ years old, or are in an extremely niche industry using something like e.g. Simulink or other highly-industry-specific tooling, in which case it seems the considerations are irrelevant to something like 99.5% of the modern population.<p>Matlab will clearly be dead and irrelevant otherwise, in a short amount of time and in almost all domains.<p>EDIT: And few things indicate an out-of-touch &#x2F; cookie-cutter or almost-certainly p-hacked neuroscience paper like the use of MATLAB. It is a smell for incompetent legacy research in this domain.
      • KingMob11 minutes ago
        &gt; It is a smell for incompetent legacy research in this domain.<p>Wild to hear. At the time, almost everybody in the field used it. The then-dominant fMRI package (SPM) and EEG&#x2F;MEG package (Fieldtrip) were both open-source Matlab. (I think I knew one prof who used BrainVoyager, and that&#x27;s because he hired a former BV employee as an RA.)
  • DrNosferatu12 hours ago
    What about SciLab?
    • fithisux5 hours ago
      Excellent piece of technology. Now in 2026.0 version.<p>It gets better and better all the time.
  • constantcrying13 hours ago
    What a terrible article. The author does not understand matlab at all and he is also either lying or totally clueless.<p>Matlab is successful because of precisely one thing, which nobody has replicated. It offers a <i>complete</i> software environment from one source.<p>Nowhere else can you get scientific computing, a GUI toolkit, a high level embedded software environment, a HiL&#x2F;SiL toolkit, a model based simulation environment, a plotting and visualization toolkit and so much more in a single cohesive package. Nobody else has any offering that comes even close.<p>&gt;The engine is closed source. You cannot see how fft or ode45 are implemented under the hood. For high-stakes engineering, not being able to audit your tools is a risk.<p>This is just a lie. Open matlab and you can inspect all the implementation details behind ode45. It is not a black box.<p>&gt;The Cloud Gap: Modern engineering happens in CI&#x2F;CD pipelines, Docker containers, and cloud clusters. Integrating a heavy, licensed desktop application into these lightweight, automated workflows is painful.<p>Another lie. See: <a href="https:&#x2F;&#x2F;de.mathworks.com&#x2F;help&#x2F;compiler&#x2F;package-matlab-standalone-applications-into-docker-images.html" rel="nofollow">https:&#x2F;&#x2F;de.mathworks.com&#x2F;help&#x2F;compiler&#x2F;package-matlab-standa...</a> Mathworks has done everything hard for you already. I do not understand why the author feels the need to authoritatively speak on a subject he absolutely does not understand.
    • bloaf9 hours ago
      &gt; Nowhere else can you get scientific computing, a GUI toolkit, a high level embedded software environment, a HiL&#x2F;SiL toolkit, a model based simulation environment, a plotting and visualization toolkit and so much more in a single cohesive package. Nobody else has any offering that comes even close.<p>Mathematica does. Arguably Mathematica is even more cohesive because it&#x27;s not split up into &quot;feature sold separately&quot; packages.
    • nospice12 hours ago
      You&#x27;re too generous here. This has all the hallmarks of an AI-generated article, and HN is once again duped into passionately arguing with something that took zero effort to produce.
    • hatmatrix8 hours ago
      How about fft? If you open fft.m, you get just a commented file that ends with<p>% Built-in function.<p>If the algorithm is implemented as a compiled mex function, then you cannot inspect its details.
    • nallana12 hours ago
      &gt;&gt; The engine is closed source. You cannot see how fft or ode45 are implemented under the hood. For high-stakes engineering, not being able to audit your tools is a risk. This is just a lie. Open matlab and you can inspect all the implementation details behind ode45. It is not a black box.<p>How do I see the .c files &#x2F; trace how `ode45` will execute on my machine? Can I see the JIT&#x27;s source code?<p>--<p>Entitled to your view, but clearly difference of opinion here. From perspective of open &#x2F; closed source -- maybe for you it qualifies as open source, but I can&#x27;t follow the logic chain, so to me MATLAB is not open source.
      • constantcrying12 hours ago
        I explicitly pointed out what the article was lying about.<p>&quot;You cannot see how fft or ode45 are implemented under the hood.&quot; is a totally false statement. You <i>absolutely</i> can do exactly that. This is not a matter of opinion. Right click the function and open it, you can view it like any other matlab function.<p>&gt; From perspective of open &#x2F; closed source -- maybe for you it qualifies as open source<p>Matlab is obviously not open source. Who said anything about that? The article claims you can not audit ode45, that is false and it seems pretty embarrassing for someone speaking authoritatively about matlab to make such basic claims, which every matlab user can disprove with two clicks. Every single matlab user has the ability to view exactly how ode45 is implemented and has the ability to audit that function. This is not a matter of opinion, this is a matter about being honest about what matlab offers.
        • nallana12 hours ago
          Seeing in MATLAB code how ode45 is implemented != how the thing is running on the machine. That&#x27;s a very small top slice.<p>But okay -- as I mentioned, you&#x27;re entitled to your views!
          • hatmatrix8 hours ago
            fft.m is the more obvious example of the closed source algorithm here. You open it and it just says<p>% Built-in function.<p>The algorithms written in C and compiled by mex are the &quot;built-in&quot; ones that are not viewable.
    • dgfl12 hours ago
      They’re trying to sell their product, which seems like a new language + runtime inspired by matlab. Reinventing Julia perhaps? It will be missing all the things that make matlab unique, as you point out.
      • nallana12 hours ago
        It&#x27;s open source &#x2F; free. But yes, of course we want people to try it and get value from it.
  • gdevenyi9 hours ago
    No. Just no.<p>Terrible HPC integration.<p>Proprietary runtime.
    • esalman6 hours ago
      I worked at three large universities where folks ran Matlab processes on HPC all the time.
      • D-Machine3 hours ago
        &quot;I have direct experience of universities doing horrifyingly wasteful computations&quot; is not the ringing endorsement for Matlab you might think it to be...<p>Granted, I&#x27;ve seen Python horrors on university HPC clusters too, but at least there are libraries and clear documentation (e.g. Lightning, Ray, etc) for how to properly manage these things. Good luck finding that with Matlab.