The One App You Need On Your Resume If You Want a Job At Google
HughPickens.com writes Jim Edwards writes at Business Insider that Google is so large and has such a massive need for talent that if you have the right skills, Google is really enthusiastic to hear from you — especially if you know how to use MatLab, a fourth-generation programming language that allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, Java, Fortran and Python. The key is that data is produced visually or graphically, rather than in a spreadsheet. According to Jonathan Rosenberg , Google's former senior vice president for product management, being a master of statistics is probably your best way into Google right now and if you want to work at Google, make sure you can use MatLab. Big data — how to create it, manipulate it, and put it to good use — is one of those areas in which Google is really enthusiastic about. The sexy job in the next ten years will be statisticians. When every business has free and ubiquitous data, the ability to understand it and extract value from it becomes the complimentary scarce factor. It leads to intelligence, and the intelligent business is the successful business, regardless of its size. Rosenberg says that "my quote about statistics that I didn't use but often do is, 'Data is the sword of the 21st century, those who wield it the samurai.'"
Statisticians is not now, nor will ever be a "sexy" job. Maybe you need a thesaurus or just stop trying to hype up articles.
Doesn't Jonathan Rosenberg know that 99% of the statistics is wrong, including this one?
hilarious
Ugh, this reads like a job ad.
When I moved from Matlab to Python three years ago, I saw a massive speed increase of my methods. Also I no longer have to decide whether or not to shell out more cash for the statistics package, it's all there!
Looking back at my old Matlab code also makes me cringe a bit about the syntax of that language.
Every experiment which ends in a big bang is a good experiment.
I used Matlab extensively in upper level mathematics courses as an undergrad from 1993 to 1995. I was surprised people don't know much about it or that Wolfram Alpha comes from the same company and even accepts Matlab syntax.
Data is the sword of the 21st century, those who wield it well, the Samurai.
So, data is a weapon used against us?
And those that wield it are our new feudal lords?
At least we know how Googles Senior management really feels about things.
MatLab is an old, crufty, feature-creeped script engine that I try to hold myself away from as much as I can. As a researcher and academic (got up to post-doc), Matlab is indeed ubiquitous in academia, but it's mostly due to entrenched positions. I see fewer and fewer people using Matlab these days, and that's a good thing.
Matlab is by all means not a fourth-generation programming language: it is procedural just like Fortran, which it supplanted in academia, but it does not have type-checking as C, it does not have OO support as C++, it does not do away with semicolons as end-of-line markers like Python; true, it has some advance features like OO and some functional programming, but (almost) nobody uses them, and most Matlab code is a horrible cruft made by self-not-so-well-taught academics. There is nothing in Matlab you cannot do better in Python with scipy, numpy, matplotlib and pandas. Or with declarative PLs like Modelica.
Matlab is also known for outrageous prices, leveraging on the fact their customer base are universities with big pockets and small administrative brains, and large corporations: they split their code base in many small chunks, and for each you need to pay more and more: as the saying goes, In Matlab you cannot do shit unless you buy a licence for the Toilet Paper toolbox.
Long story short: Matlab is the Perl of academia.
Victims of 9/11: <3000. Traffic in the US: >30,000/y
Really, calling it an app is like calling a Ferrari Enzo a bicycle. Matlab is a tool that is used for data analysis; when it is described as an "app" in the modern sense it is being classified with angry birds and other such smartphone rubbish.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Python has obsolesced Matlab. There are even Matlab to Python cross-compilers and packages that allow Matlab to work like a Python library.
Long story short: Matlab is the Perl of academia.
I disagree. I have been in a variety of academic or academic-associated roles in the past couple decades and I can tell you from my experience that
Perl is the Perl of academia. Matlab is mostly used for undergrad instruction; researchers roll their own solutions mostly in Perl, with occasional ventures into Python, Java, Ruby, or C++ as needed.
Although you are certainly correct on Matlab having outrageous prices. In my current position if I wanted to buy a license myself my government/academic discount still places the cost at over $2k. Thankfully everyone working under me does their coding in languages whose code can be manipulated and run for free.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Hardy-har-har-har.
What about a free clone of Matlab, Octave? Is that good enough? The language itself is just as terrible and, I guess the graphics are not as convenient but I have not encountered anything that can be done in Matlab that cannot be reproduced readily in Octave. It also seems that my engineering friends use Matlab as a cutch for poor programming skills (`So, do we start this loop at 1 or 0? Lets try and see ... ' --- I heard that a couple of days ago from my collleague).
Agree. I use Python with open source packages like scipy, numpy, matplotlib and others, to achieve almost the same thing as Matlab.
Also the language (Python) is much cleaner.
If Pandora's box is destined to be opened, *I* want to be the one to open it.
Surely Google needs custodians, too. Or security. Or gardeners.
Granted, most of this can be contracted out. But if I were cleaning toilets I could still say, "I work at Google" and not "I work for Generic Contracting Services LLC."
--Jim (me)
Google is so large and has such a massive need for talent that if you have the right skills, Google is really enthusiastic to hear from you
Well color me shocked. Is the army looking for people who can accurately fire rifles and follow orders? What about the FAA and air traffic controllers?
Whoever wrote that and whichever (copy) editor let it through need to reevaluate their life choices.
It depends heavily on your field. In physics I'm used to everything being done in idl, fortran, Matlab C or python, with only the last two growing. The only place I've seen perl in the last half dozen projects I worked on was for server administration stuff, used by a small subset of people in charge solely of administering computers.
What bugged me about Matlab are the things that should be easy, but aren't. Subplots? Sure, easy enough. What about subplots with a different colour map for each plot? Nope. You can do it, but it's a third party extension. There are lots of little niggles like this, particularly around visualisation, that are annoying when you're paying thousands of dollars for a product. Particularly when they're all doable in Matplotlib without any effort...
We were told at the start of a physics degree, that they never cared how good our initial knowledge of physics was. Physics can always be taught, but mathematics is much more fundamental and important to understand. The same goes for this. You can always learn a new tool, but if you don't know what to do with it then you're out of luck. I fail to see why Google wouldn't hire a competent statistician (of which there are very few) if they only knew Python or R.
As an aside, I thought most stats schools use R almost exclusively these days (some are moving to Python)? Matlab is the engineering pet.
Expertise in MatLab is like expertise in Word(TM) or Excell(TM). It suggests that the "expert" has only a shallow interest in programming. Matlab enables you to easily manipulate matrices and make some pretty plots. But it is an ugly constraining language and you end up with ugly code and ugly habits if you use it too much. In the past, when I heard news from Google I thought that the managers there really understood the mathematics, technology, economics and sociology of their business. This news is really disturbing.
This is probably more an ad for Matlab than for Google. People in Google, like in other companies, much more often use Python and Java than Matlab, and rightly so - Matlab the wrong tool for the job, pretty much for any job. Python is a much better tool for data analysis, for example. Only the academic world is locked into Matlab, for some reason, but even that is changing fast, with Matlab so badly disadvantaged. Show good data analysis skills in any language, preferably Python, and the current job market is your oyster.
Otherwise it would mean 'continue where you left off'
In my country we call that document that lists your qualification and achievements a CV
I work at a scientific institute and the license costs of Matlab quickly explode if you need something beyond basic functionality. Since we work on the public's money, we haven't bought into Matlab.
Almost by itself, all scientists and engineers standardized on Python and NumPy/SciPy/Matplotlib. There's a couple of people using Octave, the open source Matlab alternative, but that's very limited right now.
8 of 13 people found this answer helpful. Did you?
I know several really capable people that left Google, because of bureaucracy, corporate greed, incompetence, and general lack of vision. Google has become an ordinary large enterprise. And they do not even pay that well.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Octave is a hugely better option. I once used 128 instances of Octave on a cluster to run something that the computer center only had 5 matlab licenses for. Running matlab on a cluster is just stupid.
Oh, and if you care, Octave is as compatible with matlab as matlab is with itself. Every time you upgrade matlab you have to deal with broken things. Octave is not bug-for-bug compatible with matlab; it's better. Hugely better.
1) By the time you learn it, it won't be hot anymore.
2) It's all about experience. Don't take my word for it, look at the job ads. Learn something all you want, if you don't have five years experience in it, your knowledge is useless.
3) These articles about what's "hot" are just standard corporate propaganda. IT employers always want people chasing their tails, studying everything, just so they have a larger labor pool.
4) Don't get constantly distracted trying to learn what is supposedly "hot" at the moment, just learn anything useful, and be very good at it. Being very good at anything useful is far more valuable than a superficial knowledge of the latest fad.
5) These articles don't tell you anything more than they tell everybody else in the world. Learning whatever is not going to give you any competitive advantage.
All JMHO, of course.
Disclosure: I worked in IT for over 30 years. I have held several jobs, at several companies. I have been through the hiring process a lot.
Any compiler, let alone language, has quirks that can encourage bad behavior in bad programmers.
H-1b
Publishing this just while we have a poll on favorite clickbaits, how appropriate!
I've used Matlab for 10 years. I do not enjoy its syntax, but it's fast at what it does (matrix math) and has a huge library of tools built in that are also quite fast. It's also very cheap for academics, which is why it has such a stronghold there. People who say "switch to C or Python" for huge immediate speedups rarely know what they are talking about - they only projects I know of that tried that found that their code (again, matrix heavy) ran slower, not faster. With a lot of optimizing and the right libraries, yes, it is possible. But for most Matlab users their time is mostly spent developing, so that would be a poor tradeoff.
It's much more pleasurable to write or read python (or lisp (or smalltalk)) code, but you lose the kitchen sink. Here's a quick example: printf. Yes, it's ugly. And takes a little while to learn. But, it's very good at formatting text, and has all the options you need, want, or will ever want. Well, matlab is a language filled with printf style functions for every kind of data visualization you could want.
That said, TFA sounds like a load of crap. Anybody in google want to share what really goes on? I'm sure it depends a lot on which group you are in - machine vision and AI surely use a lot of matlab, whereas search probably never heard of it.
You lost me at the third word of your title. Telling people that MatLab is an "App" is one of the worst things you could do in an article informing people about it. Stop trying to simplify terms for computer illiterate people. Take your writing more seriously.
"Data is the sword of the 21st century, those who wield it the samurai."
That's the douchiest way of saying "knowledge is power" that I have ever heard.
Ah I see now. Last year was Internet of things. This year was wearables. Next year will be big data.
Better get my elevator hype pitch ready.
Merely having access to a Turing-complete machine is enough to encourage bad behavior in a lot of programmers.
Around here (engineering department of Fortune 500 company that makes real things, not web apps), MATLAB is god.
It's like.. I can hardly imagine a person who isn't a MATLAB expert could have any useful input on an engineering matter.
Everything can be done inside MATLAB, and it's mostly fast and elegant. I like to think of it as the best parts of Fortran, C and JavaScript all mixed together :-)
See: http://abandonmatlab.wordpress.com/
Speaking from experience as an ex-physics undergrad who still kept up with a few friends who went on into physics MScs and PhDs, I was surprised to hear that the most popular language at the time was Fortran (and usually not the 95 version...). A few lucky ones could use C++ or Python or even Fortran 95.
Matlab was used for undergrad lab courses (with the professors distributing old copies of the software gratis, not really mentioning whether it was legal or not!) and was... okay at it. Doing plots could get tricky with error bars and the language had a lot of idiosyncrasies, but it worked and since all provided code was in Matlab you didn't have much of a choice in the matter. The funny bit was that the lab techs and professors were not aware that Matlab had derivative functions, so they asked people to do it all manually (and still wanted them to do that when I told them about it, though I personally kept on using them!).
Maybe you could get a Bangladeshi visa and just spend a couple years going to college there?
MATLAB is like any other toolkit -- you can write clean code with it or you can write junk. In that way it's like Perl. You can write horrid Python as well. Scipy/numpy can go a long way toward replacing MATLAB for calculations. matplotlib sucks once you move beyond making the most basic plots; matlab's figure plotting sucks too but at least you can get at the java underneath it to make things work for animations and image display. There are a lot of 3rd party toolboxes which are wound into MATLAB which nobody is porting to Python -- and if you are in academia, working on preliminary analysis for a grant application and considering whether using an existing toolbox or re-implementing it's a no-brainer. Nobody is going to fund you to re-implement an existing solution. Also, by definition you are working on the application so there's no money until you get a fundable submission.
I guess it comes down to this: why are you computing? If you are using a computer to solve problems then you use the tools which best hit the needs of your domain. If you are using a computer as a source for a programming job then re-implementing things is a place you can make money. I'm not saying that re-implementing is bad -- it's a chance to do things better, but often it's a swap of bugs-you-know for bugs-you-don't-know. As I told a friend's Aspy teenage son, "If you make your living focused purely on the tech you are replaceable and can be outsourced; if you figure out how to solve problems and happen to use a computer to do it you'll be much more valuable." Being Aspy it was completely lost on him as that would mean communicating with people to learn about problems rather than reading FAQ's. If the best way to solve a problem is with clay tablets moved by carrier pigeon then that's what people will do.
I think Google should be forced to use SAS.
That way, they will struggle to effectively use the data they're collecting against us.
I understand wanting data scientists but Matlab is terrible.
The presence or absence of semi-colons is not really an important factor in choosing a language. Yes, there's shitty MATLAB code out there by self-taught people. But if those people were self-taught in Python, then they'd be producing shitty Pyhton code instead. You can't judge a language by the code quality of its inexperienced users. You can write crap in anything.
I've work with both MATLAB and Python and I see MATLAB has having various advantages. It has excellent syntax for matrix manipulations--much nicer than numpy. It has huge collection of highly optmised functions that generally work very quickly. I do a lot of image processing and when I ported my MATLAB code to Python it generally ran much slower. I spent ages on Googling and talking to people in forums. I couldn't get it to run faster. In MATLAB it just worked quickly with no extra effort on my part.
With MATLAB you get a huge collection of algorithms at your fingertips. They're generally very well tested and the syntax is consistent throughout. The documentation is excellent, too. Python, on the other hand, is a network of libraries which often have rather different syntax to each other. It's common for version updates to lead to regressions.
soylentnews.org
Technically, Matlab is a fourth generation programming language. However, the fourth-generation programming languages started to come into the scene in the early 1980's and onwards. The earlier examples of 4GLs are much uglier than the latter examples.
R is a huge cleanup of Matlab in many ways; however, R has its own wrinkles from a language design (structure of the text on a page) point of view. It also has its wrinkles from a language implementation (how that text eventually does something) point of view. The problems when the design and the implementation are tightly coupled exist in both MatLab and R. You can only get performance out of those products if you have a lot of special knowledge about items that are not expressed in the actual written program.
What is amazing to me is that both Matlab and R are designed to do statistical analysis. Computer science is technically a branch of discrete mathematics. One would think that a person designing a programming language for a mathematician was likely a mathematician. Why would he focus only on the statistics match and completely ignore the types of mathematical analysis to make the typed text input into a better language?
They don't want MatLab experts, they want people who are experts with statistics. Who cares if you use Python, R, MatLab, whatever? They're just looking for big data number crunchers with statistics expertise and would not be picky. (Of course, the way things are now, someone with a PhD in statistics who put Octave on a resume would probably be turned down by HR.)
And when did MatLab become an "app"? I want to vomit - is there an app for that?
I really would like to have more of those data mining experts rather fall on their sword than accept dishonor. Like subverting the Constitution they have been sworn to serve.
Or spit on a "Do no Evil" motto they have rallied to.
But as it stands, the leading role model for statisticians in the data extraction business would be the weasel at best, KZ guard at worst.
Think of the children.
Will bring about the destruction of mankind 1000% faster than if this corporation had never existed.
It's the most complete opensource Matlab-like tool
What about R? Its name is synonymous to data mining and statistics...
I don't know what Rosenberg's angle is, but MATLAB knowledge is not required, nor is it a big advantage. Google's preferred programming languages are C++, Python, and Java. If you're into big data, machine learning, or statistics, your best bet is probably to learn NumPy and Matplotlib, not MATLAB (however, if you do know MATLAB, switching over to Python isn't all that difficult).
A match made in hell!
Hey KID! Yeah you, get the fuck off my lawn!
My favorite for this is an oldie but goodie. Macsyma or now Maxima. Best of all, it is free.
Moreover, it should be the algorithms and techniques which are and should be important. Most of us can cobble together a program with a GUI. I spent a lot of time studying things like Kalman Filters, and have concluded that there is no such thing as one size fits all or that it is possible or even desirable to parametrize additional features and forecast enhancements. There are a lot of formulations which lead to implementation differences which spill all over the code.
Recently, I was reading Mandelbrot's work on chaos. It seems that the biggest critiques of new formations for modeling chaos are that it is not easy to standardize the representations of the models.
Boo-hoo, mommy, my math and philosophical formulations break down and reality is really strange.
I'm surprised no one mentioned scilab (http://www.scilab.org/) as a matlab alternative.
One of the biggest advantages I've found is the amount of, typically free, 3rd party software available.If you combine Matlab in a search w/almost any STEM subject you're likely to get a useful hit or two.I collected several toolboxes at work but more often than not found a free version what I was looking for via a simple search.
so the "Dept. of Don't Be Evil" can plot their evilness growth curve.
Table-ized A.I.
I've used Matlab academically for about half a year now, and that most anybody (but for scientists and mathematicians operating solely on huge numeric matrices, maybe) uses it is rather shocking to me. The only good thing I can really say about Matlab is that it's made me a better programmer in _other_ languages. Sometimes when you're forced to do something so horribly wrong, the right way of doing it leaps out at you. It's like being forced to ride a unicycle, and suddenly realizing why the motorcycle was invented. Not to say that it doesn't have some very advanced features; it's not a simple beast by any means and -can- do some amazing stuff, but it seems to do them so.. weirdly, and often ridiculously slowly, that it's got that crufty feeling of legacy software with stuff just stapled on all over it.
I'm hopeful about http://www.julialang.org/ the Julia language project and think it's worth at least keeping an eye on in the future.
And of course that douchy saying should be "Data are the sword of the 21st century, those who wield them the samurai."
No only is it redundant, because a better, shorter saying is available, but it perpetuates an attack against English.
matplotlib sucks once you move beyond making the most basic plots; matlab's figure plotting sucks too but at least you can get at the java underneath it to make things work for animations and image display. There are a lot of 3rd party toolboxes which are wound into MATLAB which nobody is porting to Python
Nobody is going to fund you to re-implement an existing solution. Also, by definition you are working on the application so there's no money until you get a fundable submission.
Seems like the "better solution" is unknown (cannot be determined, because there is apples on one side and "empty space waiting for oranges to fill it" on the other), because "nobody is porting to Python" and "at least you can get at the Java underneath."
Perhaps if some more "Aspys" were being funded and encouraged, this would be less of an issue :/
but often it's a swap of bugs-you-know for bugs-you-don't-know.
True, but 1) writing your own tools and libraries one can argue you know the shortcomings and limitations better than pulling in some outside code and *surprise* something doesn't work as expected. Or the joy of dealing with outside releases. Praying "upstream" is stable/predictable/sensical/still around sometimes works and sometimes doesn't.
Theoretically (minus age you last looked at the code, complexity, etc.) you might be "more familiar" with in-house code than outside code, warts and all.
"The devil you know" can be argued for or against re-implementing. Also depends if you already have "reimplemented" or in-house/NIH code sitting around or not to start with.
2) this applies to applications as well. If you are just writing an application ASAP and cobbling together existing libraries, you may just as well find writing your own tools and libraries would have been quicker and more robust in the long run for getting that application going. Especially if a similiar application is needed later, or you do things properly and components can be re-used.
EVEN when using third-party libraries, any sufficiently large/complex "application" code should arguably prompt creation of SOME re-usable libraries and not just be an entity unto itself.
Straightforward "main()" (or equivalent) code can/should just be simple calls to outside libraries more or less that do all the heavy-lifitng, but I find it incredibly frustrating how many "applications" are not as modular and abstracted as they should be, because the "designer" rushed (or was paid to rush, completely understandable -- less so for other things) and crammed lots of library code in with their application logic so any routines/classes/etc. that one wishes could be re-used elsewhere must carefully be picked apart from the whole. For some cases, it is faster and less buggy to just do a re-implementation than to pick apart pieces that are too tightly coupled/"integrated"
completely lost on him
Yep. I don't think you are wrong, but it goes both ways.
Sufficiently complex applications SHOULD generate more libraries, EVEN if you are mostly re-using already-existing code and building on top of it. I will agree, time/money/employers don't always see things this way.
I think the proper balance is key, and as you said, depends on who holds the purse strings what is "right."
As an "Aspy" tending person (using your example of attitude to developing, not personality-type things), I cannot stress how frustrating it is to see bad designs be pushed through, when you can see the writing on the wall, by billion-dollar companies who are WELL funded and (from my armchair quarterback seat) in LITTLE TO NO danger of having to scrape by "agilely" but instead of doing the smart thing and building something re-usable that will last even 3-5 years BY DESIGN, you get a rushed, barely-limping "application" that ends up surviving 10 years (despite a rewrite being planned ahead of time in 3 years) because the code is so poor (or has devolved enough) that everyone knows
Long story short: Your comment is mostly BS.
What you say might be true in some academic fields, but don't generalize that to all of them. MATLAB is used extensively in computer vision.
|type-checking| - who cares? for prototype code, this is not always desirable (if you care, perform a check with the CLASS function)
|OO| - I use it. My colleagues use it. When you are passing around large images, you can get MATLAB to do pass by reference with various OO techniques
|horrible cruft| - again, BS... there is plenty of nice toolboxes (http://www.vlfeat.org, http://vision.ucsd.edu/~pdollar/toolbox/doc/, I could list more...)
|better with python| - *if* there was an IDE that competed with the "MATLAB experience" I might agree to some level; however, the MATLAB debugger, cell mode, publish feature, numerous toolboxes, and fantastic documentation make it a better solution for a lot of people
Often times, employee time is more valuable than computation time, and MATLAB allows many people to get things done quickly. If things are really that slow, use MEX... it is a fine solution.
I agree with the outrageous cost... The student cost is not bad though. I'd rather eat that cost than many textbooks.
+1, as a Google employee I'm very surprised to see this. Very few people use Matlab (though I know someone who knows someone who does, so I suppose it's not unheard of). It's less common than R or Python (+NumPy, Pandas, etc.). And of course all of those are for just playing around--big data is petabytes which simply doesn't fit on a single machine... If the only language you know is Matlab you better have some other amazing expertise to draw one.
Yep. I still shudder at some of the matlab atrocities I had to deal with as a phd and researcher. A truly horrid bloated language that positively encourages dodgy hacks and bad style.
But everyone else uses it, so I had little choice short of reimplementing every algorithm I needed.
And re the article: I know Matlab well, have a phd in machine learning that dealt heavily with stats, and am proficient in a good half dozen other languages (inc c++ obviously), yet I can't even get a response to job applications at google.
I've worked in Matlab (doing DSP), but it's one butt ugly language. It's like FORTRAN with braces, and "global" only works sort of half. And its symbolic manipulation feels like an afterthought. Even Javascript is a better language. And for statistics, why not use R?
Pro tip: if you want to try your hand at Matlab: it's horribly expensive, but there are free clones available: Octave (http://en.wikipedia.org/wiki/GNU_Octave) and Scilab (http://en.wikipedia.org/wiki/Scilab). I prefer the latter, but be sure to check the list of differences with Matlab.
I am (or was) a physicist, and I used Mathematica, C++ and C in that order. Plus shell scripts to glue things together (OK, fine, sometimes I used Python to glue things together). Mathematica (to me) is a kind of ideal programming language in that it makes easy mathematical/analytical things easy and hard things possible.
Of course, if you don't know what you're doing, your solution is going to be slow. A nice feature of Mathematica is that it's so easy to use that the clueless can actually get working code out even if it goes a hundred times slower than C++. An expert can beat that down to a factor of a few. Do you need that last bit of speed? Then great, Mathematica was a fast-prototyping tool that you can use to verify your optimized C++. Most of the time, the human time you save will turn out to be more important than the computer time you lose.
I became a consultant recently (applications of machine learning to big data). After 15+ years of working almost exclusively in Matlab, I switched to javascript/nodejs to get a 'real' programming language under my belt, a language relevant to the web. The fact was, unless I was in academia or a big company, I could not afford Matlab.
Which is interesting, as there is now a slight class barrier for entry to Google ie. you have to have gone to an institution that could afford the licencing.
And no ... Octave, Scilab, etc. are not good alternatives, though Python is (sadly, it's dead slow). Promising is Julia, but it is very very young.
"Consensus" in science is _always_ a political construct.
The Matlab language has evolved in a questionable way, software licenses are problematic and harming portability, but the biggest deal after having seen it used at various places, is that Matlab code becomes unmaintainable very fast (this is even more true with Simulink, but I won't digress).
Matlab is 100% good for one thing: accessing already existing Matlab code; which happens when dealing with research papers because students have been fed with free Matlab licenses since a young age.
Matlab is also good for early prototyping, because of the toolbox and the interactivity (it's like the Excel of R&D).
But for that, today you get the same with other platforms/languages; Octave and Scilab are good, but have the same "engineering" issues ; Python for example (could be true about R/Julia/...) will get you "further" in no time.
My advice to anybody: keep the number of Matlab SLOC low, rewrite Matlab code to something else (with appropriate docs) whenever you have figured out your algorithm!
The quote 'Data is the sword of the 21st century, those who wield it the samurai.' is a bad metaphor. I'll let the cracked authors explain why.
http://www.cracked.com/article...
Samurai Were Actually Embarrassed of Their Swords
Oh, come on. This, at least, just has to be bullshit. A quick Google image search of "samurai" returns a gazillion results, 99 percent of which depict the famed warriors with sword in hand. There are drawings about them using swords. There are photos. Hell, pajamas, katanas, and weird hairstyles were their whole thing: Samurai damn well lived by the sword. What else did they have?
Actually ...
Yes, the samurai did have an ancient tradition centered around a weapon. However, it sure as shit wasn't the sword. In fact, ignore every movie and video game about samurai, because they only carried swords as awkward last resort weapons.
Kyuba no michi, "the way of the horse and bow," was there centuries before any semblance of Bushido. It's exactly what it says on the tin: Samurai were all about flinging arrows at peasants from horseback. It makes sense, really -- they were professional soldiers, and in that line of business you quickly learn that only idiots fight the enemy at stabbing distance. Bows were revered over swords to the extent that many Japanese nobles actually downplayed their swordsmanship. After all, pointing out how great your sword skills were was basically announcing that you're a terrible archer. And saying "I'm a terrible archer" was more or less like saying "I'm neither a man nor a warrior."
The introduction of firearms in the 16th century finally killed the samurai supremacy as mounted archers. As they left the battlefield and settled for a new life as bureaucrats and officials, their formerly reviled swords started taking on actual importance as elaborate status symbols. And because bows weren't really an option anymore, the sword became the go-to weapon of the honorable, sword-wielding, bushido following and completely fictional samurai they retroactively invented to feel better about their crummy desk jobs.
Maybe it's an unintentionally good metaphor. Big data is the new useless but symbolic catchphrase that you use to make your company look modern.
"Follow me" the wise man said, but he walked behind.
Yes! The value of being able to do do something meaningful with all that data is crucial to success. It may drive innovation.
...it does not have OO support as C++, it does not do away with semicolons as end-of-line markers like Python; true, it has some advance features like OO and some functional programming...
Another AC already aptly addressed most of your list of complaints, though he failed to note that you contradicted yourself with respect to OO within a single sentence. With respect to "crufty", it has had exception handling with try-catch since at least R2007b, and plenty of other features have been added to make it easier to write clean, maintainable scripts.
Additionally, while your post implies that you have seen a lot of MatLab code, you somehow missed that semi-colons are not statement terminators. Try it the next time you have access to MatLab. Create a simple m-file script, put the same calculation using different variable names on two different lines, one with the ending semi-colon, one without, then run the m-file within the MatLab REPL (I forget its proper name). The ending semi-colon just tells MatLab to output the calculated value to the MatLab window, nothing more, and you can see this plainly based on the different variable names on each line. You should have known this if you had actually worked with even a modicum of MatLab script. You should also refund some of your mod points ("+5, Interesting", my ass).
- T
You might have noted I wrote, "OO support as C++", where I meant "well thought-out OO support". There is OO in Matlab, but it's just like claiming Fortran has OO support. Technically true, but added as an afterthought, and most code out there does not use it.
Why yes you could write without them, but then you would get an echo on every assignment on the prompt. No sane person would do that in production code. In practice, all statements in M-files need to be semicolon-terminated.
FYI I was on Matlab/Simulink several years (before moving to Scilab, Octave and C++), and I actually held a course in Matlab for undergrads at a Max Planck Institute when I worked in Germany.
Victims of 9/11: <3000. Traffic in the US: >30,000/y
You might have noted I wrote, "OO support as C++", where I meant "well thought-out OO support". There is OO in Matlab, but it's just like claiming Fortran has OO support.
Fair enough. I took "as C++" to mean "as in other languages such as C++" rather than the particular way C++ does OO. I strongly prefer C++ for most things, but around here holding up C++ as "well thought-out OO" is an unpopular view. We are in the minority on that.
Why yes you could write without them, but then you would get an echo on every assignment on the prompt.
Please accept my apology; I got it backwards with semi-colons in MatLab script. My meager defense is that it has been a little while since I've written any m-files, but I'm embarrassed at misremembering such a simple thing.
- T