?
Solved

Looking for the "best" C++ refresher combined with Visual Studio environment howto course for me....

Posted on 2003-03-20
16
Medium Priority
?
1,236 Views
Last Modified: 2013-12-14
Hi all;

I'm posting this with lots of points because I'm looking for specific and varied opinions.  I have plenty of such points, so if more than one person has great ideas I'll post a specific empty question for others to allocate additional points.

I haven't played with c++ in something like 10 years.  In that time, things have changed (LOL).  I do have a reasonbly good understanding of object oriented programming, and have created and worked with object models extensively.  

The last time I really used C++ it was Borland C++ Professional 2.0, and the applications were for DOS.  At that time, I wasn't very good at it, but was getting there.  Here it is 10 years later and I'm a much better programmer, but have really let my skills in C++ lapse.

Its time to get back involved, and I've decided that Microsoft Visual C++ is the product set to build the kind of applications I want to build.  I'm willing to hear other opinions, however.

I'm looking for the class most suited to my own background and skillset as described above, as well as the following parameters:

* I learn best in a hands on environment.  The ideal learning situation would be a classroom setting with well configured, state of the art equipment, with a mix of lecture and short assignment to explore the fuctions and features.  Note: A slipshod or poorly configured environment is unacceptable.  I once took a course on MS Exchange 5.5 and when I got there the local network didn't work.  I had to rebuild it for the instructor so the guy could teach his class!

* In a perfect world, a 5-10 day onsite class makes sense for me, full time during the class.  I'm willing to travel (reasonably) to attend a course of this nature.  I've never been successful with an online class, though I imagine some combination of vhs/dvd combined with an online use that allowed me to use my local workstation is also a possibility.

* Certification of some kind is not required.  I am my own boss, and thus do not need to prove to anyone that I attended.

* I don't need to be taught basic coding at the same time.  I frankly know what events are, what loops do, and what variables are (though I'll admit a refresher on pointers and passing by address will probably be required).

Any help or pointers would be appreciated.
0
Comment
Question by:AndrewJayPollack
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 3
  • +4
16 Comments
 
LVL 12

Accepted Solution

by:
Salte earned 1200 total points
ID: 8175900
Actually, Visual Studio does come with several training projects that you can use to learn how to program windows programming etc.

Also, good old petzold is still a good source. True he never wrote one for MFC - he says he didn't do that because he never liked MFC. He has written one for .net but that one is for C# and not for C++.

There are a zillion books on "learn to program C++" or whatever written by someone of varying quality (both as programmers and as authors). In generall I will advice against such books, the online info provide most of the help you'll ever need and what you need beyond that is easier found on the web than in any book.

It also depends on what kind of programming you want to learn. If you want to make games or multimedia software you absolutely have to learn DirectX. DirectX also have several sample projects with sourcecode that you can look, compile and debug to learn.

If you want to do network stuff I will advice you to as much as possible either:

1. Use high level interfaces. These are not very portable to other platforms though but they often get the job done in a simple manner.

2. Use the standard Unix style socket interface. This is portable to many platforms.

Above all, try as much as possible and stay away from windows specific socket functions (WSA.... functions). There are two important exceptions to this:

a. You must in some cases at least initialize winsock before you can use it. WSAstartup or whatever it's called must be called.

b. There's a nifty WSA function that tells winsock to "send me a WM_ message whenever you get a packet to this socket". I can't recall the name of that function but it is a very useful one if you want to make a windows application that wait for network packets.

Apart from these you should in general stay away from all WSA functions, use socket(), bind(), etc instead. You probably also should put the WSA functions some place so they are easily identified so if you want to port the code they are easy to disable etc.

If you want to just make console programs and filters - stay away from ANY and all windows specific functions that you do not absolutely need. Stick to standard ANSI C++ and iostreams or at least FILE * streams. This is the most portable and will run on many platforms.

