Embarcadero's David Intersimone on C++ Development
Earlier this month Embarcadero Technologies
released new Starter Editions of its Delphi and C++Builder development tools. I corresponded with David Intersimone, vice president of developer relations and chief evangelist for Embarcadero Technologies, and asked him a question about the outlook for native C and C++ development going forward. He offered an insight response, which I've published here.
My question to David Intersimone:As managed and dynamic languages continue to gain traction, what is the outlook for native C++ development? What type of development is tending to stay or move to C++ and what advantages are devs getting with the language over managed alternatives like C# or VB.NET?
His response:Native C++ development continues to stay strong. There is an updated industry (ISO) draft standard for C++0X that will be finalized soon. We see C++ being used in scientific, industrial, real-time, embedded, mobile, enterprise, and everywhere else where application requirements include close to the hardware, demanding, high-speed execution and the smallest amount of space. Look at smart devices. Many of the applications and almost all of the low-level functionality is built in C++. Battery life, constrained memory size and processor speed often lead developers to using native code development tools and languages.
Managed and dynamic languages have their place, and we see a lot of their use in Web server applications. PHP, Ruby on Rails, Python and others are still the leading server side application development languages and environments. Android and Blackberry smartphones use a combination of C++ and Java. On the iPhone most developers use C, C++ and ObjectiveC. There is a lot of JavaScript/XML/JSON being used on client side, especially in browser-based or browser container-based applications. RAD Studio from Embarcadero includes RadPHP, which provides support for visual PHP Web application development, building and consuming Web services, REST servers and AJAX-based client applications.
What advantages are developers getting over C# and VB.NET? More tool providers on more platforms for C++, for example -- there are C++ compilers for every platform, for every processor chip. RAD Studio includes C++Builder for Windows native code development. PHP runs everywhere. C# and VB.NET are only for Microsoft Windows (yes, there is the Mono runtime but it does not support full .NET functionality). If developers want to use managed code with .NET/Mono we have Delphi Prism for .NET, which is part of RAD Studio from Embarcadero.
Is C++ declining? Bjarne Stroustrup, the "father" of C++, in his FAQ writes:
No, I don't think so. C++ use appears to be declining in some areas and to be on an upswing in others. If I had to guess, I'd suspect a net decrease sometime during 2002-2004 and a net increase in 2005-2007, but I doubt anyone really knows. Most of the popular measures basically measures noise and ought to report their findings in decibel rather than "popularity." Many of the major uses of C++ are in infrastructure (telecommunications, banking, embedded systems, etc.) where programmers don't go to conferences or describe their code in public. Many of the most interesting and important C++ applications are not noticed, they are not for sale to the public as programming products, and their implementation language is never mentioned. Examples are Google and "800" phone numbers. Had I thought of a "C++ inside" logo in 1985, the programming world might have been different today.
One simple thing that confuses many discussions of language use/popularity is the distinction between relative and absolute measures. For example, I say that C++ use is growing when I see user population grow by 200,000 programmers from 3.1M to 3.3M. However, somebody else may claim that "C++ is dying" because it's "popularity" has dropped from 16 percent to 11 percent of the total number of programmers. Both claims could be simultaneously true, as the number of programmers continues to grow and especially as what is considered to be programming continues to change. I think that C++ is more than holding its own in its traditional core domains, such as infrastructure, systems programming, embedded systems, and applications with serious time and/or space constraints.
To end this discussion about programming languages, which ones are popular, which are gaining traction and such, I always say programming languages are tools. We have many tools. We use different tools for different jobs. No one programming language is the perfect language for every type of job a programmer has to do.
Most developers use several languages in their every day jobs -- sometimes these languages include a native code, managed code, dynamic, scripting and markup language. We might use a mix of Delphi, JavaScript, XML and HTML on one project. For another application we might use PHP, C++ and JavaScript. For a third application we might use C#, C++ and JavaScript together. The combinations are endless, and developers can use them all to get the job done.
Posted by Michael Desmond on 02/22/2011