问题

Windows 10上有多少远古代码?

回答
Windows 10 上的“远古代码”这个说法很有意思,它不像是一个官方术语,更像是一种形象的说法,来指代那些存在了很久、可能已经不太活跃但仍然被保留下来的代码片段。要给一个确切的数字,那简直是天方夜谭,因为这涉及到很多层面:

首先,我们需要定义一下什么是“远古代码”。在 Windows 的语境下,这可以包括:

遗留的 API 和组件: Windows 操作系统经历了无数个版本,从 DOS 到 Windows NT,再到现在的 Windows 10。很多在早期版本中存在的 API(应用程序接口)和底层组件,为了保证向后兼容性,可能仍然存在于 Windows 10 的核心之中。比如,一些处理旧式文件格式、旧版硬件驱动接口、甚至是早期图形渲染方式的代码,都可能被“封存”在系统深处。
兼容模式下的代码: Windows 有一个强大的兼容性层,可以运行一些非常古老的应用程序。为了实现这一点,系统内部必然保留了与那些老程序交互所需的代码逻辑。这些代码可能针对的是已经不再普遍使用的硬件或软件架构。
“未完成”或“弃用”的功能模块: 有些功能在开发过程中被引入,但后来因为种种原因被搁置、被新的方案取代,但其相关的代码并没有被彻底清理。这些代码就像是被“冷藏”起来了,一旦需要某个兼容性场景,或者在调试时被意外触发,它们可能就“苏醒”了。
安全和底层系统维护的代码: 操作系统需要处理各种各样的数据和请求,其中一些可能源于非常早期的设计哲学。例如,处理某些网络协议、文件系统操作的底层代码,其设计理念可能追溯到几十年前。虽然现在有了更现代的实现,但为了处理边缘情况或者为了不破坏现有系统结构,旧的代码逻辑可能仍然被保留。
大量的汇编代码和底层实现: Windows 的核心是高度优化的,尤其是早期版本为了在有限的硬件资源下运行,使用了大量的汇编语言和直接的硬件操作。即使现在这些功能由更高级的语言重写,但为了性能或者某些特定的低级别操作,早期汇编指令的逻辑可能仍然是构成某些核心功能的基石。

为什么这些“远古代码”会存在?

1. 向后兼容性 (Backward Compatibility): 这是最主要的原因。微软希望让用户升级到新系统后,他们以前购买的软件、使用的设备驱动依然能正常工作。这迫使微软在设计新功能的同时,也要考虑如何“照顾”那些老旧的代码和接口。想象一下,如果Windows 10不支持任何Windows XP时代的应用程序,那将是一场灾难性的升级。
2. 历史包袱与技术债务 (Legacy and Technical Debt): 软件开发是一个持续演进的过程。随着技术的发展,很多设计会被淘汰,但如果在早期阶段没有做好模块化和可维护性设计,那么移除旧代码的成本可能非常高昂,甚至会引入新的bug。为了避免风险,保留并隔离(而不是删除)旧代码成为了一种策略。这就像一个老房子,为了加固,你可能不会拆掉老墙,而是想办法在旁边加固。
3. 效率和性能优化 (Efficiency and Performance Optimization): 在某些极度依赖性能的底层操作中,早期通过汇编语言或特定技巧编写的代码可能依然比用高级语言重写后更有效率。例如,某些系统启动过程、内存管理、中断处理等核心部分的性能是至关重要的,早期的高性能实现可能仍然被部分保留。
4. 特定场景需求 (Niche Scenario Requirements): 即使大部分用户已经迁移到新的技术,但总有一部分用户或企业可能因为特定的业务需求、法律法规要求,或者遗留系统的特殊性,依然依赖某些非常老旧的技术或硬件。为了服务这些用户,Windows 必须保留与之相关的代码。
5. 安全性与稳定性考量 (Security and Stability Considerations): 移除一个经过长时间验证的、虽然陈旧但功能正常的代码模块,本身就存在风险。在不确定移除后是否会引发连锁反应的情况下,谨慎起见,保留是更安全的选择。

