April 22, 2005 8:25 AM PDT
C++ creator upbeat on its future
- Related Stories
-
Google courts open-source developers
March 17, 2005 -
Developers slam Microsoft's Visual Basic plan
March 14, 2005 -
Is Java cooling off?
June 28, 2004
Bjarne Stroustrup, who currently works as a professor at Texas A&M University and is creator of the C++ programming language, said Wednesday in an interview here at the ACCU Conference it is a misperception that C++ is being overtaken by newer languages such as Java and C#.
"C++ is bigger than ever," Stroustrup said. "There are more than 3 million C++ programmers. Everywhere I look there has been an uprising--more and more projects are using C++. A lot of teaching was going to Java, but more are teaching C++ again. There has been a backlash."
He claimed the main reason why people are not aware of this is because C++ doesn't have a "propaganda campaign." Sun Microsystems has touted the use of Java in the Mars Rover program, for example, but Stroustrup asserts that C++ was also used. For example, C++ was used for scene analysis and route planning in the Mars Rover autonomous driving system, according to Stroustrup.
Data from analyst firm Evans Data, which carries out regular developer surveys, appears to contradict Stroustrup's claim that C++ is growing. Evans Data has found that the percentage of developers using C++ has steadily declined over the last six years--from 76 percent in the spring 1998 to 46 percent in fall 2004. But it expects the rate of decline in C++ developers to be "considerably slower" in the next few years.
Janel Garvin, chief executive of Evans Data, said it found that Java use has declined slightly over the last few years. "Java use in North America continually increased until it peaked in 2001 or 2002," Garvin said. "Use has decreased slightly since then across the board, but remains strong."
John Rymer an analyst from Forrester Research said that Stroustrup's estimate of around 3 million C++ developers is "plausible." Forrester Research's latest survey found that C++, Microsoft Visual Basic and Java are used by many companies in their production systems. The survey, which spoke to more than 100 companies, found that C/C++, Visual Basic or Java was used in production systems by 59 percent, 61 percent and 66 percent of companies, respectively.
RedMonk analyst James Governor said it is misguided that Java and Microsoft languages such as Visual Basic and C# are the main languages in use.
"Basically the notion that there are only two languages--Java and something Microsoft--is just hogwash," Governor said. "C++ still has a role and dynamic scripting languages, such as PHP and Python, are growing, not shrinking, in importance."
Ingrid Marson of ZDNet UK reported from Oxford.
See more CNET content tagged:
C++ programming language,
programming language,
Java,
C# language,
creator







