Reputation: 67213
I want to learn c++ as I will be working on image recognition, etc.
I have a few years solid experience in C# and I have made stuff with C# so I'm not lacking experience. What is a good book which will help me make the transition (I will still be doing C# as it is my main skill)?
Also, would you agree that to be good at C++, a lot of experience and being proficient in C# will help? As C++ is harder...
Thanks
Upvotes: 2
Views: 1706
Reputation: 15253
I learned C++ in college and found the Dietel book extremely thorough.
Being proficient in C# helps but C++ is closer to C.
Upvotes: 0
Reputation:
I've actually done the conversion the other way around. I wouldn't say C++ is hard. Only as hard as you can make it. There are certain standard to follow with such things as memory allocation, pointers, type casting and etc. But it's nothing you cannot iron out as you get deeper into it.
Actually, (and some may see this as an overkill) if i were you i would try to get a decent assembler book and read the first few chapters on registers, memory addresses, stack, heap and etc. I think it'll paint a better picture for you when you start messing with memory management, which is probably the hardest thing to grasp in C/C++.
Upvotes: 1
Reputation: 92854
Also, would you agree that to be good at C++, a lot of experience and being proficient in C# will help? As C++ is harder.
Yeah I agree with you on the fact that C++ is harder. In fact it is considered to be one of the most complicated programming languages. Its syntax(at some places) is a bit ugly as compared to C# and Java but yeah it is one of the most widely used language in the industry, so best of luck with it.
As far as good books are concerned I'll go with
1) C++ Primer by Stan Lippman (strongly recommended)
2) Thinking in C++ by Bruce Eckel
and style books like Effective and More Effective C++ by Scott Mayers.
Apart from that the 'Bible' for C++ is "The C++ Programming Language by Stroustrup".
Enjoy!
Upvotes: 0
Reputation: 56381
I don't have any links on the subject, but I can offer some general advice.
Upvotes: 0
Reputation: 1536
Since you already know c# you already know more syntax than there is in c++. There are very few c++ syntax elements that you'll need that are not also available in C#.
Here are the main areas where I think you see some challenges:
a) Many, many constructs in c# are simply not available in c++. I'm talking about language features not data types. i.e. Generic Collections, etc... while similar results can be obtained with c++ language features it is soooo much more work in c++
b) It's really the libraries/framework you choose that are going to be substantially different.
c) Why not mix the two. They both play well together. Do your image processing work in a c++ library but keep the work there to a minimum and wrap the whole thing in c# for consumption in a UI. Of course the interoperability will be another challenge but it is well documented on the web.
As far as good book goes... there is still none better than Steve McConnell's "Code Complete"
Good Luck.
Upvotes: 1
Reputation: 1596
Also, would you agree that to be good at C++, a lot of experience and being proficient in C# will help? As C++ is harder...
Yes I agree with that. A lot of experience in development in any language helps in my opinion. With experience comes appreciation of best practices. Those practices may be different, but you will not dismiss them outright because you know (from your experience) that they are usually good for you.
Good book... Get "C++ primer" with "Effective (and more effective) C++" and you will be all set. Then if you need STL get yourself Josuttis and "Effective STL". Good luck
Upvotes: 2