现在 Windows 11 的「AI 改造工程」正在如火如荼地进行中,其中微软联合 OpenAI 将许多先进的 AI 功能引入 Windows 系统中譬如照片、截图工具、画图等多个旧应用程序上,以及带来最新的 Copilot 功能。
但是,在它进行现代化升级之际,也有网友惊讶地发现,Windows 11 在 UI 维度的更新速度有些拖拉,甚至还在沿用 30 年前的老设计。
披露这一点是来自微软的前程序员 Dave Plummer,他在 X 社交平台上分享了自己曾在 1994 年开发的“临时性”磁盘格式化 UI 当前依然存活在现代化的 Windows 11 中。与此同时,Windows 只能支持 32 GB 的 FAT32 分区也是他曾经“武断性”的手笔。
作为过来人,这也让他警醒诸多开发者,千万不要小看任何一次的开发,即使是一些“临时”的解决方案。
从未更新过的 Windows 格式化磁盘 UI回忆过往,那是在 1994 年一个下雨的星期四早晨,Dave Plummer 编写了格式化对话框。
当时他所属的团队正忙于将用户界面(UI)从以消费者为中心的 Windows 95(1995 年中期发布)移植到更稳定但资源更密集的 Windows NT(1996 年中期发布的 NT 4.0 首次使用了 95 风格的用户界面)。
Plummer 在 X 上写道:“格式化磁盘是 Windows NT 与 Windows 95 不同之处之一,因此我们必须设计一些自定义 UI。”
Plummer 没有具体说明这些不同之处,但现在来看,当时的 Windows 95 主要使用 FAT16 文件系统来处理所有文件,它被用于处理硬盘、软盘等存储介质上的文件和文件夹。
后来即使是早期版本的 Windows NT 也开始支持多种文件系统,包括 FAT、NTFS 等。
当时,“我拿出一张纸,写下了格式化磁盘的所有选项和选择,如文件系统、标签、簇大小、压缩、加密等等”,Plummer 说道,“然后,我基于 Visual C++ 2.0,并使用资源编辑器将你(用户)必须做出的所有选择按大致顺序排列成一个简单的垂直堆栈。这样做并不优雅,但在优雅的 UI(用户界面)出现之前,这样做还是可以的。”
这在当时是创建格式化磁盘 UI 的临时解决方案。但当时 Dave Plummer 难以想象的是,30 年后的 Windows 11 还在用它。
“所以在引入’临时‘解决方案时要小心”,Dave Plummer 表示。
“Windows 只支持 32GB 的 FAT32 分区”也是一个武断性的方案除了格式化对话框之外,Plummer 还透露称,FAT32 格式化 32G 限制也是他在那天早上做的一个武断的决定。
FAT 是用来组织计算机硬盘上的文件和文件夹的方法之一。FAT32 在文件系统中表示文件分配表的 32 位版本。相比于较早的 FAT16(16位版本)和更早的FAT12(12位版本,FAT32 最显著的优势是它支持更大容量的硬盘和文件分区,因为它使用了 32 位的文件分配表项,允许更多的文件和更大的分区。此外,FAT32 还允许更长的文件名和更好的簇大小管理,提供了更好的性能和存储效率。
不过随着技术的进步,FAT32 安全性差,最大只能支持 32GB 分区,单个文件也只能支持最大 4GB,这使得它在大容量存储和现代操作系统中的使用受到限制。
几年前,Dave Plummer 也特别发了一个 YouTube 视频回忆了这一功能,并表示当时自己想的是如何为 Windows 用户带来良好的潜在支持,也必须要决定 “集群松弛”的程度。
最终发现,庞大的群集数量会带来同样庞大的容量,但也会造成巨大的空间占用。譬如:选择 32KB 的群集大小,即使是最小的“Hello,World!”程序所需的几个字节,也会占用 32KB 甚至更多的磁盘空间 。
于是,他武断地直接将 FAT 的格式化大小限制在 32GB。
“这个限制也是那天早上的一个任意选择,但它作为一个永久性的副作用一直伴随着我们”。在现代 Windows 版本中,我们仍在使用这一限制——通过命令行或其他工具格式化的 FAT32 硬盘最大容量在 2TB 到 16TB 之间,具体取决于扇区大小。
“这是我犯下的,一个不能被原谅的致命错误...... 归根结底,这是一个简单的缺乏远见的问题,再加上临时解决办法变成永久性解决方案的老问题”,Dave Plummer 曾在播客中说道。
Plummer 还参与了 90 年代和 2000 年代初 MS-DOS 和 Windows 应用程序的许多零碎工作,包括任务管理器、Space Cadet 弹球游戏和随 Windows XP 一起提供的第一版产品激活系统。后来,Plummer 于 2003 年离开微软。
微软为什么不更新此 UI?也有人好奇,为什么微软更新了 Windows 11 的诸多功能与 UI,为什么会忽略这么一个老旧的界面?其实想想,也不难理解。
其一,在没有出错的情况下,此 UI 的迭代优先级可以一降再降。作为全球第一大桌面端操作系统,Windows 系统的生态及其复杂性有目共睹。日常维护和更新 Windows 更是一项艰巨的任务,需要多个团队和多年的工作。此前,微软特别开设了一个独立的 Windows 部门来负责 Windows 的功能开发与维护,直至近年来,才将其瓦解并入“云计算与人工智能平台”部门,所以对于有些没有出问题的功能以及 UI,一直沿用以前的设计也不足为奇。
其二,外媒 Ars Technica 认为,Windows NT 版本的“格式”对话框得以保留至今,也是因为微软在 90 年代末和 21 世纪初发布的 Windows 2000 和 Windows XP 中开始使用 NT 代码库。尽管微软在不同版本的 Windows 中进行了许多更新和改进,但 Windows NT 作为内核的基础设计依然保持了稳定。因此,即使是 Windows 11,内核和其他关键系统文件仍然会携带“Windows NT”的标签。
“代码里的临时方案,最终都成了永久方案”Plummer 的一个追忆引发不少网友的讨论,也让许多有过“把临时方法作为永久性方案”的程序员感同身受。
来自 HN 上的 jaydeegee 表示,“大约 14 年前,在我从事新工作的第一周,我拼凑了一些代码来完成了查询我们的票务系统 (BMC Remedy),作为一种准队列监视器。直至今日,它有一些外观迭代,但仍然运行相同的后端代码。”
也有不少用户认可道:
“我想说,没有临时和永久的解决方案,但有好的和坏的解决方案。一个好的解决方案,即使实施得很快,也会坚持下去,因为它(足够)很好。一个糟糕的解决方案也可能会持续存在,如果它是一段时间内唯一可用/可行的解决方案,那么其他所有解决方案都必须向后兼容。”“抛开任意不必要的限制不谈,我对保留旧代码很满意。它经过了时间的考验,过往由于较旧的硬件限制,现在依然可以非常高效地运行,并且符合逻辑 。与今天的软件不同,今天的软件通常都是臃肿的造轮子,几乎完全出于以下两个原因:一是为了营销“改变”,二是为了跟踪你所做的一切,以便他们可以从中获利。”作为程序员,也有不少人和 Plummer 一样,呼吁应该谨防“足够好”的临时解决方案,“我们正在使用一个由实习生编写的核心日志记录组件,其中包含 POC(概念验证)一词。它的数据格式是实习生创建的,但当任何人真正注意到它编写了如此多的数据时,修复它的预算和工作量都超过了它的问题。”
最后,在开发过程中,你是否有过“代码里的临时方案,最终都成了永久方案”的经历?欢迎留言分享。
相关教程
2024-03-25
2024-01-11
2023-11-20
2023-11-06
2024-04-08
2023-07-12
2023-07-31
2023-11-30
2023-09-06
2023-06-25
2024-11-17
2024-11-16
2024-11-16
2024-11-15
2024-11-15
2024-11-15