Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > If you're new and need a book

Reply
Thread Tools

If you're new and need a book

 
 
Carter Smith
Guest
Posts: n/a
 
      08-24-2004
http://www.icarusindie.com/Literature/ebooks/

Rather than advocating wasting money on expensive books for beginners,
here's my collection
of ebooks that have been made freely available on-line by their authors.
There are lots of them out there but this selection cuts out the junk.

If you know of any other good books that are freely available please post a
link to them here and I'll consider adding them to the site.

There's really no reason for a new programmer to pay for anything. You will
need to be quite a proficient programmer before you really need to fork out
the cash for an expensive book.

Ben Kucenski
www.icarusindie.com


 
Reply With Quote
 
 
 
 
Victor Bazarov
Guest
Posts: n/a
 
      08-24-2004
Carter Smith wrote:
> http://www.icarusindie.com/Literature/ebooks/
>
> Rather than advocating wasting money on expensive books for beginners,
> here's my collection
> of ebooks that have been made freely available on-line by their authors.
> There are lots of them out there but this selection cuts out the junk.


No, it doesn't. The books are outdated, at least the C++ ones I took
a look at. I would recommend every newbie to actually search the Web
and sieve through the junk to find the most up-to-date editions of the
books.

> [...]


V
 
Reply With Quote
 
 
 
 
Default User
Guest
Posts: n/a
 
      08-24-2004
Victor Bazarov wrote:
>
> Carter Smith wrote:
> > http://www.icarusindie.com/Literature/ebooks/
> >
> > Rather than advocating wasting money on expensive books for beginners,
> > here's my collection
> > of ebooks that have been made freely available on-line by their authors.
> > There are lots of them out there but this selection cuts out the junk.

>
> No, it doesn't. The books are outdated, at least the C++ ones I took
> a look at. I would recommend every newbie to actually search the Web
> and sieve through the junk to find the most up-to-date editions of the
> books.



Well, he has Thinking in C++ 2nd referenced, I believe that's decent.
I'd go directly to the author's site for it though:


http://mindview.net/Books




Brian Rodenborn
 
Reply With Quote
 
Carter Smith
Guest
Posts: n/a
 
      08-25-2004
"old" programming books are no more outdated than last year's dictionary or
last years algebra text book. Especially with C++ which had been
standardized before many newbies had been born. A book that teaches how to
use classes and other core OO topics or even just how to use the basics of
the language will never go out of date.

C++ has added new ways to do the same old same old and there's no harm in
doing the same old same old the same old way. Because it still works.
There may be a new algebraic theorum that was recently proven.
http://www.cut-the-knot.org/pythagoras/index.shtml

