473,769 Members | 3,872 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

The Future of C++ ?

If you had asked me 5 years ago about the future of C++, I would have
told you that its future was assured for many years to come. Recently,
I have been starting to wonder.

I have been teaching C++ at a local polytechnical school here in
Vancouver, Canada for approximately 8 years. Six years ago, at the
height (or should I say volume?) of the internet bubble, I had 80+
students per semester in my C++ course. Now I am fortunate to have 15
students per semester. What has changed? I believe that students are
no longer interested in learning C++. They would rather learn .NET
languages or Java (my colleages who teach these courses seem to be very
busy!). I believe it is because these other languages are easier to
learn and/or are perceived to be more relevant today.

I do believe that C++ is more difficult to learn than many of these
other languages. Despite my best efforts to make them exciting, I see
the eyes of my students start to glaze over when I start explaining
pointers. When I ask them to tokenize an english sentence (using the
strtok() function) and print the token in reverse order (they need to
declare an array of type char * and save the addresses of the tokens in
this array), I experience near panic from many of my students. But
these concepts need to be taught in a responsible C++ course. As was
pointed out to me recently, Microsoft still requires applicants to
demonstrate a very good knowledge of string manipulation using C-style
strings (none of these fancy string class objects!) when recruiting C++
programmers.

The ironic part is there is still a large demand for C++ developers
here in Vancouver. In fact, the company that I believe employs the
most developers here in Vancouver, employs almost entirely C++
programmers. This company, Electronic Arts (if you have not heard of
them, I guarantee that your kids have -- they create video games) is
only one of several gaming companies here in Vancouver that employ
primarily C++ programmers. Other companies like Kodak, MDSA, Nokia,
MDSI, etc. also employ large numbers of C++ programmers. Not
surprisingly, I have talked to several companies here in Vancouver who
are complaining that they are having difficulty finding C++ developers
and are looking at trying to recruit from abroad (eastern Europe
primarily).

I believe that many of these companies will be forced to migrate away
from C++ in the near future, simply because they will not be able to
find C++ programmers in the future. Soon the baby boomer C++
programmers will begin to retire, then the proverbial @@@@ will really
start to hit the fan!

Please tell me I am wrong, and paint me a view of the future which
includes C++.

Nov 18 '06
190 8174

"kwikius" <an**@servocomm .freeserve.co.u kwrote in message
news:11******** *************@l 39g2000cwd.goog legroups.com...
>
Tony wrote:
>"kwikius" <an**@servocomm .freeserve.co.u kwrote in message
news:11******* *************** @l39g2000cwd.go oglegroups.com. ..
There is no money behind C++ except from companies and maybe many of
their interests lie elsewhere.

Whatever that means.
Its the lack of good libraies that will kill C++ AFAICS.

Example please. What area is missing "good libraries" and what would,
for you, make it a "good" library? (Perhaps FREE?)

"Standard". GUI, graphics, dlls, IPC, concurrency.
OK, so you just want them to be standard. That assumes that the proprietary
vendors would give up control of those things though. I can't imagine MS
giving up its cash cow by adhering to a standard GUI API.

Tony
Nov 28 '06 #111

"Alf P. Steinbach" <al***@start.no wrote in message
news:4t******** *****@mid.indiv idual.net...
For example, when you remove exceptions from the language you also remove
the whole point of constructors, and what's left isn't much more than a
simple syntactical device (writing p->foo() rather than p->vt->foo( p ) or
CALL( p, foo, () )).
That doesn't sound correct at all. Constructor + copy constructor +
destructor
+ assignment operator allow creation of objects that act like built-in
types.
Exceptions just solve the problem of how to handle errors in those
functions.
Constructors weren't created as a result of exception handling, EH was
created as a result of constructors.

