5 ms·
"But people in the fields of computer vision, artificial intelligence, machine learning, concurrent data-structures and others – very smart, very forward thinki
by wes-exp 13y ago
"But people in the fields of computer vision, artificial intelligence, machine learning, concurrent data-structures and others – very smart, very forward thinking people – would pick Java or C/C++ nine times out of ten"
This may be a reflection of the fact that people who write code, but are not really programmers, lack sufficient domain knowledge (in the field of programming) to choose anything other than the "default" choice. It's harder to go off the beaten path when one knows little about the surroundings. That doesn't mean the path is optimal though.
- RogerL 13y agoC++ gives you fine grained control over the machine, which is something these fields often need (I am in the computer vision/AI segment). When you are using Intel Intrinsics, MKL, etc., just to get enough performance to barely do the job, you can't afford to throw that control away to garbage collection, reference counting, and all that. I use higher level languages for the things they are great for - the 'batteries included' features of Python, for example, or the functional+high availability of Erlang. And they are great languages for what they are designed to be used for. Not every C/C++ programmer (I say with considerable understatement) is an obsolete, corporate hack unaware of the state of the art in computer languages and tools. We wrote your compilers, your languages, your VMs, your toolsets, your OS, your math libraries, your, well, you get the idea :)
- wes-exp 13y agoTwo points: 1) The issue at hand is about the choice between mainstream languages vs. niche languages. Your reply does not address this and sidetracks into a discussion about native languages vs. high-level languages. 2) Even assuming every decision to use C++ was an optimal one, what about the decision to use Java?
- pron 13y agoThis may be a reflection of the fact that people who write code, but are not really programmers, lack sufficient domain knowledge (in the field of programming) to choose anything other than the "default" choice. While this could sometimes be the case, that's mostly because they have other things to think about. Spending time on choosing and learning new languages (with their libraries and communities) can be rightly considered a manufacturing optimization. That's really important to people whose job it is to manufacture at scale, but not necessarily to those dreaming up new components. These are two different jobs. When you deal with manufacturing, you're expected to spend a lot of energy on picking the absolute best tools. But if you're handcrafting something completely different from most of what's out there, your tools and process don't matter as much. The path doesn't need to be optimal if you're the first to take it to a new destination. If you don't know if you can even get to where you're going – or if there's anything there at all – spending money on the best shoes is a premature and unnecessary optimization.