More developers are using C++ now. It's relative position does not change that fact.
2. your making something low level that isn't a game hack...perhaps a hardware driver.
3. it's the only language you know and don't want to learn others.
4. your forced to by your employer
For everything else...any language but c++ is a smart choice.
Heck their are even direcx games coming out now that are written in c#. And guess what language is gonna be extensibly used in Longhorn...c#.
However their is something weird about c#...it's very similiar to c++ and yet better. It is what c++ should of been all along and is the product of innovation along those lines...sortof a merger of c++ and what made java easier.
C++ being only good for hacks, and that C# is a better
language. What an un-informed mind. C# is definitely easier to
use, but it is limited in performance and application.
Just like VB, I can create certain types of applications in
lightspeed, compared to C++. However, C++ could be just as
fast if code wizards were used in the IDEs.
The other comment the post made, was that C++ programmers
use C++ because they don't know any other language. This is
not personal, but that was the most single stupid remark in the
post. By and large, and I mean large, C++ programmers can
pick up any other language far quicker than any other
programmer that uses a different language. That is because it
inherently forces you to learn more about actual programming
practices than some language that you put together like a
numbered painting toy.
If you have time, C++ is always the right choice for serious
applications, that can be re-compiled on multiple platforms,
and/or be free from the whims of a high-levell language
provider (can we say Microsof) . I need a quick web service on
windows, a windows service, a web service client, then C#-.Net
is the right choice. I need a quick windows stand-alone desktop
application, then VB is the right choice.
The are a lot of right choices. But i think you should remember
nearly all of these high-level languages are written in either C,
C++, or Objective-C. Don't be fooled by C#. I please, don't
think that C# is THE language of the future, unless you plan to
paint yourself into a corner.
Learn, learn and learn more.
depends on the purpose and preference. For instance,
a compiler and BIOS will be written in C. Apps
can be written in any of the above.
http://www.hotgigs.com/marketing/template.cfm?page=searches&inc=rpt_drill_skill&Location=1&item=Dev-PC+%26+Desktop
I used to read "C++ Report" and would follow the missives of Stan Lippman, Mike Meyes, Doug Schmidt et al there.
The reality was, few people I encountered knew C++ well. At least not enough to design good classes. Much less to absorb a book such as DESIGN PATTERNS from Gamma et al and increase their productivity by some multiple.
I even spent 2-1/2 years at Microsoft and I have to say, the majority of MS employees who were doing C++ coding did NOT knew C++ well. Oh sure, there were some, but they were in the minority.
Many people claimed C++ was too complex but given that Java has had feature creep over the years and now sports many of the exact same language features that C++ had from the start, any argument that Java is better because is simpler does not fly with me.
With so many libraries freely available now and with Moore?s Law eroding the argument for being at ?the metal? (low level APIs) I would be hard pressed to want to write a straight Windows C++ application like the old days. And with the proliferation of skinned applications, the idea that something doesn't conform to a particular "look" just doesn't hold water in my book. I would not be apprehensive about using something like this to create Windows application:
http://gtk.php.net/
The argument that "C++ is fast" just doesn't hold water. Fast at what? For doing? Considering what some well crafted regular expressions and a few statements can do for me in PERL if I were processing log files, I would be hard pressed to want to solve such a problem with C++. ?Oh, but that?s not C++?s forte? some might burst out. Problem is, C++ does not have many fortes anymore (if any). The argument for speed just doesn?t hold water. I mean, who the hell writes assembly code anymore? MS used to carry an assembler product but they dropped that years ago. Anyone remember the days when PC Magazine used to publish the assembly language source to their utilities in the days of MS-DOS? You would be hard pressed to see PC Magazine wasting pages in that fashion nowadays.
Given that lots of application development nowadays is very web centric, the proliferation of application servers with their robust support frameworks (classes) does not leave much room for C++ in that space.
And lastly the problem I have observed with *all* programming languages - few people learn the programming language they claim to know well. After being in technology for 10+ years, this has played itself out many a time. When I first started using the "new" cast operators, i.e. const_cast, reinterpret_cast, etc. (years old at this point) as well as the Standard Template Library I had people at MS scratch their heads and want to rewrite my code instead of understanding what was before their eyes. Never mind that the help system in Visual Studio clearly documented what all this was;
And Lord knows how many people I've interviewed who said they knew C and could not nor would not even attempt to write strcpy. When I posed the question I was not interested in conformance to the strcpy ANSI prototype or parameter checking, I simply wanted to see if someone understood pointers. Anyway for brevity?s sake:
void strcpy( src, dest )
{
while( *dest++ = *src++ );
}
Every person I've asked to do this has not done it.
Yeah, hard to believe, well it used to be hard to believe... then I realized that mediocrity and average are synonymous in my field.
Now if you add all the expressiveness of C++ and some of the deep semantics, forget it. Lord knows how many times I had people say they were experts at C++ and could not tell me why on earth you would want to write a copy constructor.
People have complained about C++?s complexity but I liken this to being articulate and well read in the layman?s wold. A country bumpkin is not likely to understand Shakespeare whereas a well rounded and well read college educated person is at least capable of some semblance of what?s going on... where do you see yourself? The bumpkin or the (semi)articulate person? Sadly, it seems complacency is the norm in the IT field and many developers usually fall under the "bumpkin" category.
-M
PS:
mov bp, sp
mov cx, [bp+3]
mov di, [bp+1]
mov si, [bp+2]
rep movsb
ret
That was strncpy in Intel 80x86 assembly.
Each language has its own strength, even more so when combined with an industrial strength codebase, such as Mr. Goodnight's SAS environment. Yes, SAS is also a language, as well as an environment/system.
Even Assembly on an IBM mainframe is expecially powerfull, given its strings capability and memory search & replace commands.
PERL is great with CPAN. JAVA with SWING. C# with DotNet. etc ....
C++ lost out quickly because STL was not part of the language specification or support structure until far later. [ and Borland supported TEMPLATES way before Microsoft did ].
I guess I'm trying to say that until you program in all the various languages, it's hard to know for sure. I want to qualify this by saying that I have programmed with almost all of them, including IEF CASE, 4gl, scripting, lisp, prolog, scheme, and many others. Even Microsoft's visual C/C++ and (yes) SAS.
Languages are like fashion/style in various cultures. To each his/her own as suits the nature of the moment.
C++, like any other languages, is only important if it gets the job done: within budgetary constraints, timeliness, and project requirements. But it doesn't stand alone; however, because it requires database backends, network infrastructure, complex algorithms and various infrastructure components to be able to get the job done.
That can be said of any language, just pick your favorite one.
Without any of the support environment, each language is simply a textual representation of a finite state machine, Turing nomenclature. So in that sense, the only difference is the syntactical representation of the basic action of a finite state machine: store, if, apply, retrieve, go.
In terms of maturity, I would place my money on the language that has the best support in terms of how solid the infrastructure is relative to cost of implementation.
IEF was a good tool to use, but at $275,000.00; that was too high of a burden to place on today's IT budget [ yes, I had purchased that ].
VB is great, until you realize that all the ActiveX components had a price tag attached.
For now, Java is uncertain, since SUN owns it.
C++ is free, if you consider GNU. But, note that the GCC compiler actually compiles not just C/C++, but also Fortran, AND Java. [ as well as many other languages ] Surprise!!!!!!
Until you design microchips, where the actual manipulation of data occurs, you won't appreciate how lucky you are to have that many choices. Yes, I have also done VLSI circuits.
At the bit level, of binary zero's and one's, it doesn't really matter what the language was that generated the bitcodes and byte-patterns. What matters are the piping and buffers that move those bits to generate video images, sound, movements, reactions of a fighter plane, hospital records, and tangibles of our world.
Truthfully, I still keep a slide-rule (with instructions) handy, in the event of a total nuclear meltdown.
Everyone has a valid point in their comments. I simply would like to ask that each take the time to think of what it is that gives them so much leverage with their language of choice.
Now, I think that Microsoft did something right by requiring all the Visual Studio languages to compile into IL. The key is the presence of the DotNet environment, independent of the language.
In fact, I just order a copy of the Visual Studio 2005 Beta2 to give it a spin.
Having worked with preDos, Dos, win2.0, win3.1, Solaris, MacOS, Sco, linux, SAS, and others, I think that Microsoft is heading in the right direction, even if it means a monopoly in the development space. Mono from Novell would not allow that to happen, because Mono can generate IL from just about any other NON-microsoft languages, such as PHP#, Perl#, TK#, and many, many more, all running on NON-microsoft platforms.
If everyone would chip in and make the DotNet (heaven forbid I just said that!) environment robust enough to entice Sun/HP/IBM/etc... to make their middleware, OS, and networks native to DotNet, then everyone will benefit. If you don't want to support Microsoft, you still have the option of using MONO.
Look at how cool it is to use tcp/ip today.
Just remember that a few years ago, you would have to figure out if you were writing code for banyan, ipx, ip, netbeui, appletalk, DEC, token ring, and a partridge in a pear tree!!!!
Common infrastructure benefits EVERYONE.
BTW, mono works!!!!!!!
Hey, don't flame me. Mono is an environment, not a language.
C#, VB.NET, and really even Java are all languages that run as managed code. As long as the environments themselves don't have problems, you'll never have a memory leak. Not having to worry about pointers and memory make it easier to write software faster. A Web app benefits from this, but a 3D game needs the control of C++.
You have a requirement for some very tight & fast algorithms that are heavily used? C++ supports inline assembler and allows you to glue your tight&fast assembler routines with your high-level objects. Of all the other languages mentioned, only a few other can make that particular claim.
OK, so maybe your requirements don't need code that's "close to the metal" for speed reasons. But maybe you have requirements for an app that will be very IO-bound (instead of CPU-bound) and require direct access to the OS system calls. Again, C++ is right there for that with all OS's for which there's a compiler. Infact, this is particuarly important today because many OS's implement thread libraries to be handled at the OS level, and not the language level. In the past, I've found it particularly handy to access the native system-calls and C++ was the best and fastest way to handle a ton of worker threads, while keeping track of my user interface state. Today, there's better support at the language level for threading, so this argument is less important today.
OK, so your requirements don't require talking directly to the OS because maybe you're using some sophisticated library environment to shield your form the particulars of the machine. C++ can handle that quite well. You can write fully 100% object-oriented code that is portable, if you want. You don't HAVE to use pointers if you don't want to. Nor do you HAVE to use explicit casting, if you don't want to. I'll admit that it requires a more disciplined and experienced programmer to do this. But the point being, the language supports it, if you want to take advantage of it. Your choice. (My favorite word -- choice.)
Regarding pointers and/or other "unsafe" language features. As I already said, you don't have to use them if you don't want to. But they make implementing certain algorithms so fast and easy that would otherwise be a headache with pure object-oriented syntax. Pointers also make interfacing with C libraries convienient.
But it's true undisciplined and/or unexperienced programmers can missuse them. But is that a language problem or a people problem? Is it right to bash the language for a people problem? This gets into other areas, such as project management in the IT world where non-technical managers are commonplace and have no idea the difference between a disciplined programmer and one who instantiates objects without regard for deleting them. You could get around this problem using Java I suppose. But Java brings other problems with it -- mostly the fact it's such a resource hog (both CPU and main memory) which requires spending (possibly) millions of dollars worth of of hardware to compensate for the slow and inefficient nature of java.
Anyway, my larger point is the fact C++ can handle 99% of any programming language need you'll encounter. Which other languages can make that claim?
With that said, I also am a firm believer in using "the right tool for the right job." I know there are particular situations that C# may be more appropriate, or Perl or Java. Fine; I have particular loyalty to the language. I just admire the fact that no matter what the problem, C++ is ALWAYS a potential candidate -- it's just a matter of determining whether there's something better.
I like the language, the environment, but I'm worried less and less developpers are using it.
Does anyone have info about it ?
- ...
-
by Everfrost
June 14, 2005 10:05 AM PDT
- Programming languages have their forte and really cannot be based on popularity. Each programming language has its uses and is really based what needs to be programmed.
-
Reply to this comment
-
-
See all 40 Comments >>