Tony
Nov 28 '06 #112
Noah Roberts wrote:
Really, the science part of computer science is rarely used in the
workplace. There is almost no real world situations when you need to
use finite automita for instance but I know of no CS degree that
doesn't have a course, at least, on this kind of thing alone.
I think the idea is to teach us to think in terms of state transitions.
Whether we recall the vocabulary and diagram techniques immediately, or
not, we should have integrated the approach into our thinking.
Most of
these "science" parts have to be looked up every time you need them
because they simply aren't used enough to recall in detail. On the ADT
end, once you have programming techniques in general down it is really
quite trivial to implement a linked list, for example, so spending as
much time on implementing them at college might be time better spent
learning to use them well...somethin g you actually can use.
It really depends on what you are trying to design. It's unlikely I will
write a linked list any time soon, however,
Really, implementing a tree or list...
I am currently writing code that implements a tree in order to solve a
real-world problem.
once you've done it once that's
probably the last time you will. Maybe if you work in C you'll
implement an ADT once every 5 years or something but most other places
have them already and there's simply no need to. Knowing how they are
sometimes implemented is a good thing but I don't think it's the end of
the world if you don't learn it at school.
I believe you are using the term ADT the way I learned it in college, which
is not the way it is typically used among C++ language officionatos. The
use of ADT I learned in school has to do with linked lists and binary
trees. To Stroustrup, Koening and the gang, ADT means an interface
that 'looks like' it has/is data.
In all honesty, the best thing to come out of courses that implement
data structures from scratch is general programming and problem solving
skills. If the teacher feels that can be better taught using other
aids then it's rather hard to argue with that.
It really depends on what you are trying to accomplish. I often find myself
struggling with ways of structuring and representing data.
--
NOUN:1. Money or property bequeathed to another by will. 2. Something handed
down from an ancestor or a predecessor or from the past: a legacy of
religious freedom. ETYMOLOGY: MidE legacie, office of a deputy, from OF,
from ML legatia, from L legare, to depute, bequeath. www.bartleby.com/61/
Nov 28 '06 #113
"Kai-Uwe Bux" <jk********@gmx .netwrote in message
news:ek******** **@murdoch.acc. Virginia.EDU...
Chris Thomasson wrote:
>"Earl Purple" <ea********@gma il.comwrote in message
[snip]
>>Course in Java: [...]
>>And we can process concurrently...
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^

Java memory model is so damn strict that it makes it impossible to create
any high-end synchronization algorithms. Period. But then, does the
average Java programmer even know this fact? I bet 99% do not. Simple
example of how learning Java first can, and will, burn you:
C++ teacher: Now we are going to learn about variable length arrays. C++
has
for instance the deque<template, you see ...

Student: How does C++ actually implement that template?

C++ teacher: That is implementation defined according to the standard. All
I
can tell you for sure are the following guaranteed complexity bounds...
That teacher is crap. Give me a break. A good C++ teacher should make his
students create a vector class from scratch. Heck, the instructor can teach
his students how to implement a vector that meets the C++ Standard. The
instructor can teach the student how to create a memory allocator that meets
the C++ standard to plug into the standard vector the student will be
creating.

The classroom can define a namespace:

myclass_std

And the course would be about actually implementing Standard C++. Then the
students can implement Standard vector, and Standard queue, and use them in
further applications.
Any thoughts on this approach?
Student: I hear the C++ Standard has a nice vector template?

Teacher: Well, yes it does. And you will learn exactly how to create a
Standard C++ vector template from scratch. This class will teach you how to
implement useful parts of the C++ Standard. The class uses the namespace
myclass_std for the minimalist Standard C++ template library you will be
creating.

Sound good to me, no?
Nov 28 '06 #114
"Earl Purple" <ea********@gma il.comwrote in message
news:11******** **************@ l39g2000cwd.goo glegroups.com.. .
>
Chris Thomasson wrote:
>>
there's lots of
legacy code out there written in it, usually very badly, and you can
get a job maintaining it.

I hope you don't think that the reason C++ is still around is because of
legacy code?

Of course it is. C++ beat all the other OO languages of its generation
because it supported all the company's existing C source. Read
Stroustrup's pages about the history of the language.
Now if you are student which do you choose?

C++ for sure! You should learn the fundamentals before you choose to
sacrifice yourself to very high-level language that is governed under a
"private" standard.

And then you'd need to learn assembly too plus deep amounts of
electronics to know how all the hardware works.

