C++ as a very good medium for multi-paradigm design expression

Among 3rd generation programming languages, C++ has been very successful; the amount of software in the world written in C++ is very substantial:

C++ Applications

https://www.research.att.com/~bs/applications.html

There should be no surprise why Microsoft is picking C++ as the recommend language for .NET and Longhorn; making C++ a first class player in the design stage with .NET Framework programming at the native level represent a benefit for everybody.

Software designers will be able to use this mature programming language to express sound multi-paradigm designs that match more accurately to particular problems being solved. Better designs in software impact many areas at a fundamental level and help with nasty problems solving their root cause.

By now, after my last two posts [1], it should be clear that a sufficient and necessary condition to realize this is not that good tools are chosen, but good designers actually choosing their tools accordingly to the problem at hand. That is why design options are important, that is why mastery with a diversity of design schools of thought is indispensable, that is why multi-paradigm design is a very important technique to really grasp.

Comes to mind a quote:

"Many C++ design decisions have their roots in my dislike for forcing people to do things in some particular way" -Bjarne Stroustrup

An important work to get your hands on is the description of the design process of C++ itself; there are several essential publications about that, among them these ones excel:

The Design and Evolution of C++

https://www.research.att.com/~bs/dne.html

Why C++ isn't just an Object-Oriented Programming Language

https://www.research.att.com/~bs/oopsla.pdf

C++ has been standardized and its specification now covers both the C++ language itself and its standard library. The standard library represents an example of what the old Bell Labs proverb “library design is language design” is all about. The amount of new features make C++ a supporting tool for attractive design techniques that supersede those that gave C++ a sense of intimidating. Professional mastery with C++ has been important, and will be even more important in the near future.

Learning Standard C++ as a New Language

https://www.research.att.com/~bs/new_learning.pdf

The C++ Programming Language

https://www.research.att.com/~bs/C++.html

Among 3rd generation programming languages, C++ is one with the largest budget for its active development, and this is being done at Microsoft. Visual C++ 2005 will deliver a C++ CLI implementation which is a binding between Standard C++ and ISO CLI and stands for a modern and very compelling executable notation for multi-paradigm design decisions targeting .NET CLR:

C++/CLI Language Specification

https://msdn.microsoft.com/visualc/homepageheadlines/ecma/default.aspx

STL.NET Primer by Stanley B. Lippman

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/stl-netprimer.asp

Recommended scenarios for Visual C++ 2005 include, among many others:

  • Unmanaged code interoperability (Win32, COM), here C# is typically 50% slower than C++
  • Adding current .NET Framework features to existing C++ applications
  • Preparing existing C++ applications for use Longhorn features, C++ compiled to CIL is 5-25% slower than native
  • New .NET Framework-only applications, C++ typically 25% faster than C#

More details:

Visual C++ 2005: The Language of Choice for Native and .NET by Herb Sutter at San Diego TechEd 2004

[1]

Good designs come from good designers, good designers come from...

What use good designers to convey good designs?