Link to home
Start Free TrialLog in
Avatar of Pra Sys
Pra SysFlag for India

asked on

How can I learn about how to design/architect projects using c++?

I would like to know any good sources of knowledge about learning/understanding how to design projects using c++. What are best practices, tricks and tips etc? Please suggest if any good book is available. For example, how to decide which design patterns to use, whether to use multithreading, which syncronisation object to use etc. Thanks.
SOLUTION
Avatar of evilrix
evilrix
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jafrazee
jafrazee

The big question is why are do you want to use C++.  I have used C++ for many things in the past that I now use C# for now.  The only time I use C++ now for are speed related functions,  C++ is much faster.  For example device communication, image processing, and background tasks.


A good book to start with is Teach Yourself C++ in 21 Days

http://newdata.box.sk/bx/c/

Multithreading is an entire discipline all to itself. In general, multithreading should be avoided unless you are already an experienced developer. It will cause you all sorts of problems that are almost impossible for a junior developer to solve. (I'm the author of the best selling book on multithreaded programming under Microsoft Windows, called Multithreading Applications in Win32.) You can also use libraries like ConcRT that make multithreading much easier, but it still isn't "easy."

Learn multithreading or learn large project design. Don't tackle them both at the same time.
Avatar of Pra Sys

ASKER

Thanks to evlirix. He has correctly put what I actually wanted to ask - "It's like asking how can I learn how to be a building architect using a hammer" (for me how can I be a designer or acthitect for large scale and complex projects). Any suggestions/advices?

@evilrix
The links given by you have exhaustive stuff. Is it really necessary to know all that or is there a set of important or widely used data structures, algorithms, design patterns etc which I can focus on? Thanks.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Use this:
http://www.cplusplus.com/doc/tutorial/

http://www.cplusplus.com/ is one of the best resources for C++ (including beginners).
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Pra Sys

ASKER

ok. So from all the comments I now understand that design and architecture is programming language independent. Am I correct? Or choice of programming environment affect design and architecure? I liked points mentioned by evilrix and paulsuave. But things given by evilrix can be language dependent as not all algos, des patterns and data structures are supported by all languages. or they are supported? Any comments are appreciated.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Heh. It seems Sara and I do not agree. :)

FWIW, I work in a multi-disciplinary team and each of use can code in multiple languages and we always design first and then decide what language will be used once we know how our solution is going to hang together. Some, solutions will require the use of multiple languages. For example, if we are developing a data service that will probably be written in C++ but interfaces to our Hadoop cluster will be written in either Python or Java.

I still maintain the language is just a tool and trying to make your solution fit the language you are using will always be a compromise. That doesn't mean you won't make things work but it does mean you may not get the best solution possible.
i don't think that your points were a contradiction to that what i said about the importance of a language to the design.

if the design decision was made by  a c programmer, they rarely will think in categories of polymorphism or design patterns. if i have a java programmer i wouldn't expect them making a design that needs multiple inheritence. if you have someone who is equally skilled in more languages (is that possible? wouldn't there be a favorite language among?), and let them make a design, i would bet the choice of language is made at the very beginning of the design phase and the one who makes the language decision is well aware that it matches to the skill of available programmers and to the nature of the language. i currently work on a project where they have 20 c++ programmers and a c++ project with more than 200 man-years work in it and they nevertheless decided to make a new gui with java. the decision was made by management.

i have long year experience on cobol, c, fortran and pascal. i have few experiences on java, and .NET. but regarding design i always would make a c++ design cause that is my favorite language for more than 20 years. so perhaps i wouldn't be so much an appropriate designer for a web 2.0 project even if know all requirements from a c++ project.

Sara
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Pra Sys

ASKER

Thanks Kashyap for simplifying the details. I think list given by evilrix was based on my c++ related question. Mastering those things will help me to get better control over physical design using c++ (which is my primary language for programming). This also explains what sara was trying to emphsize in terms of impact of programming language on design. I will keep a copy of Lakos design book and will study that. I think the responses so far have given a good direction to know how to acquire skills to design project in any language especially in c++ which was my basic question. Thanks everyone. Appreciate your time.
Avatar of Pra Sys

ASKER

Experts have given me a proper direction on how to acquire required knowledge to design projects in any language especially in c++. Thanks.