Your statement is 100% correct, only misses the point

Hello, Habr! I present to you the translation of the article "Your statement is 100% correct but misses the entire point" .

Imagine programming languages ​​somewhere on the Internet. One of the architectural issues that can be discussed is the garbage collector. One panellist mentions the benefits of garbage collection like this:
Garbage collectors are cool and save a lot of energy. If your application does not have strict requirements for response time, then the absence of the need to take care of memory management frees the developer and can significantly increase its efficiency.

This is a fairly neutral statement that most people would agree with, even if they were working on code that has strict requirements for response time. And yet, inevitably, someone will present such a counterargument:
No! If you have dangling pointers, then the memory will never be freed and in any case you will have to fix it by performing manual memory management. Garbage collectors do not magically correct all errors.
If you carefully read these sentences, you will notice that each statement in them is true. That is why it is so unpleasant to dispute it. Most people with an engineering degree in general are willing to admit their mistakes when they are presented with evidence that their statements are incorrect. This, of course, does not apply to everyone, as some people are willing to intentionally disagree with any facts that contradict their prejudices. We will ignore such people in this article.

Being true, these statements ignore the wider context of the question, which contains the following points:

  • — ( , 1 10 ?), , , , . . — (100-1000 );
  • , , ;
  • , ;
  • , , , , , .

In short, the arguments are actually correct, but they miss the whole point of the comment to which they respond. This, unfortunately, is often found in discussions on the Internet. Let's see a few examples.

Computer security


This statement:
Using HTTPS for all traffic is good for security and anonymity.

You can counterargument, for example, like this:

This does not provide any real security. If the NSA wants to receive your data, it will burst into your apartment and receive it.

Again, this statement is absolutely true. On the other hand, if you are not the leader of the state or are not dealing with international drug cartels, you are unlikely to become a direct target of the NSA.

If you think this is a stupid counterargument that no one will ever do, then I completely agree with you. I also saw how it was used in the real world. I wish I didn’t see it.

Errors caused by incompetence


High-level programming languages ​​are easy to use:
Buffer overflow programming languages ​​are great for development in terms of security and simplicity.

But not for everyone:
You can achieve the same in C, just be careful.

This is again true. If each developer working on the code base will be 100% concentrated and 100% careful 100% of the time, then writing error-free code is possible. Reality again and again showed that this is impossible, a person is simply not able to work flawlessly for a long time.

YAGNI ? What else is YAGNI?


Everything is simple:
Processing text files with Python is really cool and easy.

And not so simple:

Python is complete nonsense, it will not cope with the task when you need to process ten million files per second on the built-in microcontroller, using a maximum of 2 KB of RAM.

Yes. Yes it is. In that case, that would be the wrong choice. You are absolutely right. Thank you for your insight, good sir, here is a brilliant gold medal in memory of your important contribution to this discussion.

What could be the reason for this?


The only thing the school prepares you for is that it is important to be right. If you give the correct answers in the test, you will get a good mark. And if you don’t give it, it’s bad. Maybe this thinking “sticks” after you finish school, especially considering that most of the people who post this kind of comment seem to be at the “smarter” end of the spectrum (personal opinion that is not based on any actual research). In the real world, being right in itself is not a merit. Of course, in any discussions it is important to be right, but a much more important feature is to be appropriate. This requires an understanding of the wider context and, possibly, the recognition that what is most important in the world for you personally can be completely irrelevant for the issue under consideration.

Being right is easy. Being relevant is extremely difficult.

All Articles