What can C++ achieve and how to learn C++?

T

TB

Hi Everyone on comp.lang.c++:

I am thinking about learning a programming language and I want to
decide whether it is worthwhile spending my time learning the C++
programming language.

I am a starting C++ programmer. By that I mean that I have written one
small application in C++ on a real job that required some modular
programming. I am also familiar with the Object-Oriented Programming
techniques although I haven't used them extensively with C++. I have no
experience with the STLs, the MFCs, COM/DCOM, or CORBA.

I have a few questions regarding what it takes to pick up C++ and
regarding what good the language is for. Basically, I want to know -
1) what are the top five ways to learn the language and the associated
platforms and how long does it take to progress from the beginner's
stage to an intermediate or expert stage?
2) what can be achieved using the language that is difficult to achieve
using other languages (for example, Java)?
3) What are the areas where the language is found useful and what are
those uses (again, say, in comparison to Java)?

Your reply will be much appreciated,
TB
 
M

mlimber

TB said:
Hi Everyone on comp.lang.c++:

I am thinking about learning a programming language and I want to
decide whether it is worthwhile spending my time learning the C++
programming language.

I am a starting C++ programmer. By that I mean that I have written one
small application in C++ on a real job that required some modular
programming. I am also familiar with the Object-Oriented Programming
techniques although I haven't used them extensively with C++.

Have you used them in some other language? Which ones? See these FAQs
on learning C++:

http://www.parashift.com/c++-faq-lite/how-to-learn-cpp.html
I have no
experience with the STLs, the MFCs, COM/DCOM, or CORBA.

There's only one STL, and MFC is generally taken to be an abbreviation
already in the plural. In any case, MFC, COM/DCOM, and CORBA are all
off-topic here. See this FAQ for what this newsgroup is about:

http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9
I have a few questions regarding what it takes to pick up C++ and
regarding what good the language is for. Basically, I want to know -
1) what are the top five ways to learn the language

Get a good book (e.g. _Accelerated C++_ by Koenig and Moo), and read
and absorb the teaching of that book. And practice, practice, and
practice. See also the Creator's advice:

http://www.research.att.com/~bs/bs_faq.html#how-to-start
and the associated platforms

Off-topic and too broad. There are far too many platforms that support
C++ to even begin to answer your question.
and how long does it take to progress from the beginner's
stage to an intermediate or expert stage?

It entirely depends on your abilities, your ambition, and your
opportunities.
2) what can be achieved using the language that is difficult to achieve
using other languages (for example, Java)?

Search the archive of this group for tons of discussion on this topic.
There's no need to rehash it all here. See also:

http://www.research.att.com/~bs/bs_faq.html#compare
3) What are the areas where the language is found useful and what are
those uses (again, say, in comparison to Java)?

See, e.g.,

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

Cheers! --M
 
P

Phlip

TB said:
I am thinking about learning a programming language and I want to
decide whether it is worthwhile spending my time learning the C++
programming language.

You must choose very carefully, because learning one language will ossify
your brain, and make you incapable of learning any other language.

Especially C++!
1) what are the top five ways to learn the language and the associated
platforms..?

1. write unit tests for all your features
2. write unit tests for all your features
3. write unit tests for all your features
4. write unit tests for all your features
5. write unit tests for all your features

(They will cure the cranial ossification;)
 
V

Victor Bazarov

TB said:
I am thinking about learning a programming language and I want to
decide whether it is worthwhile spending my time learning the C++
programming language.

I am a starting C++ programmer. By that I mean that I have written one
small application in C++ on a real job that required some modular
programming.

Let me get this straight... You've already done some work, got paid
for it (hopefully that's what "on a real job" means), and you still
don't know if "it is worhtwhile" to learn the language?

I think this is the situation described best by "If you have to ask,
the answer is said:
I am also familiar with the Object-Oriented Programming
techniques although I haven't used them extensively with C++. I have
no experience with the STLs, the MFCs, COM/DCOM, or CORBA.

Not sure what you mean by the 's' in "STLs", there is one Standard C++
Library (sometimes referred to as 'STL') and there are many implementations
of it, all striving to adhere to the definition. MFC, [D]COM, CORBA, have
really nothing to do with the language itself.
I have a few questions regarding what it takes to pick up C++ and
regarding what good the language is for. Basically, I want to know -
1) what are the top five ways to learn the language and the associated
platforms and how long does it take to progress from the beginner's
stage to an intermediate or expert stage?

Top five ways? You would need to ask the top five programmers. I don't
know them. Each individual learns the tools of the trade in his/her own
unique way. I can tell you that I learned C++ from books and from using
it in a project. Many do that, however, the percentage of time spent in
each of those activities differ. Some read books and can program without
pressing a key on the keyboard. Some just write code and never open
a single book.
2) what can be achieved using the language that is difficult to
achieve using other languages (for example, Java)?

