[FoRK] The collapse of the .net ecosystem
J. Andrew Rogers
andrew at jarbox.org
Sun Jun 21 10:58:47 PDT 2015
> On Jun 21, 2015, at 1:07 AM, Stephen D. Williams <sdw at lig.net> wrote:
> I meant "server-side web app C++". For actual heavy lifting, of course C++ is always key. I am surprised by how much of Hadoop, Spark, and similar systems and apps, even for ML, are all Java.
A decade ago the requirements were different and the Java bandwagon was in full effect despite the limitations. The justification for Java on the server was easy portability. This was further enabled by the relative lack of sophistication (or need for sophistication) of server-side architectures back then. Generic portability was pretty adequate when Hadoop was created, particularly since those platforms were not designed to do what they are used for today. The use of Java is a legacy of the times.
Fast forward to 2015 and few people need portability because Linux is pervasive, server architectures are much more sophisticated in their use of the hardware, and garbage collection is a bad idea for these use cases.
> I credit C++11 with a lot of it. Finally threads and many other things are in the language/library. Move semantics resolved a lot of the lingering inefficiency, etc. It falls a little short (Qt's memory management / thread-safe collections, and thread-aware signals/slots really should have been incorporated somehow), but it was a huge improvement for portability, interoperability, baseline features that avoid proprietary solutions for key basic capabilities.
C++11 was important because it majorly cleaned up the language and added some critical features and capabilities that make robust code much easier to implement. But for most of the use cases where C++ excels, the standard library is barely used; it was probably one of the least useful parts of C++11. If you need libraries for memory management, thread-safe collections, etc for your application then C++ is probably the wrong language in any case.
More information about the FoRK