What if, however, you are the typical student for whom university is
really only the unfortunately necessary and costly step between school
and getting a job, and that your primary aim of university is to be
trained to get a job afterwards, especially since you'll probably have
a big loan to pay off.
Well, highly skilled C/C++ systems programmers get paid more?

And it's the "private standard" that has allowed them to advance Java
to where it is,
introducing generics (really templates) in the latest
standard, plus the equivalent of a foreach which looks a lot cleaner
I don't care about using normal for. I am a C programmer at heart. No
problems here.
Nov 28 '06 #115
"Chris Thomasson" <cr*****@comcas t.netwrote in message
news:jI******** *************** *******@comcast .com...
"Kai-Uwe Bux" <jk********@gmx .netwrote in message
news:ek******** **@murdoch.acc. Virginia.EDU...
>Chris Thomasson wrote:
>>"Earl Purple" <ea********@gma il.comwrote in message
[snip]
>>>Course in Java: [...]

And we can process concurrently...
^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^

Java memory model is so damn strict that it makes it impossible to
create
any high-end synchronization algorithms. Period. But then, does the
average Java programmer even know this fact? I bet 99% do not. Simple
example of how learning Java first can, and will, burn you:
>C++ teacher: Now we are going to learn about variable length arrays. C++
has
for instance the deque<template, you see ...

Student: How does C++ actually implement that template?

C++ teacher: That is implementation defined according to the standard.
All I
can tell you for sure are the following guaranteed complexity bounds...

That teacher is crap. Give me a break. A good C++ teacher should make his
students create a vector class from scratch. Heck, the instructor can
teach his students how to implement a vector that meets the C++ Standard.
The instructor can teach the student how to create a memory allocator that
meets the C++ standard to plug into the standard vector the student will
be creating.

The classroom can define a namespace:

myclass_std

And the course would be about actually implementing Standard C++. Then the
students can implement Standard vector, and Standard queue, and use them
in further applications.
Any thoughts on this approach?
Student: I hear the C++ Standard has a nice vector template?

Teacher: Well, yes it does. And you will learn exactly how to create a
Standard C++ vector template from scratch. This class will teach you how
to implement useful parts of the C++ Standard. The class uses the
namespace myclass_std for the minimalist Standard C++ template library you
will be creating.

Sound good to me, no?
That might be a good name for a book...
"Implementi ng Standard C++"


Nov 28 '06 #116
blangela wrote:
If you had asked me 5 years ago about the future of C++, I would have
told you that its future was assured for many years to come. Recently,
I have been starting to wonder.

I have been teaching C++ at a local polytechnical school here in
Vancouver, Canada for approximately 8 years. Six years ago, at the
height (or should I say volume?) of the internet bubble, I had 80+
students per semester in my C++ course. Now I am fortunate to have 15
students per semester. What has changed? I believe that students are
no longer interested in learning C++. They would rather learn .NET
languages or Java (my colleages who teach these courses seem to be very
busy!). I believe it is because these other languages are easier to
learn and/or are perceived to be more relevant today.

I do believe that C++ is more difficult to learn than many of these
other languages. Despite my best efforts to make them exciting, I see
the eyes of my students start to glaze over when I start explaining
pointers. When I ask them to tokenize an english sentence (using the
strtok() function) and print the token in reverse order (they need to
declare an array of type char * and save the addresses of the tokens in
this array), I experience near panic from many of my students. But
these concepts need to be taught in a responsible C++ course. As was
pointed out to me recently, Microsoft still requires applicants to
demonstrate a very good knowledge of string manipulation using C-style
strings (none of these fancy string class objects!) when recruiting C++
programmers.

The ironic part is there is still a large demand for C++ developers
here in Vancouver. In fact, the company that I believe employs the
most developers here in Vancouver, employs almost entirely C++
programmers. This company, Electronic Arts (if you have not heard of
them, I guarantee that your kids have -- they create video games) is
only one of several gaming companies here in Vancouver that employ
primarily C++ programmers. Other companies like Kodak, MDSA, Nokia,
MDSI, etc. also employ large numbers of C++ programmers. Not
surprisingly, I have talked to several companies here in Vancouver who
are complaining that they are having difficulty finding C++ developers
and are looking at trying to recruit from abroad (eastern Europe
primarily).

