Name: Anonymous 2013-01-13 2:42
Why C++
C++ is the best general purpose programming language. In a happy coincidence, it is also the most popular programming language. C++ is a multiparadigm language. It supports not only object-oriented programming, but functional, generic, and traditional structured programming. It supports combinations of those styles. You can attack a problem with the style that best suits it. In fact, When All Else Fails, you can turn to low-level, unstructured constructs. It's not pretty, but the language does not artificially restrict you from getting the job done. I will not argue too strongly here why C++ is the best general purpose programming language, but two deviations in particular need to be addressed.
Why Not C
First, C. C is the second best general purpose programming language, but there is a far cry between the second best and the best. C has a wonderful machine model and it is a very small language. The problem with C is that it is so small that it doesn't contain enough support for modern programming techniques. C has insufficient support for object-oriented programming and no support for generic programming. It's a great structured language, but that's all. Unfortunately, C is still with us today. C was very popular; Unix was written in C. For some insane reason, GNU/Linux and most GNU/Linux programs are still written in C. I believe that the underlying reason is lack of vision. Anyways, C should not be used in this day and age. C should not be learned. C should not be taught. C is not a stepping stone to learning C++; it is a detour. I myself learned C two years before learning C++, and this was a mistake. It is best to learn C++ directly and to never waste time with C. If for some reason you must later program in C, you can quickly learn to give up the conveniences of C++ and learn C style. There won't be unlearning involved, because C simply doesn't support C++ techniques. If you learn C before C++, as I did, you will have to unlearn C style and C constructs. While I am a rapid unlearner, you probably aren't, and in any case you shouldn't waste your time with it.
Why Not Java
Second, Java. Java is a terrible programming language developed by incompetent programmers. It is not an undue exaggeration to say that everything Java does is wrong. There is nothing interesting that can be learned from Java, except how such an awful programming language can become so popular. Java is said to increase programmer productivity, but this is a half-truth. Java increases the productivity of incompetent programmers; it harms the productivity of excellent programmers. Since 90% of programmers are incompetent, the overall effect is that Java increases programmer productivity. I submit that this is the exact opposite of a good thing. Do not waste time with Java; let the incompetent programmers revel in their miserable language while you embrace the wonder that is C++.
C++ is the best general purpose programming language. In a happy coincidence, it is also the most popular programming language. C++ is a multiparadigm language. It supports not only object-oriented programming, but functional, generic, and traditional structured programming. It supports combinations of those styles. You can attack a problem with the style that best suits it. In fact, When All Else Fails, you can turn to low-level, unstructured constructs. It's not pretty, but the language does not artificially restrict you from getting the job done. I will not argue too strongly here why C++ is the best general purpose programming language, but two deviations in particular need to be addressed.
Why Not C
First, C. C is the second best general purpose programming language, but there is a far cry between the second best and the best. C has a wonderful machine model and it is a very small language. The problem with C is that it is so small that it doesn't contain enough support for modern programming techniques. C has insufficient support for object-oriented programming and no support for generic programming. It's a great structured language, but that's all. Unfortunately, C is still with us today. C was very popular; Unix was written in C. For some insane reason, GNU/Linux and most GNU/Linux programs are still written in C. I believe that the underlying reason is lack of vision. Anyways, C should not be used in this day and age. C should not be learned. C should not be taught. C is not a stepping stone to learning C++; it is a detour. I myself learned C two years before learning C++, and this was a mistake. It is best to learn C++ directly and to never waste time with C. If for some reason you must later program in C, you can quickly learn to give up the conveniences of C++ and learn C style. There won't be unlearning involved, because C simply doesn't support C++ techniques. If you learn C before C++, as I did, you will have to unlearn C style and C constructs. While I am a rapid unlearner, you probably aren't, and in any case you shouldn't waste your time with it.
Why Not Java
Second, Java. Java is a terrible programming language developed by incompetent programmers. It is not an undue exaggeration to say that everything Java does is wrong. There is nothing interesting that can be learned from Java, except how such an awful programming language can become so popular. Java is said to increase programmer productivity, but this is a half-truth. Java increases the productivity of incompetent programmers; it harms the productivity of excellent programmers. Since 90% of programmers are incompetent, the overall effect is that Java increases programmer productivity. I submit that this is the exact opposite of a good thing. Do not waste time with Java; let the incompetent programmers revel in their miserable language while you embrace the wonder that is C++.