The statement of the Theorem was discovered on a Babylonian tablet circa
1900-1600 B.C. Whether Pythagoras (c.560-c.480 B.C.) or someone else from
his School was the first to discover its proof can't be claimed with any
degree of credibility. Euclid's (c 300 B.C.) Elements furnish the first and,
later, the standard reference in Geometry. Jim Morey's applet follows the
Proposition I.47 (First Book, Proposition 47), mine VI.31. The Theorem is
reversible which means that a triangle whose sides satisfy a2+b2=c2 is right
angled. Euclid was the first (I.4 to mention and prove this fact.

Should we ignore that core theory of geometry simply because it's thousands
of years old and new theories related to geometry have come about? You
can't get much more outdated than 2000 years and yet here we are still
teaching it and relying on it.

The STL and templates are not without controversy. It's not like everyone
just assumes they're the best thing ever. If you want to learn how to use
that stuff with "up to date" books then that's fine. There are entire books
dedicated the the STL and templates. For my audience I go with the basic
OOP style. If you're an advanced programmer and insist on templates and
whatnot then that's your choice. But it's not my target audience.

There's a reason a computer science degree includes classes in "outdated"
things such as 186 assembly and digital logic that doesn't get past a simple
4-bit computer with only a handful of bytes of memory.

If you know of some specific books that you think would be a good addition
to the library that are legal to redistribute then let me know. If you have
a specific book in mind that has a newer edition available then let me know
where to get the newest edition. Don't just blindly accuse me of posting
"outdated" materials. How long have the red and blue OpenGL books been
around and they're still the defacto standards?

Ben Kucenski
www.icarusindie.com



"Victor Bazarov" <(E-Mail Removed)> wrote in message
news:SnHWc.218$(E-Mail Removed)09.us.to.ver io.net...
> Carter Smith wrote:
> > http://www.icarusindie.com/Literature/ebooks/
> >
> > Rather than advocating wasting money on expensive books for beginners,
> > here's my collection
> > of ebooks that have been made freely available on-line by their authors.
> > There are lots of them out there but this selection cuts out the junk.

>
> No, it doesn't. The books are outdated, at least the C++ ones I took
> a look at. I would recommend every newbie to actually search the Web
> and sieve through the junk to find the most up-to-date editions of the
> books.
>
> > [...]

>
> V



 
Reply With Quote
 
Paul
Guest
Posts: n/a
 
      08-25-2004

"Carter Smith" <(E-Mail Removed)> wrote in message
news:0zWWc.23594$L94.10276@fed1read07...
> "old" programming books are no more outdated than last year's dictionary

or
> last years algebra text book. Especially with C++ which had been
> standardized before many newbies had been born. A book that teaches how

to
> use classes and other core OO topics or even just how to use the basics of
> the language will never go out of date.


Up to date books are very relavant.

In the "Teach Yourself C++ in 21 Days", that you have listed, the very first
program is this:

#include <iostream.h>
int main()
{
cout << "Hello World!\n";
return 0;
}

This program will *not* compile on many compilers, including the latest
Visual C++ compilers that may be popular with many beginners (now that it is
a free download). Imagine a beginner who gets this book and sees that the
simplest program doesn't even compile. What then?

> C++ has added new ways to do the same old same old and there's no harm in
> doing the same old same old the same old way. Because it still works.


No it doesn't. See above.

- Paul



 
Reply With Quote
 
Gary Labowitz
Guest
Posts: n/a
 
      08-25-2004
"Paul" <(E-Mail Removed)> wrote in message news:Ts_Wc.6572$rT1.2406@trndny02...
>
> "Carter Smith" <(E-Mail Removed)> wrote in message
> news:0zWWc.23594$L94.10276@fed1read07...
> > "old" programming books are no more outdated than last year's dictionary

> or
> > last years algebra text book. Especially with C++ which had been
> > standardized before many newbies had been born. A book that teaches how

> to
> > use classes and other core OO topics or even just how to use the basics

of
> > the language will never go out of date.

>
> Up to date books are very relavant.
>
> In the "Teach Yourself C++ in 21 Days", that you have listed, the very

first
> program is this:
>
> #include <iostream.h>
> int main()
> {
> cout << "Hello World!\n";
> return 0;
> }
>
> This program will *not* compile on many compilers, including the latest
> Visual C++ compilers that may be popular with many beginners (now that it

is
> a free download). Imagine a beginner who gets this book and sees that the
> simplest program doesn't even compile. What then?
>
> > C++ has added new ways to do the same old same old and there's no harm

in
> > doing the same old same old the same old way. Because it still works.

>
> No it doesn't. See above.


While I disagree totally with Paul (I figured him for a flamer), it turns
out this does compile with g++ using Dev-Cpp, and with VC++, 6.0 and .NET.
Too bad, since they are all covering the .h header. There is a deprecattion
message from g++. (Oh, I did add std:: to that cout, but I figure you were
commenting on the .h header. Maybe not!)
--
Gary


 
Reply With Quote
 
Jerry Coffin
Guest
Posts: n/a
 
      08-25-2004
"Carter Smith" <(E-Mail Removed)> wrote in message news:<0zWWc.23594$L94.10276@fed1read07>...
> "old" programming books are no more outdated than last year's dictionary or
> last years algebra text book.


This simply isn't true.

Many older books on C++ had all sorts of problems relative to the
language as it stands today. For a few obvious examples:

1) assuming that new returns a null pointer upon failure.
2) making no attempt at exception safety.
3) advocating inheritance when templates would be more appropriate.
4) advocating classes that imitate superior ones in the library.

The bottom line is pretty simple: even among new books, there's a
distressingly small percentage that teach the language is it exists
today. As the books get older, that percentage diminishes very
quickly.

> Especially with C++ which had been
> standardized before many newbies had been born. A book that teaches how to
> use classes and other core OO topics or even just how to use the basics of
> the language will never go out of date.


C++ has not been standardized for a particularly long time, and books
as a whole have lagged well behind the standard. There ARE excellent
books on things like OO analysis (E.g. Booch) algorithms (going back
at least as far as Knuth) and so on, but when it comes to the language
proper, few older books retain a great deal of value.

> C++ has added new ways to do the same old same old and there's no harm in
> doing the same old same old the same old way. Because it still works.


Quite the contrary. Just for one obvious example, the minute exception
handling was added to the language, MANY of the old ways of doing
things were instantly broken. Teaching people to write code that isn't
exception safe is actively harmful.

[ ... ]

> Should we ignore that core theory of geometry simply because it's thousands
> of years old and new theories related to geometry have come about?


Of course not -- but the simile is poor at best. In the case of
geometry, the definition of what's being taught is old. In the case of
C++, the definition of the language has NOT existed for thousands of
even dozens of years. Worse, most books did not (even attempt to)
follow the standard as soon as it was approved.