I believe that many of these companies will be forced to migrate away
from C++ in the near future, simply because they will not be able to
find C++ programmers in the future. Soon the baby boomer C++
programmers will begin to retire, then the proverbial @@@@ will really
start to hit the fan!

Please tell me I am wrong, and paint me a view of the future which
includes C++.
C++ has one major flaw. #
--
NOUN:1. Money or property bequeathed to another by will. 2. Something handed
down from an ancestor or a predecessor or from the past: a legacy of
religious freedom. ETYMOLOGY: MidE legacie, office of a deputy, from OF,
from ML legatia, from L legare, to depute, bequeath. www.bartleby.com/61/
Nov 28 '06 #117
>
C++ has one major flaw. #
C/C++ and assembly language was used to create C# and Java.
Nov 28 '06 #118
* Tony:
"Alf P. Steinbach" <al***@start.no wrote in message
news:4t******** *****@mid.indiv idual.net...
>For example, when you remove exceptions from the language you also remove
the whole point of constructors, and what's left isn't much more than a
simple syntactical device (writing p->foo() rather than p->vt->foo( p ) or
CALL( p, foo, () )).

That doesn't sound correct at all.
I'll try to explain, then.

The purpose of a constructor in C++ is to couple allocation and
initialization in one all-or-nothing operation, a transaction.

After a constructor call you either have an initialized object at hand,
or an exception.

In the case of an exception, if the constructor was invoked via new, the
allocated memory has been automatically deallocated: construction is an
all-or-nothing operation, either allocation+init ialization, or nothing.

If you remove exceptions, first of all the all-or-nothing functionality
is removed -- you can and will then have improperly initialized
objects accessible -- which defeats the very purpose of constructors.

Second, to be able to handle initialization failure dialects such as
Symbian C++ require the programmer to use two-phase construction where
the "C++" constructor is just a dummy, with an initialization member
function called afterwards by the client code. And with that technique
not only is the purpose of the constructor defeated, but the constructor
has become just a hindrance that must be overcome by some alternative
initialization scheme. Constructors then just add complexity, no gain.

Consider if, in such a thwarted dialect of "C++", a class Base
constructor fails when called automatically from a class Derived
constructor. Perhaps class Derived has some members of type Mambo. To
signal its failure the Base constructor sets the boolean member
'okSoFar' to false. But since that's a scheme the compiler knows
nothing about, the Mambo members are now automatically constructed,
perhaps causing some side-effects such as windows popping up. Now the
Derived constructor's body is executed and it detectes the failed Base
construction, and must communicate that to the client code, somehow...

Constructor + copy constructor +
destructor
+ assignment operator allow creation of objects that act like built-in
types.
Sort of.

Without exceptions you're limited to types where initialization can't
fail, and/or treating all failures as fatal errors, and/or using the
language in a way ignoring constructors.

This was useful enough that C++ enjoyed a fair degree of success without
exceptions, up till the late 1980's, as a "better C", but the section on
error handling in the first edition of TCPPPL tellingly lists the then
current alternatives and finds fault with them all for ordinary function
calls, without even discussing how to handle failure in constructors.

Exceptions just solve the problem of how to handle errors in those
functions.
No, that problem is not a problem that can be solved by other known means.

Constructors weren't created as a result of exception handling, EH was
created as a result of constructors.
No, that's incorrect. Exceptions were adopted late in the
standardization process, that's true. But first, they weren't invented
to support constructors, nor vice versa, and second, they weren't
invented in C++. Experience with exceptions had been gained from Ada
and other languages, as well as at a low level in e.g. Windows NT. They
fitted the requirements of constructors, and no other scheme did.

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
Nov 28 '06 #119
"Earl Purple" <ea********@gma il.comwrote in message
news:11******** **************@ l39g2000cwd.goo glegroups.com.. .
>
Chris Thomasson wrote:
>>
there's lots of
legacy code out there written in it, usually very badly, and you can
get a job maintaining it.

