有关真实代码的不完整投诉清单

2021-02-26 02:33:49

几周前,我感到无聊,并决定拿出一份清单,这些清单在尝试运行软件来完成任务时困扰着我。这些可能是可靠性问题,开发问题,或者当时困扰我的其他任何事情。这实际上是很有启发性的。

我实际上会建议其他人以自己的烦恼尝试一下,看看情况如何叠加。有趣的是,查看行以查看哪些选择特别糟糕,因为它们影响了很多选择,然后查看列以查看它们出现的频率而与语言或环境无关。

但是,问题在于,当您取消语言名称时,这将使您的小丑大队失望,我的意思是,比起您来说,得到的帖子甚至更多地超出了人们对那些愚蠢的东西的抱怨。因此,我决定跳过表格,忽略行,而将重点放在列上,也就是困扰我的实际情况。取而代之的是,我们将以书面形式进行研究,您可以猜测我在说什么语言。

提示:如果您找不到与自己选择的东西相称的惊人错误,语言,您可能没有使用足够长的时间...或者您已经创建了它。无论哪种方式,请加倍努力。

我不喜欢虚拟机。当所谓的“写一次,在任何地方运行”时,我发现它们特别愚蠢。程序实际上只能在一个体系结构(x86_64)上的一个位置(Linux,通常是该位置的特定发行版)上运行。当虚拟机必须与代码捆绑在一起时,我发现情况变得更糟,因为它们是如此紧密地耦合在一起,并且您发现自己要运行多个不同的版本来应对。

我不喜欢有意义的空格。如果选项卡表示一件事,而空格则表示另一件事,并且它们都以相同的方式打印(即,什么也没有,屏幕上有很大的空白),那么我就不会高兴。另外,如果空格的多少以某种方式控制了代码的分支或阻塞,则您最好相信我在使某人绊倒时不会感到高兴。

我不喜欢口译员。他们往往会带来自己的依赖地狱,尤其是当他们自己不断被修订并且与现有代码不完全兼容时。它掩盖了虚拟机的状况,但其唯一的好处就是速度更慢!

我不喜欢语法错误和其他隐藏在运行时的定时炸弹。在开发阶段,应使用编译器遍历将它们剔除掉。但是,如果没有某种东西可以提前构造出完整的解析树,那很可能会在以后咬你。注意:这不是解释语言的1:1。他们中的一些人在启动程序时会很高兴地注意到您的derpy语法错误,并且即使在某个地方的分支中也拒绝运行。其他人只会一直走下去,直到他们几个小时,几天甚至几周后才到达那里。然后... BOOM。

我不喜欢大量的魔术字符,它们完全构成了完全遵循代码所必须理解的行噪声。如果您坚持不懈!或者 ?或普通代码中的类似内容,或者正在制作少量ASCII艺术图,这表明您在语法错误的地方走错了路。

我不喜欢库方面的依赖地狱。某些生态系统是基于这样的假设而建立的,即您将尽可能地从Internet上的某个位置导入所有您可以想到的事物。他们将直接添加数十个依赖项,并且随着这些项目沿线进行下去,将在过渡过程中获取数十或数百个依赖项。

我不喜欢这样的生态系统,它假设您在决定进行涉及开发,构建,部署甚至启动其他实例的工作时会随时与Internet交谈。您需要在完全空白的情况下能够有效地完成工作。否则,当您无法控制的事情对您无济于事时,您最终会遭受许多停机机会。另外,我只是在这里谈论无意的行为。 “故意”攻击也很重要,而且甚至更糟!

我不喜欢垃圾收集的内存管理。我已经看到太多的地方都在浪费愚蠢的时间和精力来避免可怕的“停止世界巡回展览”。问题,同时仍然基于它。我的意思是,好的,这让他们很忙,所以如果您的老板不知道发生了什么事,那么就可以保证工作的安全,但是我们中有些人宁愿做些事然后离开。

我不喜欢猴子修补的任何环境。代码可以以任何方式,形状或形式完成。如果您运行某事的解决方案是进入其他代码并对其工作方式做一些真正令人讨厌的事情,那么您已经不知所措了,我不希望与此有任何关系。如果您的系统实际上不能在不对系统其他部分执行此操作的情况下运行,那么您将遇到严重的问题,需要重新考虑您的选择。我的意思是,这可能是康韦定律在起作用,但快来了。

我不喜欢实际上不能并行运行代码的系统。单个处理器的速度并没有像20年前那样一直在不断提高,因此,我们得到了更多。如果我有两个需要处理的线程和机器中的两个开放处理器,我希望内核可以选择它们并运行它们!如果某种情况使它们无法实际并行运行,那么显然这最终将浪费资源。它也将运行缓慢,并且解决方案将只运行更多独立的东西,这样就可以切换档位了。中期要求。伟大的。您想知道为什么愚蠢的服务变成了1200台机器的怪兽,然后又需要额外的怪物(kubernetes,有人吗?)来管理。

我不喜欢类型系统无用或只是足够松散甚至根本不存在的情况。这可能会导致各种疯狂的东西隐藏在源代码中直到运行时为止,这时它可能会爆炸,因为Foo没有bar()方法,而Bar有,但是您可以将两者存储在x中,并且代码是" x.bar()&#34 ;,所以... BOOM。

我当然不喜欢使用例外的设计。每个异常都等于" ON ERROR GOTO x&#34 ;,并且发生在远离操作位置的地方。当发生爆炸时,您会突然从该地点弹出,并最终到达很远的其他地方,必须对其进行处理。毫不奇怪,在这种情况下,人们经常会处理得不好。它来自真实,它很烂。

我不喜欢用80年代的指针反复播放的代码。奇怪的是,无论您做什么,实际上都不需要您在这种级别的游戏中玩耍。如果您正在某些小型计算机上工作,内存以字节为单位,时钟速度以kHz为单位,则很好,可以确定指令是否笨拙,并且要聪明。其他人,把它关掉。提示:在整批语言中,x [y]确实非常不安全。这些支架只是在等您伸头,以便它们可以合拢并压碎您。

那里。这些是我的不喜欢。如果他们不匹配您,那就大吃一惊!我们不一样。找出最适合您的方法。