asking about good books

  • Thread starter I_got_questions?
  • Start date
I

I_got_questions?

I just started c programming. I want to migrate to c++. I know a little
bit about class/inheritance.
I am asking for good books to read. Elementary will be good.

Thanks for any comments
 
R

Russell Wood

I just started c programming. I want to migrate to c++. I know a little
bit about class/inheritance.
I am asking for good books to read. Elementary will be good.

The two C++ books I own and constantly referencing are:

The C++ Programming Language 3rd Ed.: Bjarne Stroustrup
The C++ Standard Library: Nicolai M. Josuttis

They are really very handy.

- Russell
 
B

Ben Pope

I_got_questions? said:
I just started c programming. I want to migrate to c++. I know a little
bit about class/inheritance.
I am asking for good books to read. Elementary will be good.

"Accelerated C++" by Koenig & Moo.

Resist the temptation to code C++ like it's C, you'll lose a lot of it's
power. Reading that book will get you from "Hello World" to solving
problems which are much more interesting, and very little of it, if any,
looks like C.

Ben Pope
 
M

Mike Wahler

I_got_questions? said:
I just started c programming. I want to migrate to c++.

First some speculation about your motives, and some
corresponding remarks:

Does this mean you're abandoning learning C and want
to learn C++ first or instead? If so, fine. If you're wanting
to learn both simultaneously, I strongly recommend against it,
as the very similar syntax, but often very different semantics,
will probably cause confusion with both languages.

If you're wanting to use C++ knowledge as an 'extension'
to your C knowledge, This is a mistake. C and C++ are two
separate, distinct langauges.
I know a little
bit about class/inheritance.
I am asking for good books to read. Elementary will be good.

Thanks for any comments

Visit www.accu.org, look at the book review section,
category 'beginner's C++'.

My personal recommendation for you would be:
www.acceleratedcpp.com

-Mike
 
I

I_got_questions?

Mike said:
First some speculation about your motives, and some
corresponding remarks:

Does this mean you're abandoning learning C and want
to learn C++ first or instead? If so, fine. If you're wanting
to learn both simultaneously, I strongly recommend against it,
as the very similar syntax, but often very different semantics,
will probably cause confusion with both languages.

If you're wanting to use C++ knowledge as an 'extension'
to your C knowledge, This is a mistake. C and C++ are two
separate, distinct langauges.


Thank you all for the suggestions. It is very helpful.
I perhaps should know more about C programming before I move to C++.
 
A

Alex Beluga

I'd recommend two books:
1) Deitel "Programming in C++"
If thats too easy, try abovementioned Stroustrup "The C++ Language",
 
M

Mike Wahler

I_got_questions? said:
Thank you all for the suggestions. It is very helpful.
I perhaps should know more about C programming before I move to C++.

No. This is a very common misconception. No knowledge
of one langauge is necessary in order to learn the other.
(As a matter of fact it can sometimes be a hindrance).
See this excerpt from the FAQ for 'alt.comp.lang.learn.c-c++'
(the 'learner's group): http://ma.rtij.nl/acllc-c++.FAQ.html#q2.3
Also see:
http://www.parashift.com/c++-faq-lite/how-to-learn-cpp.html#faq-28.2
and:
http://public.research.att.com/~bs/learn.html

If you want to learn C, learn C.
If you want to learn C++, learn C++.
If you want to learn both, learn both. Either one first.
But trying to learn both simultaneously is imo a recipe
for insanity. :)

Informational: C++ (especially its standard library) has
features that can protect you from many of the common
errors that are easy to make and hard to find in C.
If you read a C++ book like "Accelerated C++", imo as
a beginner you'll much more quickly write more useful
programs with less bugs than with C and a beginner's
C text.

-Mike
 
B

Ben Pope

