您的陈述是100%正确的,只遗漏了要点

哈Ha!我向您提供文章“您的陈述是100%正确,但却遗漏了所有要点”的译文

想象一下Internet上某处的编程语言。可以讨论的体系结构问题之一是垃圾收集器。一位小组成员提到了如下垃圾收集的好处:
垃圾收集器很酷,可以节省大量能源。如果您的应用程序对响应时间没有严格的要求,那么无需进行内存管理就可以释放开发人员的精力,并可以大大提高其效率。

即使大多数人在对响应时间有严格要求的代码上工作,这也是大多数人都会同意的中性声明。然而,不可避免地,有人会提出这样的反对意见:
没有!如果指针悬空,则将永远不会释放内存,并且在任何情况下都必须通过执行手动内存管理来修复它。垃圾收集器无法神奇地纠正所有错误。
如果您仔细阅读这些句子,您会发现它们中的每个陈述都是正确的。这就是为什么如此令人不愉快的原因。一般而言,大多数具有工程学学位的人都愿意在出现陈述不正确的证据时承认自己的错误。当然,这并不适用于所有人,因为有些人愿意有意不同意任何与他们的偏见相矛盾的事实。在本文中,我们将忽略这些人。

确实,这些陈述忽略了问题的更广泛的上下文,该问题包含以下几点:

  • 程序中的悬空指针很少(可能是10个程序中的1个?),而普通的内存错误(例如,释放后使用指针,两次释放,未计入单位的错误等)非常常见。频繁发生(每个程序100-1000);
  • 现代的垃圾收集器具有非常好的分析器,查找挂起的指针比调试堆栈损坏要容易得多;
  • 只需单击一下鼠标即可创建对象,而无需理会它们的能力,使开发人员比要求他们仔细地单独管理每种资源的整个生命周期的生产力更高;
  • 即使遇到悬空指针的问题,与解决同一应用程序中没有内存收集器的内存损坏问题相比,其解决方案也可能花费更少的时间。

简而言之,这些论点实际上是正确的,但是他们错过了他们回应的全部评论。不幸的是,这通常可以在Internet上的讨论中找到。让我们看一些例子。

电脑安全


这个说法:
对所有流量使用HTTPS可以提高安全性和匿名性。

您可以反驳,例如,如下所示:

这并不能提供任何真正的安全性,如果NSA想要接收您的数据,它将突然进入您的公寓并接收。

再一次,这个说法是绝对正确的。另一方面,如果您不是国家领导人或不与国际毒品卡特尔打交道,则您不太可能成为NSA的直接目标。

如果您认为这是一个愚蠢的反驳,没有人会做,那么我完全同意您的看法。我还看到了它在现实世界中的用法。我希望我没有看到。

能力不足引起的错误


高级编程语言易于使用:
缓冲区溢出编程语言在安全性和简单性方面非常适合开发。

但不适合所有人:
只要小心一点,就可以在C语言中实现相同的目的。

再次如此。如果每个在代码库上工作的开发人员都将100%集中精力并100%地100%小心,则可以编写无错误的代码。现实一次又一次地表明,这是不可能的,一个人长时间不能完美无瑕地工作。

亚尼YAGNI还有什么?


一切都很简单:
使用Python处理文本文件确实很酷而且很容易。

并非如此简单:

Python完全是胡说八道,当您需要使用最大2 KB的RAM在内置微控制器上每秒处理一千万个文件时,它将无法完成任务。

是。是的。在那种情况下,那将是错误的选择。你是绝对正确的。先生,谢谢您的见识,这里是一枚辉煌的金牌,以纪念您对这次讨论的重要贡献。

这可能是什么原因?


学校为您准备的唯一一件事就是正确是很重要的。如果您在测试中给出正确的答案,您将获得良好的成绩。而且,如果您不付出,那就不好了。也许这种想法在您毕业后就“固守”了,特别是考虑到大多数发表此类评论的人似乎都处于“更聪明”的境地(个人观点并非基于任何观点实际研究)。在现实世界中,做到正确本身不是一个优点。当然,在任何讨论中,正确都是重要的,但是更重要的特征是适当的。这需要了解更广泛的背景,并且可能需要认识到,对于您个人而言,世界上最重要的事情可能与所考虑的问题完全无关。

正确是容易的。相关性非常困难。

All Articles