If your console program is very windows specific this does not apply and you can of course use whatever Win32 functions you feel for using. This is also the case if you want to make a quick console program just to test out a Win32 function to see how it works.

If you want to make servers you generally just write them using the specific windows interface to servers. You could try to stick to unix style demon programming but it would be difficult since windows does things in a different way. In unix you will typically fork a couple of times in order to create your own process group and go in background and stuff - in windows servers are managed in a completely different manner.

If you want to write drivers and do other stuff you absolutely must download the windows DDK (device driver kit), it contain all the libraries, headerfiles, sample code and documentation you need to write drivers for windows. Be aware that driver programming is VERY different from application programming.

Hope this is of help.
0
 
LVL 22

Expert Comment

by:nietod
ID: 8176177
Honestly, it doesn't sound to me like you need a class.

I would recommend you do a little reading instead.

Bjarne Stroustrup's book, "The C++ programming Language" might be a good one to start with.  It assume you know programming well, and that you just don't know C++.   There are other books like that too, some of them might be a little bit faster to read, the Stroustrup book spends a lot of time discussing why C++ has the features it does.  This is good to know, but slows things down and is not essential at the start.

I woudl also absolutely recommend--no matter what else you do--that you read "Effective C++" and "More effective C++" both by Scott Meyers.  These are extremely well regarded in the C++ community and are generally considered essential reading.  Each deals with about 20 to 30 serious pittfals that C++ programmers almost always fall into.  Reading these books will save you a great deal of grief and there are no other books that really cover these common problems as clearly and thoroughly.  

If your run into questions in your studying, this is as good a place to get answers as any.

Another good way to learn is to read the questions and answers here on EE.  Its definitly not organized in any way, but you will fidn a wide variety of topics covered, many that you aren't too likely to find in a book or course.
0
 
LVL 10

Expert Comment

by:substand
ID: 8176682
I would go enroll for a continuing education class at the local college, or perhaps there is a trade school in your area?  

For instance, at University of Houston, I just took a class that is exactly how you described it... I don't think most private companies would make enough money to warrant having everything you specified to teach VC++, gotta go with the government run wasteful institutions.

I doubt community college will have it, but something like ITT Tech probably will..
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 5

Author Comment

by:AndrewJayPollack
ID: 8177232
Thanks all for the comments.  I'll leave this open for a day and see what others have to say as well.

Substand, I live in Maine -- the options for continued ed are a bit more limited, though SMTC might have something.
0
 
LVL 2

Expert Comment

by:MirkoLMV
ID: 8177836
What about trying with Bloodshed Dev C++ ? Is a free compiler, compact, has an good IDE and a few examples, and issues stand-alone Windows applications.
Just using the keyword "C++ tutorials" will issue a lot of materials...Brook Miles, which uses the name "the Forger" has a good tutorial for Windows applications, and there are interesting materials at www.relisoft.com (issued by a bright author). And there are also many materials issued from bright authors...

Goog luck !
0
 
LVL 5

Author Comment

by:AndrewJayPollack
ID: 8178602
Thanks Mirko,  My goal with C++ is to write add ons and utilities associated with other tools, and sell them.  I have some experience with this.

My thinking is that going with the most mainstream of products will make it easier for me when I try to tie into other people's API's, some of which come documented as VC++ projects.

I'll end up producing some small stand alone applications, some dll addins, and some active-x controls.
0
 
LVL 12

Expert Comment

by:Salte
ID: 8179546
I would also recommend Bjarne Stroustrup's book "The C++ programming language" In fact I have it right next to me right now.

Yes, the various "learn C++ fast" or whatever is of varying quality but that particular book is written by the creator of C++ and I can vouch that it is definitely a good book. He has another book you might want to read as well "The design and evolution of C++".

Armed with those two books you shouldn't need any other books per se. Just try to get info from the web and information about the library is usually included with the compiler you get. gcc comes with extensive info pages which can be read by the 'info' command or in emacs. Visual Studio and Borland C++ builder uses F1 for help and they have extensive documentation included, both of the bare Win32 functions, the C library, the STL library as well as additional functions such as MFC and in Borland C++ Builder's case also full documentation of the VCL online.