为什么很难量化“远古代码”的数量?

定义模糊: “远古”是一个相对的概念。是20年前算远古,还是10年前?是DOS时代的代码,还是Windows 98时代?没有明确的标准。
代码重用与改造: 很多“远古代码”可能并没有被直接保留下来,而是被重构、封装,或者作为新代码的“参考”而存在。一个看似新颖的功能背后,可能隐藏着很多来自旧版本的逻辑思想或部分代码片段。
动态加载与卸载: Windows 系统是模块化的,很多老旧的组件和驱动程序是以动态链接库 (DLL) 的形式存在的,只有在特定情况下才会被加载和使用。有些代码可能只是“躺在那里”,从未被真正激活。
微软内部的庞大代码库: Windows 的源代码是极其庞大和复杂的。即使是微软内部的开发者,也未必能完全掌握所有代码的起源和演变历史。而且,为了保证兼容性,很多老代码会和新代码交织在一起,形成一个错综复杂的网络。
安全性更新与维护: 即使是“远古代码”,如果存在安全漏洞,微软也会对其进行修补,这就意味着这些代码本身也在不断地被“维护”,虽然核心逻辑可能没变,但其形式可能已经发生了一些变化。

举个例子:

想想 Windows 的文件系统(NTFS)。虽然 NTFS 本身已经发展了很久,但为了兼容旧版本的FAT文件系统(比如FAT32,它的历史更悠久),Windows 10 内核中必然保留了处理FAT文件系统的逻辑代码。这部分代码,相对 NTFS 来说,就可以被看作是“远古代码”。再比如,早期 Windows 版本中的某些鼠标输入处理、键盘扫描码解析逻辑,为了保证一些老游戏或硬件的兼容性,可能依然在系统底层存在。

总结来说:

Windows 10 上存在着数量庞大、难以估量的“远古代码”。它们不是孤立存在的,而是与现代代码交织在一起,共同构成了这个复杂而强大的操作系统。这些代码是 Windows 演进的历史见证,也是其强大兼容性和稳定性的基石。虽然我们无法给出一个具体的数字,但可以肯定的是,它们构成了 Windows 庞大代码库中一个不容忽视且极其重要的一部分。这些“远古代码”的存在,是技术进步与历史延续之间一种微妙而必要的平衡。

网友意见

user avatar

shell32.dll全是远古图标。比如那棵树。出vista的时候就有人骂,到了win10还没删全

安装程序都是用的vista马甲。甚至还有win7家庭版的那种aero效果。

计算机管理,照搬的vista的!就连一个文字都没变!

自带一个菜鸡zip,压根不顶用,好像xp就有(因为之前的版本一直用winzip,从来没注意,有一次装了rtm,没装任何软件,打算解压个zip的时候知道了)

控制面板可就氵了。全是win7/vista的图标

programfiles和x86的,win7历史遗留。mediaplayer说砍不砍,每次打开WMP都给你推荐WMP,打开音乐应用,又告诉你音乐建议用于win10

vbs可还行,win95/98年代的vbs病毒 ,居然能在win10下完美运行。还有wscript.exe的图标谁注意过

注册表,谁翻过,全是vista框架

syswow64几乎全是屎山,md5都一样。就是build的时候改了个修改时间

年代久远的驱动。吓死我了

驱动文件储存在哪里所有人都应该知道。然而二十多年过去了..........

cmd一堆bug。win+r输入cmd,然后瞎复制粘贴回车,过一会你会发现你的用户文件夹里被一些0

kb的文件占满了。。。。vista下亲测。WIN10也亲测

资源管理器。这都不用我说了吧。都是vista马甲

windows文件夹,看看图标你就知道。根目录的exe,有哪个文件vista没有?

windows照片库,vista第一次出现,win7年代就砍掉了。win10居然还有。怒赞。

