4 ms·
Other than MATLAB being closed and very expensive. What is wrong with it?
by sjtrny 13y ago
Other than MATLAB being closed and very expensive. What is wrong with it?
- bambam12897 13y agoBoth issues are solved by Octave... which doesn't require the bifurcation of the community of people writing new code.
- sjtrny 13y agoOctave is still quite primitive in comparison to MATLAB unfortunately. I think it will be some time before it reaches the level of MATLAB.
- rcxdude 13y agoOctave is hampered by the fact that it's still basically the same language as MATLAB without any of the reasons you put up with using MATLAB (the toolboxes).
- bambam12897 13y agoWhile the language definitely has it's problems (I'm not a fan of the syntax at all), I think dropping it for something marginally better like R is a little silly. So many man hours have been put into writing MATLAB/Octave code - redoing it seems like mostly a waste. I don't know if you have similar experiences, but I often find that I want to use X feature in MATLAB in combination with Y feature in R and there isn't any easy way to do it. The bifurcation of coding efforts is vastly more frustrating than some bad/inconsistent syntax. The toolboxes are great. I haven't used them much, but I feel like a lot of the time you can get away without using them. If you really need them, then it's not unreasonable to pay a license for the documentation and robustness - which you won't get in open source most of the time. But like.. that's just my opinion man =)
- ibrahima 13y agoIt's really awkward to write large programs in MATLAB IMO. It just sucks as a programming language. The object oriented parts make no sense and it feels like they were bolted on as an afterthought.
- traviscj 13y agoThey were.
- kilburn 13y agoOne of the main caveats of MATLAB can be better understood by trying to concatenate a few strings (something you sometimes must do to output stuff). You look around and find the strcat function. Nice, this thing should just concatenate whatever stringy thing I throw into it. Well, sorta, kinda: http://www.mathworks.es/es/help/matlab/ref/strcat.html http://www.mathworks.es/es/help/matlab/ref/strcat.html > combinedStr = strcat(s1,s2,...,sN) horizontally concatenates strings in arrays. Inputs can be combinations of single strings, strings in scalar cells, character arrays with the same number of rows, and same-sized cell arrays of strings. So you can throw a bunch of different string-like stuff and everything will be concatenated. A bit strange but okay. However, there's more: > If any input is a cell array, combinedStr is a cell array of strings. Otherwise, combinedStr is a character array. Ouch. So you can build your program, test it only with non-cell-array arguments, and later on someone trows in an extra thing to concatenate (or uses a cell array to define the output separator).... and that changes the output type of the function! But that's not the only side-effect! It truns out that > For character array inputs, strcat removes trailing ASCII white-space characters: space, tab, vertical tab, newline, carriage return, and form-feed. For cell array inputs, strcat does not remove trailing white space. Oh yeah, you also get different "concatenation" rules when these types change. And that's even before discussing why on earth would a "strcat" function remove trailing spaces from within the stuff you tell it to concatenate... TL;DR: What is wrong with matlab is that it is designed to write one-liners that probably perform what you want. This is achieved by an endless stream of tweaks in the basic language's functions that automagically try to do "what you probably want". As a result, it is an extremely compact, easy to write for language when the tweaks work, but an utterly terrible experience when the magic doesn't work that makes you feel like walking through a minefield.