If you download DirectX, DDK or some such they also come with extensive documentation, HOW-TOs and tutorials.

Apart from this you can get particular books for particular problems. But they are not necessarily C++ related. For example I will recommend the books by Donald Knuth in his "art of computer programming" series. There are three volumes and I have had much use for vol 1 and vol 2. Vol 3 is also useful if you need any searching or sorting. Vol 2 cover random algorithms and multiple precision (big numbers and high precision numbers) while vol 1 cover some basic math related to programming and some fundamental algorithms.

A book in parsing and compiler technique is also good to have even if you never plan to write a compiler yourself - it is good to learn a few tricks from it.

If you're interested in game programming some book on how to write games might also be good but they are unfortunately of extremely variable quality, some are ok while the majority are just crap and you might even feel the author had promised more on the cover than he kept after reading the book.

For network programming I will recommend Richard Stevens' books "TCP/IP illustrated". They are not C++ but C. But they cover network programming very well.

For driver development there are also some books out there but they are few and I don't think they are very high quality. Also, this is very system dependent and whatever you learn about WDM drivers will not at all help you if you want to make a driver for Linux and vice versa.

Alf
0
 
LVL 22

Expert Comment

by:nietod
ID: 8180263
>> For example I will recommend the books by Donald Knuth
>> in his "art of computer programming" series.
I would not!   That's like learning C++ programming by reading the C++ standard.   Its very difficult reading.  Once you understand a topic, the knuth books can hone it, but I wouldn't start with them.  Besides, they are purely on algorithms, which is not AndewJayPollack's concern.

>> For network programming I will recommend Richard
>> Stevens' books "TCP/IP illustrated"
Good.  I just bought it.   Like your stroustrup book, Its right beside me now, but that hasn't helped.  Maybe I should be sitting on it?  :-)
0
 
LVL 12

Expert Comment

by:Salte
ID: 8181401
I said:
>> >> For example I will recommend the books by Donald Knuth
>> >> in his "art of computer programming" series.

nietod said:

>> I would not!   That's like learning C++ programming by reading the C++ standard.   Its very difficult reading.  Once you understand a topic, the knuth books can hone it, but I wouldn't start with them.  Besides, they are purely on algorithms, which is not AndewJayPollack's concern.

I say:

True, they are not about C++ but they're a "must have" for a serious programmer :-) It is a drawback that the algorithms aren't given in C++ however. I wish someone could write a new edition of those books - they don't have to change the text or anything - well perhaps update a bit some of those algorithms has gotten more modern alternatives but it might be too much work to change too much of the text. If only they could change the algorithms to C++ would make them true gems! Well, they already are but they would be even more if the algorithms was shown in C++.

I said:

>> >> For network programming I will recommend Richard
>> >> Stevens' books "TCP/IP illustrated"

Nietod said:

>> Good.  I just bought it.   Like your stroustrup book, Its right beside me now, but that hasn't helped.  Maybe I should be sitting on it?  :-)

I say:
Perhaps it might help if you actually read them ;-)

Alf
0
 
LVL 22

Expert Comment

by:nietod
ID: 8181480
>> Perhaps it might help if you actually read them ;-)
Unfortuantely I can't turn the pages if I sit on it...
0
 
LVL 2

Expert Comment

by:MirkoLMV
ID: 8181526
I am very sorry because I did not pointed correctly some aspects related to the Bloodshed Dev C++.

It has most features needed for professional applications. It is possible to develop with it MDI applucations, threading, calling more processes (yes, CreateProcess) and other heavyweight aspects. It allows the developing of medium-sized applications, and only for very large applications is not reliable.
It's strong point is, however, the easines of use for beginners in Windows programming.