C++ is a general purpose programming language. You can achieve in it all
you can achieve with any other general purpose language. Comparing C++
with other languages is considered a waste of time and asking to compare
C++ with anything (Java especially) is considered *trolling*.
3) What are the areas where the language is found useful and what are
those uses (again, say, in comparison to Java)?

Again, it's a general purpose programming language. It's used literally
_everywhere_. And, again, comparing it to anything else is pointless.

V
 
O

osmium

TB said:
I am thinking about learning a programming language and I want to
decide whether it is worthwhile spending my time learning the C++
programming language.
<snip>

I think the questions you have are extremely difficult to answer. The kind
of person who might have a useful answer is someone who teaches both Java
and C++ in an adult education class. He is probably a real programmer,
rather than an academic, and he knows both languages quite well.

I know some C++ but just have a very general idea about Java. I know you
will not be writing real and usefull programs in C++ alone. You will need
to learn the API of at least one OS and learn it quite well. For example,
there is no such thing as recognition of a file structure in C++, there are
simply naked files.

The STL is now considered, and in fact is, an intrinsic part of C++. It
consists, basically, of a bunch of high level data structures, such as
stacks, lists and trees. C++ allows one to defer the intent as to data
types by using templates, this can be handy and it can also be a real PITA
when some simpleton thinks his little program is written for the ages and
obscures everything by hiding his data types in templates.

C++ has multiple inheritance which I don't think Java has. This has its uses
but it requires a mind numbing amount of planning to use in a fruitful
manner. The I/O of C++ uses multiple inheritance and I would guess there
were hundreds or even thousands of man-hours used in simply writing the
specifications - so the routines written would all fit together.

I have picked up several languages over the years and C++ is *by far* the
most hideously complex language of them all. There are gotchas around every
corner.

From what little I know of Java, if I already knew Java, I think it would
require a lot of selling to convert me to C++ guy.
 
O

osmium

osmium said:
<snip>

I think the questions you have are extremely difficult to answer. The kind
of person who might have a useful answer is someone who teaches both Java
and C++ in an adult education class. He is probably a real programmer,
rather than an academic, and he knows both languages quite well.

What an amazing coincidence! I chanced across this wish list of what people
would like to see added to C++. There is probably a lot of noise there but
there are certainly some useful hints as to what is missing from C++.

http://www.writely.com/Doc.aspx?id=bchdmtqvpnxv4
 
A

Antti Virtanen

I am thinking about learning a programming language and I want to
decide whether it is worthwhile spending my time learning the C++
programming language.

Depends on what you want to achieve. You have to consider what
is the situation right now and also predict what it will be in the
future.
I am a starting C++ programmer. By that I mean that I have written one
small application in C++ on a real job that required some modular
programming. I am also familiar with the Object-Oriented Programming
techniques although I haven't used them extensively with C++. I have no
experience with the STLs, the MFCs, COM/DCOM, or CORBA.

CORBA is not a C++ specific thing anyway and MFC is just a bunch of code
written by Microsoft. STL itself is not very large and comprehensive,
and that was the intent of it's designers as far as I know.
I have a few questions regarding what it takes to pick up C++ and
regarding what good the language is for. Basically, I want to know -

1) what are the top five ways to learn the language and the associated
platforms and how long does it take to progress from the beginner's
stage to an intermediate or expert stage?

Depends on many factors. If you know other programming languages already,
it takes less time since you are familiar with the ideas and just need to
see how the same things are done in C++. Individuals have different learning
curves too, dramatically different.

Then, what is "intermediate" and what is an "expert"? Hardly anyone can
claim to know C++ inside out with all it's features. I guess someone who
is smart and knows a couple of programming languages can become pretty good
C++ programmer within a year.
2) what can be achieved using the language that is difficult to achieve
using other languages (for example, Java)?

Some things are impossible in Java, which are possible in C++. Most obviously,
C++ offers total control over the memory presentations of things while Java
has no pointers nor exact point of destruction for objects.
3) What are the areas where the language is found useful and what are
those uses (again, say, in comparison to Java)?

Speed comes to mind first and control comes second. Since C++ offers high-level
constructs and still gives the programmer a lot of low-level control, it is
very appealing for certain applications. Not surprisingly, game industry has
been using C++ for a long time. Then there are other things. A lot of legacy
code already exists and if it's written in C or C++, porting it to another
language may not be an option.

Having a few years of experience working with C++ and Java, I choose Java
unless I have some specific reason to choose otherwise. While Java has it's
issues, I'm personally more productive with it and that's what ultimately
counts when someone pays you for writing code. But this depends on what
kind of applications you are about to write and rarely is the choice of
language up to you in the industry anyway.

You did not mention C#, but it should be also considered if you want to make
any real comparison. I don't know much about it though and I don't intend to
learn it since it's future depends so heavily on Microsoft.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top