I hope you don't think that the reason C++ is still around is because of
legacy code?

Of course it is. C++ beat all the other OO languages of its generation
because it supported all the company's existing C source. Read
Stroustrup's pages about the history of the language.
[...]
You don't think people use C/C++ for other reasons? What about the fact that
you can easily couple C/C++ with Assembly Language and create C#, Java,
custom lock-free VM, full blown garbage collection, virtually anything you
want!

Try to prototype new types of garbage collector designs in C# or Java,...
Ha!
Nov 28 '06 #120

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

47
3664
by: David Eng | last post by:
> For many years now enterprise business application development has > been the core area for the use of C++. > Today a significant share to this segment has already been lost to > SUN's Java technology and with MS now abandoning C++ in favour if its > proprietery .NET and C# technology, how long can we except C++ to hold > on against these might competitors? > Has C++ become a dying language? > What is the future of C++? As I posted...
35
3354
by: GTO | last post by:
I do not believe that C# is the future of C++. I also do not believe that adding two thousand new library functions to the standard library is the future of C++. But what is the future of C++? Is it as good as a programming language can get? Like so many of you, I programmed speech recognizers, image recognition systems, a portion of a chess program, lots of numeric code using STL, and tons of other applications in C++, (even firmware...
9
2368
by: Lyle Fairfield | last post by:
It's confusing. Many people here and elsewhere make many different predictions: There's an introduction mentioning some aspects of this at http://msdn.microsoft.com/data/mdac/techinfo/default.aspx? pull=/library/en-us/dnmdac/html/data_mdacroadmap.asp revised Sep 2005 (upper case conversions are mine)
2
2165
by: | last post by:
Everything seems to be moving to .NET and VC++ seems to be adding a lot of managed code support every new release. The questions: is unmanaged code in VC++ beeing phased out in favour of managed code? And suppose I still program in VC++ 6.0, can I safely assume that the code I use in VC++ 6.0 will still be available in future VC++ versions. Finally will VC++ 6.0 generated executables be still be able to run on futur Windows versions and...
0
1854
by: Fuzzyman | last post by:
Hello all, The following is a copy of a blog entry. It's asking a question about future statements and the built in compile function. I'd appreciate any pointers or comments about possible approaches. `Movable Python <http://www.voidspace.org.uk/python/movpy/>`_ supports running both Python scripts and ``.pyc`` bytecode files. It does this by compiling scripts to bytecode, or extracting the code object from bytecode files, and then...
29
3133
by: Zootal | last post by:
My apologies if this gets asked/discussed a lot. With c# rampaging through corporate USA (and other countries), what impact will this have on the usage and future of c++? I've used both of them a bit. I'm in school, and our CS program does not use c#, but uses mostly c++ and a bit of java. C# is relegated ot the CIS programs. Out there in the real world, what kind of a future does c++ have?
6
14452
by: rohayre | last post by:
Im a long time java developer and actually have never done anything with java scripting. I'd like to write a short simple script for calculating a date in the future based on today's date and a letter. Can I use javascripting to create a webpage to allow a user to enter a letter and then click a button to find a future calendar date? I'm just not sure how much user interaction scripting allows. Does java scripting allow buttons, textfields...
5
3593
by: KimmoA | last post by:
Does C have a future? I'd like to think so, but nobody seems to agree with me. Of course, I don't use C in my profession, and maybe I wouldn't be using it if I had the pressure to actually produce things with deadlines and stuff. Hmm. That's a depressing thought. I can't stand OOP. Yes, it is beautiful in theory, and it might make sense for huge projects with many people involved, but I don't want anything to do with it. (I switched to C...
51
3434
by: Jon Harrop | last post by:
If Microsoft turn F# into a product and place it alongside C# and VB, will many people migrate from C# to F#? -- Dr Jon D Harrop, Flying Frog Consultancy http://www.ffconsultancy.com/products/?u
0
9579
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10035
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9851
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8863
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7403
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6662
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5441
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
3556
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2811
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.