The www.relisoft.com site offers some classes in the manner of Visual C++ code, and I hav noticed other systems too, which can be only similar, because of the common design aim : the easier use of the same WindowsAPI components. Therefore, Visual C++ is particularly needed only in some cases : very large and demanding applications, collectives very accustomed to it, etc.

Anyway, two slightly different C++ compilers are offering a more rich experience, which allows an easier assimilations of other C++ features which may arise.

We should always consider a significant aspect : Windows API has some major features than one could guess when initiating on the classic C++. Resources, user-defined types (and Hungarian notation), call-back functions are just a part of WinAPI specific features which are basically creating a new C++ dialect as an extension of the conventional C++.

Good luck !
0
 

Expert Comment

by:TMM
ID: 8181670
0
 
LVL 7

Expert Comment

by:burcarpat
ID: 8209806

Salte,

> "I wish someone could write a new edition of those books - they don't have to change the text or anything - well perhaps update a bit some of those algorithms has gotten more modern alternatives but it might be too much work to change too much of the text. If only they could change the algorithms to C++ would make them true gems! Well, they already are but they would be even more if the algorithms was shown in C++."

check out robert sedgewick's "algorithms in c++" books.  the guy was a student of knuth and currently is a cs prof. from princeton.  not as comprehensive as knuth but pretty close...  personally, i use his books rather than knuth's for my daily needs.  far more easier to work with

...

AndrewJayPollack,

what you need is deitel & deitel's "c++ how to program" and a bunch of other cool books such as exceptional and effective c++ series from sutter and meyers and you should be ok.  stroustrup is good but for later, not when you are about to learn a lot of new stuff

knuth is totally unnecessary for you.  this is advanced algorithms and data structures book.  you don't need that to develop some small utilities and 3rd party add-ons.  the content of knuth's books are topics to grad level courses, for god's sake.  also, forget about "tcp/ip illustrated".  it's a good book but if you are going to use visual c++.net, the tool has many high-level libs that tackles the problem way more easily

i think the real question you need to answer is how much of a windows programmer you want to become.  'cause, if you are only going to be a windows person, then .net has a lot of stuff in it and you don't even need to know/learn details of c++ ( and, frankly, you are probably better off using c# rather than c++ in such a case ).  in such a case, you'd rather focus on learning .net library...

yet, if you want to be a cross-platform coder, than you might actually think about learning the details of c++ and some other core stuff such as tcp/ip and/or basic data structures, etc.

-b
0
 
LVL 22

Expert Comment

by:nietod
ID: 8209858
>> what you need is deitel & deitel's "c++ how to program"
Its a good book, but it assumes no prior knowledge of programming.  So most of its content is to teach programming, not C++.  In fact it is a poor way to learn C++ for an experienced programmer because it doesn't cover advanced C++ topics and OOP in much depth.
0
 
LVL 7

Expert Comment

by:burcarpat
ID: 8209949
> "Its a good book, but it assumes no prior knowledge of programming.  So most of its content is to teach programming, not C++.  In fact it is a poor way to learn C++ for an experienced programmer because it doesn't cover advanced C++ topics and OOP in much depth."

that's true but it will still be beneficial to a c++ newbie.  when you are learning something, sometimes you just need the simplest possible explanation.  doesn't matter how much programming you know.  and, also, the effective and exceptional series will fill the gap.  so, together, they are the perfect combo ;-)

-b
0
 
LVL 5

Author Comment

by:AndrewJayPollack
ID: 8225109
I'm giving Salte the primary points from this, but also plan to distribute additional points based on how I've used the information and how useful it was to me specifically (without reflection on how valid it may be for other people).

Nietod: 150
burcarpat 50
mirkolmv 50
0

Featured Post

Enroll in August's Course of the Month

August's CompTIA IT Fundamentals course includes 19 hours of basic computer principle modules and prepares you for the certification exam. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
Suggested Courses
Course of the Month10 days, 2 hours left to enroll

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question