ifacethoughts

C++ Is The New, Or Old, Linux

Where else can you see continuous criticism, unfortunately, most of it not constructive! Actually we have seen this a lot with OOP as well. There are some common elements to such kind of criticisms:

  • The subject gets compared to other alternatives feature by feature, without considering the context. Every design, whether of a programming language or OS or for that matter any tool, goes through a series of decisions. And they result in both pros and cons. It works efficiently if the pros are inline with the purpose it was designed with.
  • There is no genuine argument about how it does something bad. Unfortunately many feel that doing differently from what they know is doing bad. I think Linux has been hurt a lot because of this.
  • A true critique should not look at just one point in time, but look at evolution of the subject. I wonder how many have really gone through The Design and Evolution of C++, which explains a lot of decisions taken. This is important because it puts you in the designer’s shoes and gives you a chance to make a better decision.
  • The recommended usage is usually skipped, and all kinds of acrobatics are tried to show how the subject allows users to do wrong things. This seems to be a trend, especially in programming languages, to restrict the programmer instead of giving freedom. Again, it might work for some, not for some others.
  • The criticism is mostly personal taste and preferences. Not that they should be ignored, but they can used to judge suitability only for self, not for others. Rather, they cannot be included in global arguments. If it is not suitable I cannot imaging someone forcing you to use it.
  • The fact that the subject is different from the alternatives might mean that they have different purposes. Without acknowledging this difference the subject is bashed because some things are not easy to do.
  • The subject is blamed if its users do not do well to use it properly. This is valid in some cases, but not all. Especially when they are programmers who have knowledge of the domain. A point to note here is that C++ does not intend to be a simple language, two of its aims are compatibility with C and high performance, which might draw complexity.

I think a good and constructive criticism will show how can one do better than the subject in a given context. That is where the comparison is useful, not on a point-to-point match. C++ has seen too many criticisms explaining how it is unsuitable for that programmer, which no one can argue. Unfortuately they are put to show as if it is unsuitable for everyone else.

I think it might be helpful to read the following on C++ to get a bigger picture:

There have been criticisms earlier, but all of them look at what C++ does not have. It might be informative to find out why the elements are not there.

Discussion [Participate or Link]

  1. hgdomainnames » Blog Archive » C++ Is The New, Or Old, Linux said:

    […] You can read more here […]

  2. Greg M said:

    This seems to be a trend, especially in programming languages, to restrict the programmer instead of giving freedom. Again, it might work for some, not for some others.

    Yes, it works for people reading, maintaining, enhancing or refactoring the code, not for people writing it. But sometimes people take years to realise that the last of these is by far the least important. Even in a single-programmer project of medium complexity this is true.

    That is _my_ chief criticism of C++. In trying to provide the low-level facilities of C, it becomes too complex to be an effective high-level language, without becoming a better low-level one than C. And mid-level languages are just pointless – if you need to work at both ends of the spectrum then your project is large enough to use multiple languages.

  3. Abhijit Nadgouda said:

    Greg, I completely agree with your criticism, except that it should be directed towards the programmers than the language itself. I can very well write unmaintainable code in other languages, so it is my incapability. I believe the fault of C++ is there are too many recommendations, and the good ones are not in many places.

    Every program needs a balance of performance, flexibility, maintainability and extensibility. IMHO, freedom to a programmer lets him/her choose this balance as required.

  4. Popular Programming Languages | iface thoughts said:

    […] flexibility and also acknowledge that it is not easy. But I think the difficulty to understand its underlying philosophy is hurting much more than anything […]

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.

freshthoughts

contactme

Abhijit Nadgouda
iface Consulting
India
+91 9819820312
My bookmarks

badgesand...

This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.