Mike said:
No. This is a very common misconception. No knowledge
of one langauge is necessary in order to learn the other.
(As a matter of fact it can sometimes be a hindrance).
See this excerpt from the FAQ for 'alt.comp.lang.learn.c-c++'
(the 'learner's group): http://ma.rtij.nl/acllc-c++.FAQ.html#q2.3
Also see:
http://www.parashift.com/c++-faq-lite/how-to-learn-cpp.html#faq-28.2
and:
http://public.research.att.com/~bs/learn.html

If you want to learn C, learn C.
If you want to learn C++, learn C++.
If you want to learn both, learn both. Either one first.
But trying to learn both simultaneously is imo a recipe
for insanity. :)

Informational: C++ (especially its standard library) has
features that can protect you from many of the common
errors that are easy to make and hard to find in C.
If you read a C++ book like "Accelerated C++", imo as
a beginner you'll much more quickly write more useful
programs with less bugs than with C and a beginner's
C text.

What he said.

Ben Pope
 
R

Randy Yates

Mike Wahler said:
[...]
I_got_questions? said:
Thank you all for the suggestions. It is very helpful.
I perhaps should know more about C programming before I move to C++.

No. This is a very common misconception. No knowledge
of one langauge is necessary in order to learn the other.
(As a matter of fact it can sometimes be a hindrance).

Strange that anyone would say this, since the overlap between the two
is large.

I don't think it's "necessary" to learn C first, but it would probably
be optimum, since, for the most part, C is a subset of C++, and
new concepts are usually better-learned in smaller chunks rather
than larger chunks.

But far be it from me to contradict "the experts..."
--
% Randy Yates % "How's life on earth?
%% Fuquay-Varina, NC % ... What is it worth?"
%%% 919-577-9882 % 'Mission (A World Record)',
%%%% <[email protected]> % *A New World Record*, ELO
http://home.earthlink.net/~yatescr
 
J

Jerry Coffin

Randy Yates wrote:

[ ... ]
Strange that anyone would say this, since the overlap between the two
is large.

Yes and no -- the overlap between the languages proper is quite large,
but the overlap between the parts a beginner wants/needs to learn first
are substantially smaller.
I don't think it's "necessary" to learn C first, but it would probably
be optimum, since, for the most part, C is a subset of C++, and
new concepts are usually better-learned in smaller chunks rather
than larger chunks.

IMO, it's far from optimum. The problem is simple. what you learn at
the very first with both languages (e.g. x=y+z;) is identical. Almost
as soon as you move much beyond that, you have to learn _more_ with C
than with C++ to really do much. E.g. to write even a trivial program
to read in a text file, sort the lines, and print them back out, is
considerably more work to do at all well with C than with C++.
 
J

Jaspreet

I_got_questions? said:
I just started c programming. I want to migrate to c++. I know a little
bit about class/inheritance.
I am asking for good books to read. Elementary will be good.

Thanks for any comments

Hi

If I were you I would start with the books mentioned on
http://www.rudbek.com/books.html
in that particular oder.

Thanks!! and have a nice day!!
Jaspreet
 
W

W Marsh

I just started c programming. I want to migrate to c++. I know a little
bit about class/inheritance.
I am asking for good books to read. Elementary will be good.

Thanks for any comments

It's a bit old now, but if you want a book detailing excellent
software design, try Design Patterns by Erich Gamma et al.

It's not specific to C++ (but it does contain C++ code), but it's a
wonderful book about reusable design patterns and an example of how
you should be aiming to code.
 
P

Puppet_Sock

Mike Wahler wrote:
[snip]
If you want to learn C, learn C.
If you want to learn C++, learn C++.
If you want to learn both, learn both. Either one first.
But trying to learn both simultaneously is imo a recipe
for insanity. :)
[snip]

Indeed! Learning two computer languages at once causes
me to have what I call "centipede problems." A parable:
A centipede was busily getting on with his centipede day.
An ant walking by looked at the centipede and remarked
"I don't see how you keep track of all those legs. I have
enough problems with just six."
The centipede thought for a moment, looked at the ant,
and was never able to walk again.
Socks
 
R

roberts.noah

