传教士与狼人


这个名字可能假装成一部B影片,但实际上它将是更为平凡的事情,即:对程序员和其他为“银池”推广技术解决方案的人们的热情,有时是完全不合理的热爱-相信它该解决方案具有广泛的应用范围。

程序特别


我将从头开始:从广义上讲,程序代码始终是一个严格在特定范围的可能值中起作用的特定函数。超出范围的任何方法都是紧急情况和严重问题,通常会导致停顿(但是,在这些问题上还有其他观点,例如,请参见Rust意识形态)。在现代电子产品中,更多代码可在由不同代码管理的受保护沙箱中工作,从而免除“严重”崩溃的责任:如果其中一个应用程序崩溃,您的电话极有可能不会损坏,甚至不需要重启。但这不会改变每个单独代码块的详细信息,也不会改变程序运行所用硬件与该程序所期望的完全匹配的需求:无论Rust多么安全,您都将无法执行其代码,针对不同的处理器架构进行编译。以及处理可接受值范围的任何扩展-例如浏览器忽略和跳过``不良''html,处理并显示所有``良好''的能力-必须在同一代码中明确描述。

程序代码没有复制的能力,尽管我们的身体在细胞水平上发生了数万亿的细微故障,但由于它的存在,我们或多或少地生活了60-90年,甚至无法自然地“赢得”物理定律,例如:不受热力学第二定律和弱相互作用的影响,因此,您可以不经意间将某些东西从手上掉下来,但要从地面或地板上捡起来-因为它不会飞出地板。如果程序代码中断,则会中断。

当然,这完全违背了我们的客观现实。如果代码在一组特定的离散状态下工作(这里不讨论量子计算),即使存在很多非常多的状态,那么现实世界也可以在一定范围内的无数个状态下工作。如果您认为现实具有离散的性质,或者处于更大(天文顺序)的离散状态。

好吧,为什么这一切呢?


不,并不是说默认代码比现实中的代码更“脆弱”,尽管事实是这样,但这并不是主要问题。这里主要的是,从事实,你的软件解决方案,可在一定范围内的值(即,解决某些具体问题)的工作,在理论上,这并不意味着它解决他们在现实中-可能的状态而且,该程序在理论上的适用性可能完全无关紧要。

例如,游戏《 Factorio》中的信号语言是图灵完备的:


甚至可以显示剪辑。现在举起你的手,谁相信会在上面写商业软件-尽管从理论上讲这是完全可能的?

但是,在阅读有关技术的文章时,我经常会遇到这样一个事实,即撰写技术的人更喜欢成为强大的数学家,并且死于技术上正确的(最好的最坏的正确方法)。

理论上,理论与实践没有什么不同


他们为什么要这样做?这是一个很好的问题,我个人遇到了两个版本:首先,有些人很诚实地理解“也许在理论上”和“也许在实践上”之间的区别,但是他们宁愿在一些原则下故意在文章中忽略它,“如果你大喊雷声-更多”他将了解人们。”诚然,这里讽刺的是,这个原则并非灵丹妙药,如果你喊得很大声毫无理由-大多数人都不会知道拍马屁关于你的事情。

嗯,其次,有些人真的不太了解这种区别,从“科学家强奸新闻记者”开始,当写文章的人不是技术的直接作者,总的来说,甚至乐于被强奸时,就会引起一系列糟糕的情况。他如何认为更激进和“凸”的描述符合他的利益或所描述技术的利益;即使基本上没有任何理由相信作者,也只能相信自己的广泛论断。

如果本文的论题仍然不是一个太重要的理论问题,那将是非常好的,但是,a,它很可能转化为现实。从我的个人看来:不久前,我花了一个多天的时间试图向同事解释说,删除webpack中的未使用代码(摇树)是存在的,但是它是在相当原始的原则上起作用的,因此这件事的范围相当适度,并且如果没有很多其他的技巧和检查,就不能盲目地依赖它(顺便说一句,这是一篇很棒的文章,但是我本人早已在研究这种材料了)。您当然可以责怪一位同事-但我本人还记得关于“现在,万岁的webpack中摇摇欲坠!”这一主题的大量文章和材料。事实上,由于webpack的“魔力”,我们的程序集将变得很小,并且所有这些操作都是绝对自动的。

谁该怪谁该怎么办?


当然,我根本不认为在沙漠(甚至在哈伯尔)上哭泣的人的声音会发生巨大变化,到最后-相当一部分人完全有意完全描述他们的技术范围以使其更具吸引力。但是,如果有人故意这样做- 思考请考虑一下。至少要知道,如果您的程序或技术有能力做某事-从这一点到在程序或技术的帮助下您确实可以在实践中做某事,尤其是对于那些不是作者的人-很长道路。认识到如果您在特定主题的项目中完成了在特定情况下可以解决特定问题的事情,这并没有给您任何理由自动假设您的技术将在任何地方都有用。最后,请注意,“ your”的代码和每个人的代码是两个很大的区别,如果将“ for your”的代码放在开放源代码中,这不会自动使它成为对其他开发人员有用的代码。

All Articles