There are two basic problems here. First of all, many new books aren't
entirely new -- they're revisions of older books. Unfortunately for
that, C++ has changed enough, quickly enough, that most of revisions
aren't really adequate to address the changes that have taken place.
In many cases it appears that _several_ revisions will be necessary
before the books catch up with the current standard.

Second, especially in introductory books, the author faces a serious
problem at best: the market forces him to teach the language as
defined by mainstream compilers rather than as defined by the
standard. Until recently, and to a lesser degree even now, that meant
many books were taught C++ within the restrictions imposed by MS
Visual C++ 6.0 (which predates the standard).

Even after the author and publisher agree that an up-to-date book is
needed, it can easily take a year of serious work to write a good
book, and months after that to get it published.

> You
> can't get much more outdated than 2000 years and yet here we are still
> teaching it and relying on it.


This assumes that being dated depends purely on age, which clearly
isn't true.

Some parts of geometry haven't change radically since then, but
medical practices, knowledge of chemistry, physics, etc. certainly
have. If, however, you want to restrict yourself to what the Greeks
knew about computer programming (i.e. nothing) feel free to do so --
but don't expect everybody else to share your enthusiasm for
ignornace.

> The STL and templates are not without controversy. It's not like everyone
> just assumes they're the best thing ever. If you want to learn how to use
> that stuff with "up to date" books then that's fine. There are entire books
> dedicated the the STL and templates. For my audience I go with the basic
> OOP style. If you're an advanced programmer and insist on templates and
> whatnot then that's your choice. But it's not my target audience.


Templates, for one example, are nearly unavoidable except by the very
most advanced programmers. Just for an obvious example, the minute you
write a hello world program that writes to cout, you've used a
templated class. That class is defined in such a way that it can throw
exceptions.

The fact is, that in C++ you can't avoid templates and exceptions and
so on. If you ignore them, you write broken code. If you teach others
to ignore them, you teach them to write broken code.

--
Later,
Jerry.

The universe is a figment of its own imagination.
 
Reply With Quote
 
Carter Smith
Guest
Posts: n/a
 
      08-25-2004
> 1) assuming that new returns a null pointer upon failure.

That's syntax. I always check to see if a pointer is not zero before using
it and default it to 0. Not so surprisingly I've never had a problem with
it. That statement also assumes that you should use "new." If you're doing
real time programming you simply can't use new and delete because they're
horribly slow. A* relies heavily on allocating and deleting memory and with
new and delete you'll never get it fast enough unless you're only covering
short distances. This is what most tutorials for A* do which is why the
authors don't bother to point out that their implementation is horribly
inefficient. It looks fast to them. It's still necessary to know about
malloc and free so that you can make an informed decision about which to
use. You can't just rely on brute force Ghz all the time.

> 2) making no attempt at exception safety.


Syntax. You don't get exception handling in many languages. It's better to
write code that crashes when it's broken so you can eliminate the bad code
or bad cases that cause exception errors rather than relying on additional
code to serve as a crutch for other code. That's what debug is for.

> 3) advocating inheritance when templates would be more appropriate.


That's a syntatical debate. Many languages don't have templates.

> 4) advocating classes that imitate superior ones in the library.


That's an educational debate. Do you want to know how something works or
just use a magic black box? It's often the case that it's a bad idea to use
an existing library because libraries are not consistant across languages.
Long ago I refused to use C because it relied on libraries. I could do
better graphics with more colors but everything was hidden so it was
pointless. I wanted to know how things worked. I learned a lot more by
doing things the hard way. I've done a few dozen tutorials on software
rendering already and I'm far from done. Sure, I could do a bunch of
lessons in OpenGL or DirectX but that's boring and not too educational. The
math used for software renderering rears it's ugly head outside the realm of
graphics as well. So you can't hide behind OpenGL and DirectX forever.

> The bottom line is pretty simple: even among new books, there's a
> distressingly small percentage that teach the language is it exists
> today. As the books get older, that percentage diminishes very
> quickly.
>


And yet we still use books filled with algorithms that were first written
decades ago. Some before there were even computers.

A lot of people value syntax above all when it comes to languages. And this
is why we have students who learn Java who are then completely lost when
they're presented with C/C++. Or the other way around. It's a very rare
programmer who only uses one language their entire career. They're also not
particularly valuable to an employer.

The concepts taught in older books are just as revelavent now as they were
when they were first written. Not every language has templates and the STL
so at some point you need to know how things work on a lower level. If you
intend to get into console programming you'll probably need assembly as well
since not every game system runs at 3Ghz. Which is why my lessons on
software rendering will eventually go to assembly.

Mark Twain said that people who could spell words more than one way were
more intelligent that people who could only spell them one way. It's the
same thing with programming. You still need to know how to do things The
Old Way(tm) so you can make informed decisions about which is The Better
Way(tm) to do something. You can't just assume that the New Way is The
Better Way.

Ben Kucenski
www.icarusindie.com




 
Reply With Quote
 
