And, according to that article, they only compared 4 different languages. I think that C could've performed better (C compilers usually give little faster code than C++ compilers do) and well-written and optimized Assembly could do well as well.
The article (or better: the paper which the article is referencing) says that C++ is the "best-performing" programming language. That's a whole different thing (or everyone would still be coding in assembler).
C/C++ has always been somewhat elusive for me; during study and work so far, I did almost everything BUT C/C++. So, how to get started on modern C++? Can anyone recommend books, websites, best practices or other resources?
I know the Java guys are very fond of their eclipse/netbeans/IDEA and ant/maven; what do C++ projects nowadays look like and what are the typical tools used to code and build? Are there any library collections or tools one should definitely check out? Are there any "industry standards"?
And while we are at it: what about COBOL? Any chance of learning that without having a 40 ton mainframe and the necessary nuclear power plant to run it at home?
Visual Studio is common enough in the games industry to be considered a standard for C++ development, but you might also try Sun/Solaris Studio... assuming want an IDE, that is.
Further study of the topic is from the Scott Meyers books, which are very clear and well-written.
Certainly on Windows, Visual Studio is popular.
Back during my 10 year stint doing C++, I held the opinion that it took on the order of two years of programming C++ full time to master the language. If you are looking for the full language, it is not clear that two years is adequate.
Ok, so my advice about COBOL. If you get stuck writing a lot of RPG, then COBOL is a good rescue. Otherwise, it thought to cause brain damage, and is best to be avoided.
Visual Studio is by far the best C++ IDE, even more when you use some plugins like Visual Assist and ViEmu (that last one depends on one's fondness for vi, of course ;) )
I don't think it's practically feasible for an average programmer to learn the whole language (or even the part that is necessary to know to do 'modern' C++ programming) in their spare time, with no or little prior understanding of lower level programming (memory layout, compilation steps, ...). It has many features and most are very intricate, and it's very easy to get stuck for several evenings on something that experienced C++ users wouldn't even recognize as a stumbling block. 'Modern' C++ is full of template use, very hard to read libraries so it's hard to learn from them, and the quality of information online varies widely. I agree with the above poster that it would take 2 years of full time using C++ to consider one self an 'experienced' C++ programmer.
That said, I still think the Stroustrup is the first book anyone learning C++ should read, although that's not a popular opinion (actually I think one should start with the K&R but I consider C prerequisite knowledge). Then Koenig & Moo, Alexandrescu, then the Meyers & Lippman series. While reading these one should do the exercises and parallel with that implement a real project.
The above plan is completely unrealistic though, so i guess learning C++ like everybody else (being thrown into a project and sink or swim) is the more realistic route :)
I've been programming mostly in C++ for ten years. There has been a time when I was proud of being knowledgeable about its many intricacies. Nowadays, I don't do that anymore.
I recommend you avoid trying to master C++: it's a gigantic waste of your time, of your brains and of your productivity. Lots of useless complexity. Just like learning Perl is (been there, done that, too).
First of all, for practical reasons, do not learn C++. Sure, dive into C, it'll teach you a great deal about programming close to the metal. But I consider C++ unnecessary these days, outside niches such as game programming. You'll be an order of magnitude more productive if you go with a higher level language and drop down to pure C when you need performance.
That being said, if you insist on C++, Visual Studio on Windows, XCode on Mac and KDevelop on Linux would be my IDEs of choice. On Linux and Mac most people use vim or emacs though. Libraries to look into would be the standard STL and Boost. Qt or wxWidgets for GUIs.
COBOL? I'm sure you can run it on a modern computer, hell, my iphone is an order of magnitude more powerful than the mainframes from 30-40 years ago... but in the name of all that's good and holy, why would you ever want to do that?
There are still a lot of banking applications in COBOL and other ooold languages around - I have always been wondering how much of a financially interesting niche this could be... work few hours a week and bill them royally since there are not too many people around who can do it anymore and a lot of them are bound to retire sooner or later.
It mostly depends on your definition of 'higher level' (since all of these languages are Turing Complete languages). I've heard interpreted languages referred to as higher level because of things like dynamic typing (also being typesafe) and their variety of built in data structures and methods that create a greater level of abstraction for the programmer. I think the 'higher level' term is used often to refer to observed levels of abstraction even if it's not technically accurate.
C++ suffers from too many options/features. There are too many programming paradigms and styles one can use so it may get messy if one is not adherent to a personal style. On the other hand, you might want to check out the STL which is the most beautiful example of generic programming i know (and also the hardest to debug).
I don't know about IDEs, does vim count?
Learning COBOL can only guarantee you a job as a specimen in the programming museum nowadays.
20 comments
[ 2.2 ms ] story [ 61.0 ms ] threadI know the Java guys are very fond of their eclipse/netbeans/IDEA and ant/maven; what do C++ projects nowadays look like and what are the typical tools used to code and build? Are there any library collections or tools one should definitely check out? Are there any "industry standards"?
And while we are at it: what about COBOL? Any chance of learning that without having a 40 ton mainframe and the necessary nuclear power plant to run it at home?
Further study of the topic is from the Scott Meyers books, which are very clear and well-written.
Certainly on Windows, Visual Studio is popular.
Back during my 10 year stint doing C++, I held the opinion that it took on the order of two years of programming C++ full time to master the language. If you are looking for the full language, it is not clear that two years is adequate.
Ok, so my advice about COBOL. If you get stuck writing a lot of RPG, then COBOL is a good rescue. Otherwise, it thought to cause brain damage, and is best to be avoided.
I don't think it's practically feasible for an average programmer to learn the whole language (or even the part that is necessary to know to do 'modern' C++ programming) in their spare time, with no or little prior understanding of lower level programming (memory layout, compilation steps, ...). It has many features and most are very intricate, and it's very easy to get stuck for several evenings on something that experienced C++ users wouldn't even recognize as a stumbling block. 'Modern' C++ is full of template use, very hard to read libraries so it's hard to learn from them, and the quality of information online varies widely. I agree with the above poster that it would take 2 years of full time using C++ to consider one self an 'experienced' C++ programmer.
That said, I still think the Stroustrup is the first book anyone learning C++ should read, although that's not a popular opinion (actually I think one should start with the K&R but I consider C prerequisite knowledge). Then Koenig & Moo, Alexandrescu, then the Meyers & Lippman series. While reading these one should do the exercises and parallel with that implement a real project.
The above plan is completely unrealistic though, so i guess learning C++ like everybody else (being thrown into a project and sink or swim) is the more realistic route :)
I recommend you avoid trying to master C++: it's a gigantic waste of your time, of your brains and of your productivity. Lots of useless complexity. Just like learning Perl is (been there, done that, too).
OTOH, C is a language worth learning well.
That being said, if you insist on C++, Visual Studio on Windows, XCode on Mac and KDevelop on Linux would be my IDEs of choice. On Linux and Mac most people use vim or emacs though. Libraries to look into would be the standard STL and Boost. Qt or wxWidgets for GUIs.
COBOL? I'm sure you can run it on a modern computer, hell, my iphone is an order of magnitude more powerful than the mainframes from 30-40 years ago... but in the name of all that's good and holy, why would you ever want to do that?
There are still a lot of banking applications in COBOL and other ooold languages around - I have always been wondering how much of a financially interesting niche this could be... work few hours a week and bill them royally since there are not too many people around who can do it anymore and a lot of them are bound to retire sooner or later.
I don't know about IDEs, does vim count?
Learning COBOL can only guarantee you a job as a specimen in the programming museum nowadays.
Though how do you write unit tests in a text editor?