半死不活的ie11

打印机图标

applicationdata。xp遗传。说是老软件兼容,可是谁会在win10上跑20年前的软件?再说你留下就留下,applicationdata还是个死循环!我搜索个文件,你给我卡半天。

说道搜索了。vista的搜索照搬过去很简单。为什么?懒得改!

dwm.exe

winsxs。从xp,路过vista,经过win8,再到win10.

复制文件时默认路径是a盘[这个我在给vista折腾驱动的时候就发现了]

重点来了!2000年代的远古文件夹来了!

Downloaded Program Files和Offline Web Pages。还是win2000的图标!真的佩服微软!!!

然而,更氵的东西来了!

system32下的PacerCnt.h,第三行清楚的写着

Copyright (c) 1998-1999 Microsoft Corporation

代码:

       /*++  Copyright (c) 1998-1999 Microsoft Corporation  Module Name:      PacerCnt.h  Abstract:      Offset definition file for extensible counter objects and counters      These "relative" offsets must start at 0 and be multiples of 2 (i.e.     even numbers). In the Open Procedure, they will be added to the      "First Counter" and "First Help" values for the device they belong to,      in order to determine the absolute location of the counter and      object names and corresponding Explain text in the registry.      This file is used by the extensible counter DLL code as well as the      counter name and Explain text definition file (.INI) file that is used     by LODCTR to load the names into the registry.  Revision History:  --*/  // PerfMon objects #define PSCHED_FLOW_OBJ                             0 #define PSCHED_PIPE_OBJ                             2  // Flow counters #define FLOW_PACKETS_DROPPED                        4 #define FLOW_PACKETS_SCHEDULED                      6 #define FLOW_PACKETS_TRANSMITTED                    8 #define FLOW_AVE_PACKETS_IN_SHAPER                  10 #define FLOW_MAX_PACKETS_IN_SHAPER                  12 #define FLOW_AVE_PACKETS_IN_SEQ                     14 #define FLOW_MAX_PACKETS_IN_SEQ                     16 #define FLOW_BYTES_SCHEDULED                        18 #define FLOW_BYTES_TRANSMITTED                      20 #define FLOW_BYTES_TRANSMITTED_PERSEC               22 #define FLOW_BYTES_SCHEDULED_PERSEC                 24 #define FLOW_PACKETS_TRANSMITTED_PERSEC             26 #define FLOW_PACKETS_SCHEDULED_PERSEC               28 #define FLOW_PACKETS_DROPPED_PERSEC                 30 #define FLOW_NONCONF_PACKETS_SCHEDULED              32 #define FLOW_NONCONF_PACKETS_SCHEDULED_PERSEC       34 #define FLOW_NONCONF_PACKETS_TRANSMITTED            36 #define FLOW_NONCONF_PACKETS_TRANSMITTED_PERSEC     38 #define FLOW_MAX_PACKETS_IN_NETCARD                 40 #define FLOW_AVE_PACKETS_IN_NETCARD                 42  // Pipe counters #define PIPE_OUT_OF_PACKETS                         44 #define PIPE_FLOWS_OPENED                           46 #define PIPE_FLOWS_CLOSED                           48 #define PIPE_FLOWS_REJECTED                         50 #define PIPE_FLOWS_MODIFIED                         52 #define PIPE_FLOW_MODS_REJECTED                     54 #define PIPE_MAX_SIMULTANEOUS_FLOWS                 56 #define PIPE_NONCONF_PACKETS_SCHEDULED              58 #define PIPE_NONCONF_PACKETS_SCHEDULED_PERSEC       60 #define PIPE_NONCONF_PACKETS_TRANSMITTED            62 #define PIPE_NONCONF_PACKETS_TRANSMITTED_PERSEC     64 #define PIPE_AVE_PACKETS_IN_SHAPER                  66 #define PIPE_MAX_PACKETS_IN_SHAPER                  68 #define PIPE_AVE_PACKETS_IN_SEQ                     70 #define PIPE_MAX_PACKETS_IN_SEQ                     72 #define PIPE_MAX_PACKETS_IN_NETCARD                 74 #define PIPE_AVE_PACKETS_IN_NETCARD                 76     