Carter Smith
Guest
Posts: n/a
 
      08-25-2004
I was going to say, if Paul actually knew C++ he would have known that the
code would compile just by looking at it. It would have taken all of two
minutes to test his theory before making his false claim on a permanent
venue.

Well, that's one less person's posts I need to consider. Usually when
people post bad code they post code that doesn't work and claim it does.
This is a new one.

Ben Kucenski
www.icarusindie.com


"Gary Labowitz" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "Paul" <(E-Mail Removed)> wrote in message

news:Ts_Wc.6572$rT1.2406@trndny02...
> >
> > "Carter Smith" <(E-Mail Removed)> wrote in message
> > news:0zWWc.23594$L94.10276@fed1read07...
> > > "old" programming books are no more outdated than last year's

dictionary
> > or
> > > last years algebra text book. Especially with C++ which had been
> > > standardized before many newbies had been born. A book that teaches

how
> > to
> > > use classes and other core OO topics or even just how to use the

basics
> of
> > > the language will never go out of date.

> >
> > Up to date books are very relavant.
> >
> > In the "Teach Yourself C++ in 21 Days", that you have listed, the very

> first
> > program is this:
> >
> > #include <iostream.h>
> > int main()
> > {
> > cout << "Hello World!\n";
> > return 0;
> > }
> >
> > This program will *not* compile on many compilers, including the latest
> > Visual C++ compilers that may be popular with many beginners (now that

it
> is
> > a free download). Imagine a beginner who gets this book and sees that

the
> > simplest program doesn't even compile. What then?
> >
> > > C++ has added new ways to do the same old same old and there's no harm

> in
> > > doing the same old same old the same old way. Because it still works.

> >
> > No it doesn't. See above.

>
> While I disagree totally with Paul (I figured him for a flamer), it turns
> out this does compile with g++ using Dev-Cpp, and with VC++, 6.0 and .NET.
> Too bad, since they are all covering the .h header. There is a

deprecattion
> message from g++. (Oh, I did add std:: to that cout, but I figure you

were
> commenting on the .h header. Maybe not!)
> --
> Gary
>
>



 
Reply With Quote
 
Alf P. Steinbach
Guest
Posts: n/a
 
      08-25-2004
[Do not troll, do not top-post, do not break lines in quoting, do not quote
signatures, do not post under false name, etc. ad nauseam, rearranged]

* Carter Smith, signing with "Ben Kucenski www.icarusindie.com":
> * Gary Labowitz:
> > * Paul:
> > > * Carter Smith:
> > > > "old" programming books are no more outdated than last year's
> > > > dictionary or last years algebra text book. Especially with C++
> > > > which had been standardized before many newbies had been born. A
> > > > book that teaches how to use classes and other core OO topics or
> > > > even just how to use the basics of the language will never go out
> > > > of date.
> > >
> > > Up to date books are very relavant.
> > >
> > > In the "Teach Yourself C++ in 21 Days", that you have listed, the very
> > > first program is this:
> > >
> > > #include <iostream.h>
> > > int main()
> > > {
> > > cout << "Hello World!\n";
> > > return 0;
> > > }
> > >
> > > This program will *not* compile on many compilers, including the latest
> > > Visual C++ compilers that may be popular with many beginners (now that
> > > it is a free download). Imagine a beginner who gets this book and sees
> > > that the simplest program doesn't even compile. What then?
> > >
> > > > C++ has added new ways to do the same old same old and there's no harm
> > > > in doing the same old same old the same old way. Because it still works.
> > >
> > > No it doesn't. See above.

> >
> > While I disagree totally with Paul (I figured him for a flamer), it turns
> > out this does compile with g++ using Dev-Cpp, and with VC++, 6.0 and .NET.
> > Too bad, since they are all covering the .h header. There is a
> > deprecattion message from g++. (Oh, I did add std:: to that cout, but I
> > figure you were commenting on the .h header. Maybe not!)
> >

> I was going to say, if Paul actually knew C++ he would have known that the
> code would compile just by looking at it. It would have taken all of two
> minutes to test his theory before making his false claim on a permanent
> venue.


You are wrong, and Paul is correct.


> Well, that's one less person's posts I need to consider.


Here you're right.

Plonk.

--
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?
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Does anyone got the e-book for the book MCTS Training Kit (70-528) =?Utf-8?B?WWlu?= MCSD 0 11-18-2006 03:30 AM
need a new Ruby book? stuinzuri Ruby 7 11-13-2006 03:23 PM
"Java Performance Tuning Book" anyone read this book? coltrane Java 2 09-27-2006 01:13 PM
Need to get Address book into new mailreader Sigi Rindler Computer Support 2 07-18-2005 11:12 AM
awt book+java animation book Thanasis \(sch\) Java 1 10-14-2004 03:02 PM



Advertisments