Putting C++ and the CLI in Perspective
A surprising thread that has emerged has to do with libraries. Here is an representative example,
re: Towards a Natural Theory of Programming Languages
I also think that the survival of a language is also more an issue of libraries than of language.
I prefer Java because it has gui,threading, sockets, class loading, etc. all built in to the standard library. Since these are the primary features that differ between platforms, the majority of code can be written to depend only on these APIs, and in doing so be automatically cross platform.
C++ could push its way back into usefulness if it, too, required that all C++ implementations provided a standard API for threading, I/O, loadable modules, and user interfaces. I doubt they will - these are very difficult to implement in a language without garbage collection. Many of the issues just cannot be addressed to satisfaction for all programs.
Java and C++ exist in different pockets of the programming community. Telephony, Aerospace, Animation, for example, are all C++ domains. JPL, for example, is doing its 2009 onboard control system in C++ not Java because Java is not performant. So, to say that C++ `could push its way back to usefulness’ is not a quantifiable statement, is not currently true; it is simply an expression of how the writer personally feels.
The environment in which ISO-C++ has a competitive disadvantage is in the dynamic programming paradigm which is imo currently exemplified by CLI and ok, Java. This is why we have been working so hard for the last two years to – ok – adapt ISO-C++ into C++/CLI which integrates the standard C++ Object model with the CLI Object model. We believe that we have established a competitive baseline language that is as good as Java in this domain. That is our hypothesis, in any case …
The argument about libraries is both valid and moot. It is valid because I agree with it J . It is moot because the whole elegance of the CLI is that it provides a language-independent class library that provides everything Dobes, above, lists. If you prefer to write in standard ML of New Jersey, or in Python, or in, let the bits preserve you, Eiffel, you get the same class library and tools operating on a common intermediate language. We’re just beginning to do nifty things with this … not just in C++, but within the programming community at large and within Microsoft Research and in the academic community.
While I have a preference for C++, obviously, its continued existence – as with any language – is finite. While we would like to extend its usefulness within the CLI – particularly since we see the CLI becoming the dominant environment – whether we succeed in that or not is the zest of our coming to work each day. You can’t know if we are going to fail or not beforehand … folks that think everything is decided already or by rudeness try to eliminate our efforts are inconsequential. We know that there is a lot of work to be done, and I don’t have all the answers. No one here can guarantee that. But we’re privileged enough to have the opportunity. I’m quite grateful for that.