"It is cross platform, making code easy to share (assuming the other people have forked out for the not-so-cheap license)." This made me laugh. Again about the IDE: you need to explicity tell MATLAB what arguments your function accepts (c'mon mathworks, we know you can do better than that).Also the "+" folder names are dumb (pardon my french) Poor handling of paths/namespaces: It can be very annoying to keep track of MATLAB's path what bugs me in particular is the fact that you need to import everything IN EVERY SINGLE METHOD instead of one import for the whole class.One release per year is too much for a programming language (although I do understand that it is not meant to be a programming language in the classical sense of developing and mantaining long-term projects).Since there's no code highlighting and types are dynamic (and there's no way to point out the type you'll be using on a variable) it gets >ugly<. The IDE: no decent code highlighting, no methods/class refactoring, no way to find where your function is being used, no concept of projects until R2019 (which is shitty since it will take a decade for everyone to migrate) and god forbid you try to handle a multi-class application.I may be biased from my OOP Java background, but what bugs me the most is the poor OOP support. OK, adjusting BarWidth seems to help somewhat. In that case changing painters to zbuffer solved the problem, but not this time.
(I call that a bug.) In the worst case a few bars are only half as wide as the widest. However, with TightInset I was able to improve my old crop_figure. MATLAB doesn't provide a crop-figure function (Windows platforms).MLINT could at least have given me a warning. The Mathworks calls MATLAB a high level language and ask me to handle this "feature" of PRINT. OK, I hadn't made sure "all" units were set to normalized before exporting/printing. Handle graphic objects of the Trellis Display are dislocated on the printout.I have to create the strip before the bar graph (or better use UISTACK). OK, the order in which axes are created is important. Adjusting the positions doesn't really help. The "Trellis strip" above the bar graph interferes with the box of the bar graph.Some elements of the Trellis Display are not displayed on screen.Another failure to integrate functionality: validatestring can handle abbreviated inputs nicely, but if you use it as a validation function for inputParser the information as to which possible input whas given is lost, and you have to call it again on the parsed results.I can work round this with a wrapper function that catches the error but integrated design would have avoided the need. my input could be empty, or a row vector of length 3). That means that you can't combine two calls to it into a single expression for a validation function (e.g. For example validateattributes always throws an error for invalid inputs, rather than returning a result. The functions don't work nicely together.The documentated functionality appears to be the same, so there was no need for the change, but this is the biggest cause of users of old versions to run into trouble with my code on the FEX. There was an absurd change of name of one of the methods of inputParser from addParamValue to addParameter.Given that there are validation functions, there's no need for this.
For example, required arguments must precede optional arguments must precede name-value pair arguments. Despite the complexity and apparent power, there are silly limitations.I haven't done any testing, but I wonder about the overheads: all that object, anonymous function and cell array construction and access.