还有字体文件!!!

对了关于这个con,aux,nul等东西,应该算吧。

话说aux是个空调的品牌阿,微软跟aux有仇马

user avatar

题目问的是代码,那么操作系统的特性就不能算在内,比如其它回答里的“COM”文件,A盘之类的,就属于特性而非代码,不能算在内。FAT的代码微软是有公开的,这个代码显然不能用于DOS。

操作系统安装好以后,代码的大头其实是驱动和库,内核和应用占用比例不大,通常来说,只要库和驱动都还能用,厂商是懒得改的

驱动方面:

Windows内核从Win2000开始,是个分界点,之前的驱动和后来的驱动接口API明显不同,所以WIN10上能找到的改动较少的驱动,最早可以追溯到Win2000,但是这些驱动基本上都是要重新编译的,因为32位驱动跟64位系统不兼容,如果使用WIN10 32位,那么可以找到一些古老的驱动,比如FASTFAT.SYS(FAT驱动,更新不大)等,甚至一些第三方的驱动,比如FTDI串口驱动,几乎都可以做到兼容。

64位Windows驱动都是重新编译的,可以理解为“全新”的,这个“全新”可以追溯到Win Vista 64时代。

库的方面:

库的内容不像驱动那么敏感,所以,只要能用,基本上就保留原始状态,比如msvbvm60.dll,VB6的运行库,这个库是1998年发布的,属于Win98的版本,至少20多年了。msvbvm60.dll在SysWOW64里,这里是个老代码的大集合,类似的东西还有d3dx9/VC/MFC库等等,大多数文件都是十几年之前的。

我这个英文版的WIN10系统里,SysWOW64有1.5G大,里面的代码基本上都是年代久远的东西。WOW的代码,最早可以追溯到Win95,再早就不行了,因为再往前就没有32位系统了。

应用方面:

Windows用户可见的应用程序,改动还是很大的,Win10的应用程序,少数可以追溯到Win7/Vista,再早的就非常少了(notepad.exe)。


如果把范围放宽一点,把数据文件也包括在内,那么“上古数据”就会更多,比如C:WindowsSystem32下的NLS文件,用于字符映射,很多都是WIN2000甚至WIN9x的东西。还有c:WindowsFonts下的字体文件,很轻松就能找到Win95的字体

至于图标之类的,可以看看这个:从 Windows 95 开始一直在 shell32.dll 中存在的一个大树图标是出自哪里?

如果只看数据的话,我手头能确认的,最早的东西是Windows 3.2上的字体文件

上图列出的字体文件,在我这个Win10(2004)上还能找到,内容也完全一致(还有十几个文件,内容少量有差别的)。更早的Windows版本,我找不到安装包,也没办法尝试。

所以,Windows上的老东西其实挺多的,如果以Win10第一版作为标尺的话,纯粹Win10新开发的代码和数据,可能连1/10都不到。


说明一下:Windows还有一些中间版本,比如NT4,XP64,以及很多的server版本,因为环境限制,没办法验证,所以也不好给出结论。其实,如果做过一些Windows开发就会发现,某些版本的Visual Studio跟某些版本的Windows是绑定的,通过SDK的变化可以判断出来Windows到底有多少更改。Windows、MSDOS家族的几个重要的分界点:MSDOS 3.3、MSDOS 5.0、MSDOS 6、Win95(DOS7),WinNT4,WinXP(NT5),WinVista(NT6),Win10,包括服务器版本,其实都是跟着内核版本走的,内核大版本不变化,那么很多情况下都是小规模的重构。

