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
"Steven T. Hatton" <ch********@ger mania.supwrote in message
news:Ep******** *************** *******@speakea sy.net...
>
C++ has one major flaw. #
How is C/C++ or Assembly Language flawed when they are used to create C#
Java?
Please enlighten me on how bad the language is that is used to implement you
favorite "Microsoft controlled super" high-level language?
Steven T. Hatton wrote:
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.
Abstract Data Type. Any data type that can contain, and work with,
generic data. That is the definition used in both cases.
Chris Thomasson wrote:
>
"Steven T. Hatton" <ch********@ger mania.supwrote in message
news:Ep******** *************** *******@speakea sy.net...
>> C++ has one major flaw. #
How is C/C++ or Assembly Language flawed when they are used to create C#
Java?
Please enlighten me on how bad the language is that is used to implement
you favorite "Microsoft controlled super" high-level language?
Microsoft? Are they still in business? I haven't checked recently.
I believe you missed the entire meaning of my previous post. The one major
flaw in C++ is '#'. Other than that, it is an excellent language.
--
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/
"Steven T. Hatton" <ch********@ger mania.supwrote in message
news:Fu******** *************** *******@speakea sy.net...
Chris Thomasson wrote:
>> "Steven T. Hatton" <ch********@ger mania.supwrote in message news:Ep******* *************** ********@speake asy.net...
>>> C++ has one major flaw. #
How is C/C++ or Assembly Language flawed when they are used to create C# Java?
Please enlighten me on how bad the language is that is used to implement you favorite "Microsoft controlled super" high-level language?
Microsoft? Are they still in business? I haven't checked recently.
I believe you missed the entire meaning of my previous post. The one
major
flaw in C++ is '#'. Other than that, it is an excellent language.
Why is the preprocessor bad?
"Steven T. Hatton" <ch********@ger mania.supwrote in message
news:Fu******** *************** *******@speakea sy.net...
Chris Thomasson wrote:
>> "Steven T. Hatton" <ch********@ger mania.supwrote in message news:Ep******* *************** ********@speake asy.net...
>>> C++ has one major flaw. #
How is C/C++ or Assembly Language flawed when they are used to create C# Java?
Please enlighten me on how bad the language is that is used to implement you favorite "Microsoft controlled super" high-level language?
Microsoft? Are they still in business? I haven't checked recently.
I believe you missed the entire meaning of my previous post. The one
major
flaw in C++ is '#'. Other than that, it is an excellent language.
Sorry, I thought you meant C#... You are referencing the preprocessor
correct?
Chris Thomasson wrote:
>
"Steven T. Hatton" <ch********@ger mania.supwrote in message
news:Fu******** *************** *******@speakea sy.net...
>Chris Thomasson wrote:
>>> "Steven T. Hatton" <ch********@ger mania.supwrote in message news:Ep****** *************** *********@speak easy.net...
C++ has one major flaw. #
How is C/C++ or Assembly Language flawed when they are used to create C# Java?
Please enlighten me on how bad the language is that is used to implement you favorite "Microsoft controlled super" high-level language?
Microsoft? Are they still in business? I haven't checked recently.
I believe you missed the entire meaning of my previous post. The one major flaw in C++ is '#'. Other than that, it is an excellent language.
Why is the preprocessor bad?
"Among the facilities, techniques, and ideas C++ inherited from C was the C
preprocessor, Cpp. I didn't like Cpp at all, and I still don't like it.
The character and file orientation of the preprocessor is fundamentally at
odds with a programming language designed around the notions of scopes,
types, and interfaces." Bjarne Stroustrup
--
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/
"Steven T. Hatton" <ch********@ger mania.supwrote in message
news:jf******** *************** *******@speakea sy.net...
Chris Thomasson wrote:
>"Steven T. Hatton" <ch********@ger mania.supwrote in message news:Fu******* *************** ********@speake asy.net...
>>Chris Thomasson wrote: "Steven T. Hatton" <ch********@ger mania.supwrote in message news:Ep***** *************** **********@spea keasy.net...
Why is the preprocessor bad?
"Among the facilities, techniques, and ideas C++ inherited from C was the
C
preprocessor, Cpp. I didn't like Cpp at all, and I still don't like it.
The character and file orientation of the preprocessor is fundamentally at
odds with a programming language designed around the notions of scopes,
types, and interfaces." Bjarne Stroustrup
You can use the C preprocessor to generate C++ code: http://groups.google.com/group/comp....382dc9a40439c7
I don't see anything wrong with the preprocessor.
Chris Thomasson wrote:
"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?
When you learned driving a car, did your instructor insist on assembling it
first from parts? Don't get me wrong, I think such a class would be fun and
a great way to learn quite a bit (been there, done that, learned a lot).
However that class would not be a language course. It would be a course in
data structures.
That C++ allows you to implement your own deque does not mean you should. It
does not even mean should know how to do it (there may be *other* reason
why you should know how to implement deque, but those are unrelated to C++
and are better taken care of by other classes in the curriculum).
In my opinion, a C++ course should focus on good programming idioms like
RAII, templated inheritance and policy classes, the use of standard
containers instead of pointers and arrays; the students should learn about
exception safety issues and how templates (user provided code) and
exceptions (when user provided code throws) aggravate the use of raw
pointers; the students need to explore the virtues and vices of being
virtual or of being private, protected, or public; and the list continues.
Those are issues a C++ needs to cover because these items are forced onto
the agenda by the language. A C++ course is neither a substitute for an
introduction to computer architecture nor a class on data structures and
algorithms.
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?
As I said, sounds terrific for a class in data structures. But that is quite
different from teaching C++. The problems of implementing queues, maps,
sets, hash tables, and even something like vector are mostly unrelated to
the language (although it is true that templates help tremendously in
making such structures generic).
Best
Kai-Uwe Bux
Tony wrote:
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.
That's like saying you can't have proprietary databases because they
have to support standard SQL.
The real solution would be C++2, a new version of the C++ language
(not an extension of the current language). I should avoid the
numerous traps, pitfalls and wrong defaults of the current language.
C++2 could be compatible with (but not a superset of) current C and
C++ (through a compatibility mode). Of course, that's a futile
proposal. That kind of language evolution happens in Python, Ruby,
PHP, ... but not in C++.
An evolution of C++ is already en-route. Have you seen http://www.digitalmars.com/d/ ? This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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...
|
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...
|
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)
|
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...
|
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...
| |
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?
|
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...
|
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...
|
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
|
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...
|
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...
| |
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
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...
|
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();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
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...
| |