I want to learn C++
Re:I want to learn C++
Check out Bruce Eckel's free downloadable books at http://www.mindview.net/Books . If I remember right, these books dig deeper into the underlying design of C++ than anything you'll get from Sam's or similar publishers. In fact, he often includes exercises that involve analysing the assembly equivalent of C++ code.
Pete
Pete
Re:I want to learn C++
What is your current programming experience?
Eckels "Thinking in C++" is definitely not a beginner's book.
Eckels "Thinking in C++" is definitely not a beginner's book.
Re:I want to learn C++
Sure. However, bookmark it anyway. After you learn the basics of C++ (especially syntax), Eckel's book can be a great way of learning the finer points of the language.crazybuddha wrote:Eckels "Thinking in C++" is definitely not a beginner's book.
Re:I want to learn C++
There are a tremendous number of free C++ tutorials on the web, most of which are worth what you pay for them, or worse.
Despite the considerable differences between them, you really can't learn C++ without learning C first - and then unlearning it. Eckel's book is excellent, but you really need to know C cold before digging into it, especially the first edition. The second edition seems to try and cover C a bit more, though I haven't read it through yet. The printed version also comes with a CD containing Eckel's lectures on C, which I have not seen myself but which apparently is a popular addition to the book.
C++ Core Language by O'Reilly is is supposed to be reasonably good, though again it assumes a solid background in C.
I really can't think of a good starting book on C++ other than those. The lack of quality study material for beginners is a problem across the board in the IT industry, sadly, and C++, being so complex, presents special problems of it's own.
Despite the considerable differences between them, you really can't learn C++ without learning C first - and then unlearning it. Eckel's book is excellent, but you really need to know C cold before digging into it, especially the first edition. The second edition seems to try and cover C a bit more, though I haven't read it through yet. The printed version also comes with a CD containing Eckel's lectures on C, which I have not seen myself but which apparently is a popular addition to the book.
C++ Core Language by O'Reilly is is supposed to be reasonably good, though again it assumes a solid background in C.
I really can't think of a good starting book on C++ other than those. The lack of quality study material for beginners is a problem across the board in the IT industry, sadly, and C++, being so complex, presents special problems of it's own.
Re:I want to learn C++
As far as I am aware, the current trend in beginner programming classes, is to teach C with C++ changes to some of the basics (e.g. new/free, cout/cin, different placement of variable declarations, etc), and merely touch on classes, inheritence, overloading, and so on. In other words, students start out thinking they are learning C++, but it really is little more than a slightly modified C. The structured paradigm is still pretty strong, at least as far as I've seen.
And the introduction of classes in trivial examples should give anybody pause about the bloat potential in C++. Personally, I think covering OO concepts without substantial experience in large, modular structured programs is really missing the essence of why it is useful. But I also believe, for similar reasons, that learning C without learning something about assembly is also an unnecessary struggle.
And the introduction of classes in trivial examples should give anybody pause about the bloat potential in C++. Personally, I think covering OO concepts without substantial experience in large, modular structured programs is really missing the essence of why it is useful. But I also believe, for similar reasons, that learning C without learning something about assembly is also an unnecessary struggle.
Re:I want to learn C++
Teaching either C or C++ as a programmer's first language is like teaching someone how to juggle by starting out with chainsaws and flaming brands. C++ should be the culmination of your programming experience, after long familiarity with tools far less dangerous and considerably less pragmatically oriented. I'd even put Ada or Forth ahead of C++ - in fact, I'd insist on that (more on that later). Pushing programmers too fast, especially with tools like C++, is likely to lead to a lot of half-trained, half-assed programmers who really don't understand the esoteric qualities of the trade.
I have rather particular ideas of how programmers should learn, to be sure. Putting aside the issues like math requirements and liberal education basics for the nonce, I would start with a class on theory - no coding, just theory - before even getting in front of the machine. Boring, yeah, but it will make it easier to understand what is happening once you do start working. Concurrent with this would be classes in basic hardware and system software - about equal to an A+ course, enough that the student can put together a PC from off-the-shelf parts and diagnose and fix common problems.
Second semester should be further basics : working in Unix/Linux, common apps and utilties and HTML - while not a programming language per se, it does show a lot of the basic ideas of structure and organization needed in most programming.
My choice of a first programming language would be, predictably, Scheme - it's about the simplest language to learn that there is, yet it is flexible enough to demonstrate just about anything in. It can be used to put the ideas of the fist class into practice in a fairly straightforward manner, and can introduce some really sophisticated techniques easier than in most other languages. Two semesters of this should be able to give at least an introduction to most of the major topics in CS. The second semester should also begin with some principles of asembly language, tied to the study of compilers and interpreters. The classes should also cover documentation writing.
Third year gets back to practical matters - and the two languages every programmer should know at this time, since they are ubiquitous - with a course in scripting using Perl and a course in systems programming in C and assembly. Note that I'm not teaching classes in the languages themselves; the languages are secondary to the goal. A class on embedded programming in assembly, Forth, C and Ada, and a class on user interfaces in Java, should make up the sixth semester.
Final year covers application design in C and Java, system adminstration, and an overview of database programming; this is followed in the final semester with C++, CASE, and OS theory, and swallowing your pride in VB, Ada and COBOL.
OK, so that's not the most practical syllabus in the world, true. But I think it would be better than the rather catch-as-catch-can approach seen too often today. The real problem with it is that it is exactly the kind of formal approach that would drive away the hacker sorts who really love programming and computers - I know I wouldn't have gotten through it - while appealing to the kind of theorists who end up writing paper after paper on software engineering without once coding a single program. OTOH, the more typical approach - teach how to write code in a few languages and then a few courses in specific techniques for, say, database programming, or OS design - tends to be way too narrow in scope; often even basic concepts get passed over, leaving every student to reinvent the wheel on their own.
I don't know. Maybe the real core classes should be in picking up new languages and researching existing algorithms and patterns online.
I have rather particular ideas of how programmers should learn, to be sure. Putting aside the issues like math requirements and liberal education basics for the nonce, I would start with a class on theory - no coding, just theory - before even getting in front of the machine. Boring, yeah, but it will make it easier to understand what is happening once you do start working. Concurrent with this would be classes in basic hardware and system software - about equal to an A+ course, enough that the student can put together a PC from off-the-shelf parts and diagnose and fix common problems.
Second semester should be further basics : working in Unix/Linux, common apps and utilties and HTML - while not a programming language per se, it does show a lot of the basic ideas of structure and organization needed in most programming.
My choice of a first programming language would be, predictably, Scheme - it's about the simplest language to learn that there is, yet it is flexible enough to demonstrate just about anything in. It can be used to put the ideas of the fist class into practice in a fairly straightforward manner, and can introduce some really sophisticated techniques easier than in most other languages. Two semesters of this should be able to give at least an introduction to most of the major topics in CS. The second semester should also begin with some principles of asembly language, tied to the study of compilers and interpreters. The classes should also cover documentation writing.
Third year gets back to practical matters - and the two languages every programmer should know at this time, since they are ubiquitous - with a course in scripting using Perl and a course in systems programming in C and assembly. Note that I'm not teaching classes in the languages themselves; the languages are secondary to the goal. A class on embedded programming in assembly, Forth, C and Ada, and a class on user interfaces in Java, should make up the sixth semester.
Final year covers application design in C and Java, system adminstration, and an overview of database programming; this is followed in the final semester with C++, CASE, and OS theory, and swallowing your pride in VB, Ada and COBOL.
OK, so that's not the most practical syllabus in the world, true. But I think it would be better than the rather catch-as-catch-can approach seen too often today. The real problem with it is that it is exactly the kind of formal approach that would drive away the hacker sorts who really love programming and computers - I know I wouldn't have gotten through it - while appealing to the kind of theorists who end up writing paper after paper on software engineering without once coding a single program. OTOH, the more typical approach - teach how to write code in a few languages and then a few courses in specific techniques for, say, database programming, or OS design - tends to be way too narrow in scope; often even basic concepts get passed over, leaving every student to reinvent the wheel on their own.
I don't know. Maybe the real core classes should be in picking up new languages and researching existing algorithms and patterns online.
Re:I want to learn C++
http://www.webwareindex.com/tutorials/C.html
If you need a free compiler, this is a good one. It isn't fancy, but there is a lot less extra crap to learn just to get started.
http://www.htsoft.com/products/pacific.html
For something a little tricker to drive, there's LCC-WIN32, which is also free
http://www.cs.virginia.edu/~lcc-win32/
If you get really serious -- but still aren't spending money -- Watcom C is supposed to have gone free. You'll have to research it.
And of course, there's DJGPP, which is a great compiler, but there's too much stuff to learn just to make it work.
If you need a free compiler, this is a good one. It isn't fancy, but there is a lot less extra crap to learn just to get started.
http://www.htsoft.com/products/pacific.html
For something a little tricker to drive, there's LCC-WIN32, which is also free
http://www.cs.virginia.edu/~lcc-win32/
If you get really serious -- but still aren't spending money -- Watcom C is supposed to have gone free. You'll have to research it.
And of course, there's DJGPP, which is a great compiler, but there's too much stuff to learn just to make it work.
Re:I want to learn C++
The book that I used to learn C++ was C++ for Dummies. It's a great book. Just make sure to get the latest edition(the older ones are set up differently and IMHO, aren't as good).
K.J.
K.J.
Re:I want to learn C++
i want c tutorialcrazybuddha wrote: What is your current programming experience?
Eckels "Thinking in C++" is definitely not a beginner's book.