Jerry said:
IMO, it's far from optimum. The problem is simple. what you learn at
the very first with both languages (e.g. x=y+z;) is identical. Almost
as soon as you move much beyond that, you have to learn _more_ with C
than with C++ to really do much. E.g. to write even a trivial program
to read in a text file, sort the lines, and print them back out, is
considerably more work to do at all well with C than with C++.

For one thing you have to start dealing with pointers before you even
understand what they are. Some of your first programs are going to
have scanf("%d", &i) in them and then later will have something like
scanf("%s", st). I've always found that beginners are baffled by that
difference because pointers are just too much to start with so you
don't teach them, but they see the diff and want to know why...no good.

In C++ all that crap is still there but it is hidden from the user.
You can really put off pointers until they are ready for them...you
don't have to make them use them, say, "Trust me," and then tell them
why 2 months from now.
 
B

Bo Persson

Randy Yates said:
Mike Wahler said:
[...]
I_got_questions? said:
Thank you all for the suggestions. It is very helpful.
I perhaps should know more about C programming before I move to
C++.

No. This is a very common misconception. No knowledge
of one langauge is necessary in order to learn the other.
(As a matter of fact it can sometimes be a hindrance).

Strange that anyone would say this, since the overlap between the
two
is large.

Most of C is present in C++, but it not used much. The C++ standard
library is much more powerful, so many old C relics can be forgotten.
You don't have to start by learning about strcat(), malloc(),
pointers, mysterious arrays that are sometimes like pointers, why you
use pointers as parameters, etc, etc. Not to mention format strings!
I don't think it's "necessary" to learn C first, but it would
probably
be optimum, since, for the most part, C is a subset of C++, and
new concepts are usually better-learned in smaller chunks rather
than larger chunks.

It's not optimum, as you will have to un-learn a lot (see above :) to
write good C++. The low level stuff can be saved for later, not used
as in introduction.

If you haven't tried out "Accelerated C++", you really should. Too me
it was quite amazing that C style arrays and pointers are put off
until chapter 10, where they are introduced as:

"An array is a kind of container, similar to vector but less powerful.
A pointer is a kind of random-access iterator that is essential for
accessing elements of arrays, and has other uses as well."

At this point the student already knows how to define his own classes
and write generic functions. Standard containers and iterators are
used to explain how pointers work!


The "other uses" for the pointer is really not explained much either,
because there is no good use for it! Instead the book goes on to
explain how to write abstract data types and value classes, which are
much more useful.

C++ just is another language!


Bo Persson
 
R

Randy Yates

Jerry Coffin said:
Randy Yates wrote:

[ ... ]
Strange that anyone would say this, since the overlap between the two
is large.

Yes and no -- the overlap between the languages proper is quite large,
but the overlap between the parts a beginner wants/needs to learn first
are substantially smaller.
I don't think it's "necessary" to learn C first, but it would probably
be optimum, since, for the most part, C is a subset of C++, and
new concepts are usually better-learned in smaller chunks rather
than larger chunks.

IMO, it's far from optimum. The problem is simple. what you learn at
the very first with both languages (e.g. x=y+z;) is identical. Almost
as soon as you move much beyond that, you have to learn _more_ with C
than with C++ to really do much.

I think I see your point. You're saying it's a waste to invest time
learning the C library functions (strstr(), printf(), etc.) if your
goal is to learn C++ since C++ has much more powerful mechanisms for
these types of things. I agree with that.

But..., I don't know about you, but I would still rather take a small
bite (byte?) with C rather than choke on C++ if I were just beginning
to program, i.e., to at least learn the basic, non-class language
syntax in a simpler environment.
--
% Randy Yates % "My Shangri-la has gone away, fading like
%% Fuquay-Varina, NC % the Beatles on 'Hey Jude'"
%%% 919-577-9882 %
%%%% <[email protected]> % 'Shangri-La', *A New World Record*, ELO
http://home.earthlink.net/~yatescr
 
D

Diego Martins

learn Pascal or Python and jump to C++ directly
and AFTER THAT, learn C, if you want to write low level code

Diego
 

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

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top