So sitting in bed on this sunday morning thinking about what to spend my day off from developing (as my job) doing.
So I made a cup of tea, phoned dell about a new PC (gave me £295 price, might hang on a little while until I need one).
Then started to read my blogs (via Live ofcourse ).
I came across this post
"On one hand, I think that you're not a "real programmer" unless you can write C/C++ (or similar) and have a good sense of the assembler that will be output by the compiler."
"However, I have to admit that modern languages like C# and Java are really compelling and incredibly powerful... I just feel that anyone who learns these higher level languages without understanding what's happening a little closer to the metal isn't really a programmer."
Have to say, I fully agree with the statement. As a VB6/C# trainee developer (on placement from Degree) I feel I do not fully understand the lower aspects, which I feel I need to know just to gain a better understand (and also to be able to understand the code when given to me).
Next year for my final year of my CS degree, I will be doing a networking module which will be mainly Linux and C++ (knowing the lecturer) so I am going to get some more exposure to C++ then.
But I was wondering if I should purchase this book:
to provide me a firm foundation for C++ and managed C++ (personally I have to say I don't even know how different they are).
Given that I am currently in the process of reading up C# for 70-536 exam and got 4-5 other books I have in my reading pile it might not get a look in for a while.
SOOO my question for you all is.
// As a C# developer should I actively increase my knowledge of C++.
// How many of you agree with the quote above?
// How difference is the standard ANSI C++ to Managed Visual C++ ??? How does the speed of execution compare?
It would be great if you could give me some advice on this. In the habit at the moment of highlighting all my weaknesses (Design Patterns, UML, C++, SQL 2005 (fine with 2000 so not as important)) and wanting to do something about them but without the time to do it
Cheers for reading
ben2004uk wrote:As a C# developer should I actively increase my knowledge of C++?
Depends what are you doing in C#.
Currently using C# within ASP.net and web applications. Created 2-3 sites using it.
Created a few small apps using it recently - Code Counter for our Sourcesafe, PGP Command Line encryption (using COM object for PGP), Web Application deployment tool - sets up IIS Virtual Directory, Application Pools and NTFS permissions.
Lot of VB6 work at the moment
Got to do a message counter soon, which i'm thinking C# (or maybe managed/unmanaged C++) for the speed as the VB6 one takes over two hours to run at the moment. Nothing overally interesting
You don't need to go and learn C++ or any low-level language per say. However, a good understanding of programming language concepts, operating systems and processor architecture is always good for any software developer. If you're doing a CS course at a Univ, they should have at least 3 intro courses on each of these which is a pretty good start and if you enjoy it, you can of course go more deeply into some of those. Having that background, C# can itself give you good experience with the various concepts of programming languages. You also can get some of the higher level VM stuff.
That said, there are some things you might not get actual experience with without messing with C/C++ compilers - like the CLR's stack based machine doesn't reflect a real x86 arch.
If you want to learn C/C++ there are only two books that you should read to get started:
K&R (The C Programming Language)
Stroustrup (The C++ Programming Language)
Stroustrup is the harder to read but if you manage to get through it, it should give you a good knowledge of Object Oriented Programming.
martin_lovick wrote:Stroustrup is the harder to read but if you manage to get through it, it should give you a good knowledge of Object Oriented Programming.
someone strong in C# wouldn't need to cover OOP, it's just mastering the way C++ works and its limitations. (Memory issues, illegal to return arrays from functions, header files, static librarites, and so on)
i think a combination of stroustrup and K&R should cover those topics too
I'd recommend learning straight C, if you can. Dealing with aggravating quirks isn't something C# teaches very well