ibo4198 发表于 2023-9-11 22:03:30

为什么win XP安装光盘大小不到1个G,其源代码竟可达数十个G?

为什么win XP安装光盘大小不到1个G,其源代码竟可达数十个G?

woomoo 发表于 2023-9-11 22:04:28

“为什么机械图纸需要几百页,然而最终的机器可能就那么点大?”

steking 发表于 2023-9-11 22:04:41

代码就像海绵,里面水多着呢。
注释:
一般代码的注释和代码的比例,越是长期维护的,要求越高,一般2:1甚至更高。
也就是平均两行代码一行注释。
这些注释编译时直接忽略,不起任何作用。
缩进和空行:
代码不能是紧凑排版,换行、缩进、空行,这都是必要的,不然没人能看懂,这些也要消耗很多空间。
各种命名:
编译以后,可以直接把变量名和函数名变成地址,变量名和函数名在代码里是反复出现的,相比编译后的二进制,肯定更占空间。
各种版权信息:
这些鬼东西,唠叨一堆,没人看,但是每个文件都要加,不然法务不给你过。
一个头文件,定义几个函数原型,总共20行,前面版权信息100行。
你说这玩意占多少空间?
其实这些版权信息是以注释的形式出现的,但是不算注释量,因为他们对理解代码没有帮助。

你试试把源码压缩下,10:1的压缩比不是梦,足见其含水量。

月爷 发表于 2023-9-11 22:05:00

泄露的nt5src.7z,里面有XP SP1和2003 RTM的源码。我可不仅是看了这两套源码,而且还编译了七八次。XPSP1 postbuild有问题,好像是生成sp1.cab的时候不行,这个洋大人也都没解决;2003及其衍生的这个XP3790,我倒是比较熟悉了。
yang leonier:如何看待 Windows XP 源代码泄露?XP 源代码首次被公开曝光会产生哪些影响?XP/2003源码泄露包,解压之后各只有6G多和5G多,根本没有数十个G。
即使加上缺失的文件的源码(2003全SKU,包含XP3790在内,缺失的最终目标文件有四五百兆(未压缩)),估计也不会超过10GB。
而且里面很大一部分东西属于内部SDK、公开SDK、DDK的,还包括大量的脚本、汇编器、MIDL、编译器、链接器、perl等工具,编译这套源码所需要的所有工具都包含在内。
2003srv编译出来的ISO,未压缩条件下96xMB;XP3790 Pro,未压缩大概94xMB。XP3790 Home(微软没有发布过这个SKU),未压缩不到900MB。
压缩之后就是500多MB了。
我目前已经根据4chan上的各种资料总结了一套编译2003/XP3790泄露源码的流程,当然4chan上的贴里早就有人做了一套文档了。

萤火虫儿 发表于 2023-9-11 22:05:22

我还真的去看过这个代码。其实单个操作系统的源码没那么大,XP 的大概也就 7G 左右,所谓几十 G 的应该是多个操作系统的合集。
浏览一下文件就知道,虽然叫做源码,实际上有不少体型巨大的东西和编译完全没有关系,就是纯粹的资源或数据,但它们又是程序运行必不可少的,所以也算作源码的一部分了。至于纯粹的代码文件只是数量巨大,然而上万个文件加起来也未必比得上一个数据文件占用的空间。

http://picx.zhimg.com/v2-9749a5814e0a211128a119ce5077f56f_r.jpg?source=1940ef5c

肝硬化 发表于 2023-9-11 22:05:57

同样鄙视一下上面瞎说什么代码写小说和压缩的,完全没说到点子上。
简单解释一下为什么二进制文件为什么比源代码小,主要是两个原因
1. 源代码的关键字和变量都是变长字符串,编译后转化成固定长度二进制编码,例如一个变量叫YourSisters,转成二进制码才四个字节,11:4的转换率
2. 编译器对丑陋的源代码有优化,例如你在源代码里面写了一千个丑陋的字符串 “12345”而不是把他们定义成const,编译器并不会在编译的时候愚蠢的把"12345"在源代码里面重复一千遍,而是会生成一个串并重复使用
页: [1]
查看完整版本: 为什么win XP安装光盘大小不到1个G,其源代码竟可达数十个G?