2022 年的代码有什么问题?🤷🏻♀️
我时不时会用到一项服务:我需要上传一些文件到那里(服务名称无关紧要,因为坦白说,它们都一样)。基本上,我只需指向硬盘上的一个文件夹,然后它的内容就会被复制到远程服务器,该服务器可能正在执行与数据库相关的操作——这些文件会被命名,并检查下载者的身份。
该服务由一家大公司所有,因此其流程规模庞大。它很可能经常遭到黑客攻击,因此需要采取一些保护措施,例如检查从我的电脑上传到服务器接收文件期间是否有人修改过文件。我理解这一切。
……但本质上,我们讨论的是,你需要注册几个文件,读取它们,上传,然后关闭连接,并写入日志文件,看看一切是否顺利。如果一切不顺利,具体发生了什么。这其实并不复杂,我在连接到 MySQL 数据库的服务器上,使用 Wininet API 和 PHP 从头编写了类似的代码。也许我的系统不如企业级系统可靠,但它支持数十万个文件的上传、验证、下载和日志记录。这得一个程序员花两三个星期才能完成,不是吗?
我今天使用的特殊文件上传工具共有 230 MB 的客户端文件,并使用 2,700 个文件来管理此过程。
你可能会觉得这是个打字错误,但其实并没有错:两千七百个文件,以及 237 MB 的可执行文件和支持文件,只是为了把几个文件从客户端复制到服务器。这不再是臃肿软件或过度工程,而是绝对的、显而易见的、视觉上的疯狂。
问题在于,这款上传器很可能与其他大型公司开发的任何类似现代软件没什么区别。而且,它会显示错误信息,目前无法使用。
我见过程序员这样做。我知道是怎么回事。这不仅是因为程序员不会写低级高效的代码来实现他们的目标:他们只是从未见过低级高效、写得好的代码。如果他们甚至没有意识到这是可能的,我们又怎么能指望他们创造出更好的东西呢?
您可以编写一个程序,将文件安全、快速、可靠地上传到服务器,而代码量仅为其十二分之一。它可能只是一个文件,一个小型的 .exe 文件。它不需要数百个 DLL。这不仅可行,而且简单易行,更可靠、更高效、更易于调试,而且确实有效。
你可能会认为,像我父亲这样的五十多岁的老程序员抱怨代码臃肿是因为他们过时又脾气暴躁。我理解这一点。但这些过时又脾气暴躁的人抱怨的是代码比正常速度慢了 50%,或者代码比正常大小大了 50%。然而,情况远不止于此。我们已经到了这样的地步,我真诚地相信,我们电脑文件中 99.9% 的代码完全没用,根本不会被执行。这些代码就在一个包含 65 个 DLL 的包里,仅仅是因为程序员想做一些像存储位图这样简单的事情,却不知道这有多容易,所以他导入了一大堆臃肿的软件来解决这个问题。
就像我说的,我真不应该因为这个而对年轻程序员生气。他们就是这么被教育的。他们根本不知道什么是高性能,什么是有约束的开发。一个25岁的女孩谈论这些可能有点奇怪,但我有足够多的睿智导师教我写出非常漂亮的代码。我父亲告诉我,1984年的第一部《精英》游戏有一个巨大的星系、3D太空战斗、职业发展系统、交易系统以及数千个星球可供探索,同时游戏只有64KB。现代程序员可能听说过这个,但他们没有意识到它与我们今天拥有的东西之间的差距。
这对我为什么重要?
这让我很担心,原因有很多,尤其是因为如果你需要两千倍以上的代码来完成一项任务,那么至少它应该是可以工作的。但更重要的是,我意识到我那台功能强大的巨型 PC 上 99.9% 的 CPU 时间完全没用。如今,计算机速度如此之快,以至于 10 年前它们会被视为绝对的魔法。你能想象到的任何事情都应该在 1/60 秒内发生。然而,当我按下微软 Surface 笔记本电脑的音量图标时,我看到了延迟:机器逐渐创建一个新的用户界面元素,确定要绘制哪些图标,然后它们出现并变得可交互。这需要时间。大约需要半秒钟,按照处理器的时间尺度来看,这接近 10 亿年。
如果现在(保守估计)我们电脑99%的资源都被浪费了,那么我们就是在浪费99%的电脑能量。这简直是犯罪。这些开销是用来干什么的呢?如果你看看任务管理器,就会发现一堆臃肿的软件,天知道它们在干什么。我正在写这篇博文。Windows 系统有102个后台进程在运行。我的NVIDIA显卡目前有6个,其中一些还有子任务。用来干什么?我不是在玩游戏;我现在用的显卡驱动功能几乎和我父亲20年前用的一样,但不知为何需要6个进程。
Web View Microsoft Edge 也需要 6 个进程,就像 Microsoft Edge 本身一样。而我根本不用 Microsoft Edge。好像我昨天打开了一个 SVG 文件,结果就出现了 12 段无用的代码,不仅浪费内存,可能还会轮询 CPU。
这简直是疯了。这就是为什么什么都用不了,所有东西都慢得要命,你每年都得买一部新智能手机和一台新电视来下载这些臃肿的流媒体应用,而且这些应用还隐藏着同样糟糕的代码。
我个人认为情况只会变得更糟,因为像 Facebook、Twitter、Reddit 等大型科技公司就是这种趋势最糟糕的例子。很快,这些公司成千上万的“程序员”都会利用机器学习,把臃肿、漏洞百出、杂乱无章的 Github 代码复制粘贴到自己的代码中。光是这两个数字加起来,他们就需要 32 个 DLL、16 个 Windows 服务和十亿行代码。
Twitter 有 2000 名开发人员。更准确地说,直到埃隆·马斯克出现之前,情况一直如此。Tweetdeck 有时会拒绝加载用户栏。这种情况已经持续了四年。我敢肯定,没有一个程序员知道为什么会发生这种情况。而且,正如我爸爸所说,它的核心代码只是一堆臃肿的、复制粘贴的垃圾。
Reddit 在从链接中推荐主题标题时,无法处理“与”号、分号和井号。外面显示年份是 2022 年。该公司可能还有 2000 名开发人员。显然,他们中没有一个人能够让文本解析器正常工作。这些人都在干什么?
曾几何时,内存和 CPU 都受到限制,编程曾有过一段“黄金时代”。而如今,我们却生活在一个极其浪费、效率低下的深渊。这真是令人悲哀。
感谢阅读!希望我的反思对你有所帮助,并希望你现在有一些值得思考的问题。如果你同意我的观点,欢迎留言评论。
文章来源:https://dev.to/mariamarsh/whats-wrong-with-code-in-2022-3nbd