Click here to Skip to main content

peterchen - Professional Profile

Summary

35,412
Author
2,776
Authority
95,059
Debator
37
Editor
204
Enquirer
4,046
Organiser
4,693
Participant
Peter is tired of being called "Mr. Chen", even so certain individuals insist on it. No, he's not chinese.
 
Peter has seen lots of boxes you youngsters wouldn't even accept as calculators. He is proud of having visited the insides of a 16 Bit Machine.
 
In his spare time he ponders new ways of turning groceries into biohazards, or tries to coax South American officials to add some stamps to his passport.
 
Beyond these trivialities Peter works for Klippel[^], a small german company that wants to make mankind happier by selling them novel loudspeaker measurement equipment.
 

Where are you from?[^]



Please, if you are using one of my articles for anything, just leave me a comment. Seeing that this stuff is actually useful to someone is what keeps me posting and updating them.
Should you happen to not like it, tell me, too
Member since Thursday, July 6, 2000 (12 years, 10 months)
  • 29 Sep 2004: MFC/C++ Aug 2004

Contributions

Articles 20 (Legend)
Tech Blogs 0
Messages 26,122 (Master)
Q&A Questions 3
Q&A Answers 8
Tips/Tricks 1
Comments 3

Links

Groups

Below is the list of groups in which the member is participating


Soap Box 1.0
United States United States
Member
Social Group
members

This _private_ forum is set up to be a place where political and social issues, including American politics and global warming, can be discussed in a reasonably civil manner. Anyone who has been an active member* of Code Project for six months is welcome to apply for membership but this forum does not tolerate trolling posts, or posters who wish to be disagreeable. Those who choose to become uncivil, insulting, or childish will be warned and, for repeated violations, removed from membership.
 
* That means that you have posted regularly or had at least one article published.

CodeProject Insiders
United States United States
Member
Collaborative Group
members

No Biography provided

Reputation

For more information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege, and the given member types also gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilverAdmin
Store personal files in your account areaplatinumplatinumSitebuilder, Subeditor, Supporter, Editor, Staff
Have live hyperlinks in your biographybronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Edit a Question in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Edit an Answer in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Delete a Question in Q&AYesSubeditor, Protector, Editor, Admin
Delete an Answer in Q&AYesSubeditor, Protector, Editor, Admin
Report an Articlesilversilversilversilver
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubeditor, Mentor, Protector, Editor, Staff, Admin
Edit other members' articlesSubeditor, Protector, Editor, Admin
Create an article without requiring moderationplatinumSubeditor, Mentor, Protector, Editor, Staff, Admin
Report a forum messagesilversilverbronzeProtector, Editor, Admin
Create a new tagsilversilversilversilverAdmin
Modify a tagsilversilversilversilverAdmin

Actions with a green tick can be performed by this member.


 
You must Sign In to use this message board.
Search this forum  
GeneralHow to become a C++ Pro Pin
Tuesday, August 17, 2004 11:51 AM by peterchen

As response to a question how to learn C++ and become a "pro", "not only using DOS commands, but also MFC"

The following is a roadmap to "Mastering C++" - how I would teach it.
Some people might want to reorder the list which is fine with me - it all
depends on the teacher and the tools.

Chapter (I) Learning the language

  1. basic language: type system, control structures, functions, scope.
  2. basic concepts: programming style, structuring your program using
    functions, the difference between contract, declaration and implementation
  3. language: pointers.

    pointer arithmetic, referencing, dereferencing, pointers vs. references,
    pointer to pointer, adress of pointer, allocating raw memory, etc.

    If you didn't succeed with (3): learn pointers

    If you don't get it the third time, give up. Really. I am serious.*
  4. debugging. assert, trace, using a debugger, distrusting yourself,
    acquiring some programming style.
  5. language: Function overloading.
  6. language: classes. Member functions, constructor, destructor
  7. concepts: encapsulation, simple object design, encapsulating state
  8. lanuage: learn exceptions **
  9. repeat concepts: good programming style, contract vs. declaration
    vs. implementation
  10. concepts: inheritance, polymorphy
  11. concepts: "enhanced" object design with the new knowledge
    (exceptions and polymorphy)
  12. language: some refined points

    const-correctness, default constructor, copy constructor vs. assignment
    operator, how to make a class behave like a built in type (but skip operator
    overloading)
  13. language: templates: function templates, class templates, template
    specialization,
  14. get an introduction on the STL (standard template library, which
    makes the biggest part of the C++ run time library)
  15. language: ok, now, just as sugar, operator overloading, and how to
    make types truly act like built-ins
  16. libraries: refine your knowledge on the STL

     

NOW you are ready to leave the console window

 

Chapter (II) ...but also MFC

  1. Windows API basics: This helps understanding some of the
    mumbo-jumbo and awkwardnesses in the MFC much better

    Event Driven Programming, Windows, Window Handles, Window Messages

    (you can omit *creating* windows here, since this is a painful task made much
    easier by frameworks - but the rest is important to understand and makes
    working with the MFC easier).

    GDI, standard controls etc.
  2. Do the MFC "Scribble" tutorial, just following the main path (up to
    "printing" or so). Don't try to understand everything, just get a feeling for
    the "flow".
  3. Do the "Scribble" tutorial again, this time exploring the background
    explanations etc.

     

Chapter (II) Become a Pro

  1. Notice that, once you are here, you are the last remaining person on earth
    doing MFC Wink | ;)
  2. Learn enhanced concepts: Exception Safety, Patterns etc. and all the fine
    parts I have forgotten above
  3. Learn "Industry Power" stuff: Automated Tests, Version Control,
    Finalizing, and everything that belongs to running a larger project.
 

 

<b>Warning:</b> this course is a pain. In the ass, in the back, in your
fingers, everywhere. Yet, it's IMO one of the shorter routes to a pro. To be
true, you could start with th MFC stuff pretty much after (I)-(j), but this
makes you only half-a-programmer, and you might acquire some misfeats that are
hard to get rid of later.



The order of the list itself clearly shows some drawbacks of the C++ language,
namely, the position of exceptions, and especially the STLBoth are standard
tools that should be introduced much earlier, but require good understanding of
the basic language features.





*) I pretty much agree with the thought that understanding pointers
needs a certain "wiring" of the brain. All other stuff in C++ can be learned
by a decently intelligent person. Pointers are different, you either get them,
or you don't. If you can't do pointers, C++ will be a pain all the
time.



**) that's really late, to late. They are an important tool for error
handling - and people should learn it as early as possible. However, it
doesn't make much sense wihtout a good grasp on scope and code flow. I would
do exceptions right after (b), but books/courses don't do it without classes.


 

we are here to help each other get through this thing, whatever it is Vonnegut jr.

sighist || Agile Programming | doxygen

GeneralRe: How to become a C++ Pro Pinmembercall_me_Cincin_please29 Mar '10 - 23:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   


Advertise | Privacy | Mobile
Web02 | 2.6.130523.1 | Last Updated 25 May 2013
Copyright © CodeProject, 1999-2013
All Rights Reserved. Terms of Use
Layout: fixed | fluid