类似的话题

  • 回答
    Windows 10 上的“远古代码”这个说法很有意思,它不像是一个官方术语,更像是一种形象的说法,来指代那些存在了很久、可能已经不太活跃但仍然被保留下来的代码片段。要给一个确切的数字,那简直是天方夜谭,因为这涉及到很多层面:首先,我们需要定义一下什么是“远古代码”。在 Windows 的语境下,这.............
  • 回答
    在 Windows 10 上,有无数优秀的软件可以满足各种需求。以下是我根据不同类别为您精心挑选并详细介绍的一些值得推荐的软件,希望能帮助您提升效率、丰富生活、享受数字世界: 一、 办公效率类 (提升工作学习效率) 1. Microsoft Office 365 / Microsoft Office.............
  • 回答
    微软在Build 2015上抛出的重磅消息,即Windows 10将提供对ObjectiveC和Java应用程序的官方支持,无疑是一记重拳,不仅让开发者社区为之振奋,更预示着C和Windows生态系统即将迎来一场深刻的变革。这场变革并非朝夕之功,其长远影响如同涟漪般扩散,触及Windows平台的根基.............
  • 回答
    提起Windows系统,许多人脑海里总会浮现出那些曾经让人头疼不已的“小毛病”。尤其是在Windows 10推出之前,那些在日常使用中显得如此“致命”的体验问题,为何直到这个版本才得到大规模的改善,这背后其实是一段漫长的演进和权衡。想象一下,微软这家公司,他们面对的是一个庞大且复杂的产品——Wind.............
  • 回答
    关于 Windows 10 Subsystem for Linux (WSL) 的显卡驱动,这是一个非常有趣且复杂的问题。 简而言之,WSL 的显卡驱动并不是由一个人独立完成的,而是一个由微软内部和社区共同努力的庞大工程。要详细解释这一点,我们需要区分 WSL 1 和 WSL 2,因为它们的显卡驱动.............
  • 回答
    作为一名长期在Windows 10阵营摸爬滚打的用户,要我说,Windows 10本身已经是个相当成熟的操作系统了,但要让它真正好用,提升效率,甚至成为你的创作利器,那么有一些软件,我个人觉得是绝对不能少的。它们不是什么高科技概念,都是实实在在能解决问题、带来便利的工具。下面就来跟你盘点一下,我心目.............
  • 回答
    Windows 10,这名字听起来多么霸气,多么的充满希望,号称是微软“终极操作系统”,是要一统天下,让所有设备都运行它,从此告别碎片化。结果呢?别的不说,光是那烦人的更新,就够让人抓狂的了。你说说,这更新怎么就这么爱“出幺蛾子”呢?每次更新完,总有些功能突然就失灵了,要么是蓝牙连不上,要么是显卡驱.............
  • 回答
    好的,我们来聊聊 Windows 10 文件属性里那些让你挠头的“详细信息”无法更改的问题。这确实是个挺让人郁闷的情况,辛辛苦苦整理好的照片,想给它填上拍摄日期、地点,结果点开属性一看,好多字段都灰蒙蒙的,根本没法动。为什么会这样?这背后的原因可不只一个,咱们一个个剖析一下:1. 文件本身的类型和限.............
  • 回答
    Windows 10 中快捷键冲突是一个常见的问题,当两个或多个程序或系统功能试图使用相同的键盘组合时就会发生。这会导致其中一个(或多个)快捷键无法正常工作,或者触发您不希望的操作。检测 Windows 10 快捷键冲突,需要一种系统性、有条理的方法。以下是详细的检测步骤和技巧: 如何检测 Wind.............
  • 回答
    你这个问题提得非常好,很多用户在安装软件时都会遇到类似的情况,明明用的是64位的Windows 10,但装的软件却发现很多都是32位的。这背后其实涉及到一些技术和历史原因,我来给你好好掰扯一下。为什么会出现这种情况?简单来说,主要有以下几个原因:1. 历史兼容性与软件生态的惯性: 64.............
  • 回答
    说起 Windows 10 Technical Preview,那会儿可真是让人激动人心,感觉像是被卷入了一场数字革命的浪潮里。我当时是抱着极大的好奇心和一点点“尝鲜”的冲动,第一时间就安装了。现在回想起来,那段经历确实是挺丰富的。首先,最直观的感受就是那个大家伙——开始菜单回归了。你懂的,Win8.............
  • 回答
    Windows 10 Mobile 的工作量有多大?为什么大家都觉得微软动作太慢?这个问题,得从几个层面来掰扯。这玩意儿,看着简单,实际里面水深着呢。首先,咱们得明白,Windows 10 Mobile 可不是凭空变出来的。它是在 Windows Phone 8.1 的基础上,微软试图将其操作系统“.............
  • 回答
    好的,咱们就来聊聊 Windows 10 Mobile 正式版,那时候大家对它的期望值可是挺高的。回想起来,那会儿手机市场还是三分天下,iOS、Android 和 Windows Mobile 都在努力抢占市场份额。Windows 10 Mobile 正式版的出现,带着微软自家操作系统的那股子“硬核.............
  • 回答
    Windows 10 用了这么多年,有些设计确实让人抓狂,忍不住想吐槽几句。首先,那个无处不在的“更新”。隔三差五就弹个窗,告诉你系统有更新,而且很多时候是强制性的。最让人受不了的是,你刚忙完手头的工作,想着休息一下,它偏偏在这个时候跳出来,然后告诉你“正在准备更新”、“正在下载”、“正在安装”、“.............
  • 回答
    Windows 10 的数字许可证,通常指的是你通过购买 Windows 副本激活时获得的许可,它本身与微软应用商店(Microsoft Store)自动下载第三方应用的行为没有直接的、强制性的关联。数字许可证的核心功能在于验证你的 Windows 操作系统是合法授权的,从而让你能够正常使用 Win.............
  • 回答
    说起Windows 10的更新,很多人可能会觉得这是一件挺让人纠结的事。它时不时地跳出来,提示你重启,有时候还会莫名其妙地改变一些你习惯的操作方式,搞得人有点无所适从。那么,这些更新到底有没有用?对咱们普通人来说,它究竟能带来些什么呢?其实,我们日常使用电脑,就像我们开车、出门办事一样,总会遇到一些.............
  • 回答
    Windows 10 1607 版本,也就是“周年更新”,在完成更新的那个界面,确实会给用户带来一些温馨的提示和鼓励。它不是那种生硬的“更新成功”或者“下一步”的机械提示,而是通过一些精心挑选的文字,让用户在迎接新功能的同时,感受到一种细致的关怀。当你历经了漫长的下载和安装过程,屏幕上最后浮现的,往.............
  • 回答
    在 Windows 10 系统里,当我们谈论“磁盘分区”时,其实就是在说一块硬盘(SSD 或 HDD)被切分成了一个个独立的部分,就像把一块大披萨切成几块小披萨一样。这么做有很多好处,最直观的就是能让管理文件更方便,也能提升系统的运行效率。首先,硬盘的物理空间被划分出来后,操作系统需要一个“地图”来.............
  • 回答
    Windows 10 的内置应用程序,像是我们日常使用的“计算器”、“照片”、“记事本”这些,它们的开发背后是一系列精密的技术组合,并没有一个单一的答案能概括所有。如果说底层语言,微软的核心开发语言一直是 C++。很多 Windows 系统本身,以及那些需要直接与硬件打交道、追求极致性能的系统级组件.............
  • 回答
    Windows 10 默认输入法使用 Shift 键来切换中英文,这在很多用户看来,确实是一个相当“顺手”的设计,尤其对于习惯了这种方式的长期用户而言。但要说它是否“合理”,那可就见仁见智了,这里面涉及到不少使用习惯、历史演变以及潜在的冲突问题。从一个更细致的角度来看,Shift 键作为切换中英文的.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有