![](https://seccdn.libravatar.org/avatar/7406815515e8651a2b6764112a753a19.jpg?s=120&d=mm&r=g)
You make some excellent points. Stroustrup's book is certainly a must. Both C and C++ are here for the long haul, but there are some subtle differences when you use a C++ compiler to compile C code. I think that eventually, even Unix/Linux kernel code will be converted to C++. I also think that the original K&R book (not the 2nd edition) is required reading to understand the philosophy behind both C and Unix. But, to reiterate my objection to learing Visual C++ is that you do not learn the fundamentals of the language. Visual languages are excellent when applied to GUI based applications. You can get those apps up and running quickly without the need to to be concerned about implementation details. But, if that is the only kind of programming you know, then you limit your career. At one of my contracts, we had a client - server application where the server was written in C (on Debian at the time) and the client was C++ (on Linux, Solaris, OS/2, Windows). We had access to some C++ programmers in the IT groups, but almost all of them were strictly Visual C++ programmers with none of the lower level skills needed for the queing and comminucations client side code. Additionally, one of the things that separates an application programmer from a systems level programmer in C++ is class libraries. All C++ programmers know how to write a class, but writing a good template or class that is flexible and usable enough to be used effectively requires more thought and knowledge. As an example, on a system I worked on the segment I worked on required a date that was easily comparable. They had already defined a date class, but that class was not appopriate for the type of comparisons needed because the class designer had not forseen the need. The solution was to write a new date class. Set it up such that we could restructure the old date class to inherit the new class. It is the understanding of both inheritance and templates that is very important in the writing of good class libraries. So, the bottom line is your career objectives. If you want to become a C++ programmer qucikly then the visual route will get you there, but with a very limited career. But the learning of the fundamentals, which is slower and more painful, will give you a much broader choice within your career. On 28 Mar 2002 at 16:17, Praise wrote:
Il 14:31, giovedì 28 marzo 2002, Jerry Feldman ha scritto:
First, the C language is certainly not obsolete. Certainly, languages like C++ and Java have moved it to a higher level.
C++ can do the same low level coding as C (even if it has no advantages over it). For a beginner, I think C++ is better because it can help with both ancient programming techniques and modern (OOP) techniques.
IMHO, it is important that C++ programmers know and understand C, but also that they write their code in good C++ style with properly developed classes and methods. Both C and C++ have their places in the progrmming lexicon.
In the very long term I think C will disappear a bit before C++ :-)) I do not think that C is required to learn C++, even if it can help in the beginning.
I also prefer programmers, when learning C++ to learn C++, not Visual C++ (or IDE based C++). IDE based languages are great time savers, but they also hide a lot of details. I think it is important to understand the fundamentals, that is why I think that before you learn C++, you should have a working knowledge of C and the concepts of OO.
It is an approach, but you can learn OOP just while undertanding the C++ syntax. You cant learn a thing without coding a little, right? What's better than C++ to code OOP if you want to learn C++?
Another good C++ book is the C++ Primer.
I really like the Stroustrup: it's just better than the bible, you can always reread it and learn something new.-)
Praise
-- To unsubscribe send e-mail to suse-linux-e-unsubscribe@suse.com For additional commands send e-mail to suse-linux-e-help@suse.com Also check the archives at http://lists.suse.com
-- Jerry Feldman Portfolio Partner Engineering 508-467-4315 http://www.testdrive.compaq.com/linux/ Compaq Computer Corp. 200 Forest Street MRO1-3/F1 Marlboro, Ma. 01752