5 ms·
It seems that octave has been overtaken (in mindshare) by python/numpy. Why is that the case?
by supahfly_remix 10y ago
It seems that octave has been overtaken (in mindshare) by python/numpy. Why is that the case?
- xapata 10y agoPython is general-purpose and more people use it. There are many reasons, but the preferential attachment model is sufficient to explain your observations, in this comparison.
- thanatropism 10y agoThe short answer is "scikit-learn".
- supahfly_remix 10y agoCan you please give the longer answer? I don't understand what you mean. What does scikit-learn have that octave doesn't? (Asking out of ignorance)
- CydeWeys 10y agoIt's commonly featured in machine learning MOOCs. Sometimes things win mindshare for reasons other than feature sets.
- hprotagonist 10y agoand/or pandas, opencv, seaborn, bokeh. or R.
- GFK_of_xmaspast 10y agoOctave is basically a not-as-good-but-free version of matlab, and matlab is an abomination. See forex: http://archive.is/tCo6B http://archive.is/tCo6B
- Jach 10y agoDid Octave ever have a larger mindshare? It always seemed like the cheapskate's Matlab substitute, but if you know enough Matlab where you might consider a substitute, you probably have a Matlab license already. (Or like me a need to run on an embedded Linux while you work on a python port + a distaste for proprietary software...) Anyway, my thought on why numpy seems more widespread is simple: efficiency. Even Matlab code gets rewritten if it needs to be used for something intense, and Matlab has many more optimizations than Octave to get away with sloppy coding. Python+numpy is pretty easy even for a non-programmer to write (at least compared to C++ or whatever a DSP wants you to use) and even sloppily done is generally fast, plus it has a great and large community. But both Matlab and Octave are great (at least if you use octave-forge) for prototyping and doing a lot of domain specific things python/numpy/scipy don't support out of the box. Matlab especially has a lot of neat GUI helper tools. Meanwhile R is over in its own world where if you're doing anything in that domain it's a questionable choice not to take advantage.
- geokon 10y agoWhile R is superficially very similar - having used both, my impression is that it's actually not for the same use-cases as Matlab/Octave. Matlab is primarily for linear algebra, while R is primarily for data-frame manipulation (which is more like SQL). So while they both can do the others job, things get clunky really fast
- alexhutcheson 10y agoOut of curiosity, what are the pain points you run into using R for linear algebra? I've found it's not too bad for the basic things I've used it for, but my needs admittedly weren't very complex.
- wenc 10y agoThe problem with Octave for most of its life was it never had a very good GUI, and that made it hard for university departments to adopt as course software. I know we tried to push Octave in our department, but it just never took off. That, plus the Mathworks offered some pretty good educational pricing. Octave also never had the span of toolboxes that MATLAB had. With MATLAB, you could always find fairly usable toolboxes that covered most engineering computation needs. Octave was on par with MATLAB on some fronts, but it rarely exceeded MATLAB capabilities. And it was worse than MATLAB on tooling maturity. People hate The Mathworks for charging an arm and leg for its software, and for breaking backward compatibility, but most people will admit the MATLAB environment is pretty polished and seamless compared to open-source offerings in the same space. So far no one has mentioned Scilab (http://www.scilab.org/ http://www.scilab.org/). Scilab is a much a better MATLAB alternative than Octave, though Scilab code is less compatible with MATLAB that Octave code.
- HerraBRE 10y agoSomething you didn't mention, which I suspect is a major factor in why promoting FOSS alternatives proves surprisingly difficult in education. I remember when I was in university students were acutely aware that tools like PhotoShop, Microsoft* and MATLAB were used in businesses. I doubt this has changed. Even if superior Free options had been available, many of them would still have opted for the "safe" proprietary options because they wanted to be sure they could get work and felt (rightly or wrongly) that it was important they could put the right product names on their resumés.
- pm90 10y agoLike other have said, the #1 reason is probably just being part of the python ecosystem. But there were other reasons as well: there has been a big push in academia where MATLAB was used extensively to use Python when it became available (because its free and open source; but also many licensing restrictions around MATLAB). So there has been a significant investment in the python/numpy ecosystem from both academics and industry players who don't want to deal with these licensing issues (e.g. Oil and Gas companies).
- nuntius 10y agoMatlab has always been a quirky language. It has good libraries for common math operations, good visualization tools, good documentation, and toolboxes available for many special tasks. There are a number of common pitfalls, with well-known workarounds, that cannot be fixed without breaking backwards compatibility. The performance of a "for loop" is usually dog slow (some special cases were optimized recently). You often spend hours figuring out how to vectorize your code so it runs decently fast. OOP and other techniques have been bolted on in a workable but unusual way, and they are not widely used. Licensing costs add up. People looking for a free Matlab replacement often gravitate to a full replacement, rather than a clone. In the past, this meant learning something like C++, a significant hurdle to migration. Python is generally seen as a much better general-purpose language than Matlab. It is building a much larger developer community. It is no harder to learn than Matlab, and it supports similar interactive development. Tools like numpy start adding easy support for Matlab's core strengths. Python is free, even in commercial deployments. Matlab's primary competitor used to be Excel. Python is emerging as a very real threat. Outside of the core Matlab user base, preference for Python (or Go or ...) is building fast.
- SandB0x 10y ago> The performance of a "for loop" is usually dog slow (some special cases were optimized recently). You often spend hours figuring out how to vectorize your code so it runs decently fast. A similar story for Python and NumPy on this point, mitigated by NumPy's elegant broadcasting rules. Agree with everything else!
- BeetleB 10y ago>A similar story for Python and NumPy on this point Not as similar. When I was in grad school and encountered NumPy, I ported over my Matlab code to NumPy. It was hard to vectorize and so I had an explicit for loop (in both code bases). NumPy ran 7x faster. Did not really drill down to whether it was the loop itself or the operation in it, but I suspect it was the loop itself. Matlab really has a slow for loop.
- 10y ago
- lukaslalinsky 10y agoThe scientific libraries for Python have gotten so good that Octave doesn't really have a chance, unless you are just interested in running some (old) MATLAB code and can't get MATLAB itself. This is really all about the libraries and frameworks, rather than the language. And with Jupyter notebooks you get a great UI which is something Octave never had.
- tavert 10y agoOctave has a GUI nowadays which is pretty good, but a bit late to make much difference.