所有分类
  • 所有分类
  • 实时新闻

[编程]从7-Zip软件源代码中明白软件编程

在开始正文之前要思考两个问题,第一是为什么使用7-zip作为本文章的范例,而不是使用Chromium这种项目作为文章的范例,原因无非在于代码量、知识量,而其他大多数的代码量都会很大,超过5MB就算大工程了,只有写过的人才知道。再举两个例子,比如由Linus编写的Linux Kernel 1.0版本占用空间就有5.44MB,由huanghongxun编写的Hello Minecraft! Launcher 3.5.2.216版本在Github显示有4.39 MB,这些都是逻辑功能自洽的软件。我举了Linus的例子,但是在计算机教科书上说这是操作系统,不是硬件也不是软件,但是我个人的想法是电气工程、微电子、半导体是计算机硬件,操作系统、汇编语言、编程均为计算机软件。第二是我对代码的理解。代码,顾名思义,是帮助人类完成一条条规则判断的事物。代可以是虚拟、思想的指代,码可以是程序、信息的指代。

正文

软件根据每行每户的不同需求,使用代码指代用户需求,从而满足用户的需求

首先我们可以思考一下,7-Zip软件解决了什么问题?或者回到最本质的为什么需要有解压和压缩?a)让7z压缩协议拥有图形 b)使得7z概念得以传播 c)扩展压缩协议,当我们在超市选购中,发现买了卤水鸡蛋、可乐、辣鱼仔、薯片、方便面的时候,这回家不要紧,拿钥匙的时候,需要把东西放在楼梯扶手,然后再拿回家,你会发现有些麻烦,如果有一个塑料袋就会好多了,即可以一边吃着辣鱼仔,一边喝着可乐也不会有问题,因为有一个容器在这里装着,从这里也可以理解解压和压缩本质上就是让文件们有一个密封的容器,压缩可以认为是质量增大、面积减少,解压可以认为质量减少、面积增大。这里可以加上辅助知识:为什么网络传递需要序列化?因为不序列化,及时可以传得过去,但是这种方式太昂贵,因为既没有单一控制,也没有网络协议支持,所以将会寸步难行。如果到这里明白文字内容,就可以了,不必深究。

我们可以看一下7-Zip源代码的目录,版本是7z2107-linux-x64.tar.xz。这里是用Windows的tree指令生成的tree路径打印。里面有:

└─MANUAL
    ├─cmdline
    │  ├─commands
    │  └─switches
    └─general

看见在树根7z2017-linux-x64的目录下有7zz、7zzs、History.txt、Lincense.txt、readme.txt就知道没有太大的内容,于是就探索MANUAL文件夹的内容一打开发现都是HTML和CSS,我震惊了,这不是7-Zip吗,不应该有很多7z解压压缩算法的文件吗?为什么没有?这时候我就跳会到树根,就有了查看这五个文件的想法,在使用7-Zip解压7zz和7zzs之后,我发现居然也是一坨文件,根本就没有一点软件的迹象,是我的技术不够厉害,还是7-Zip本身出问题了,于是我就打开了安装版的7-Zip。而安装版的使用dir指令就有:

2021/12/27  18:00           112,890 7-zip.chm
2021/12/26  22:00            93,696 7-zip.dll
2021/12/26  22:00            62,976 7-zip32.dll
2021/12/26  22:00         1,710,080 7z.dll
2021/12/26  22:00           535,040 7z.exe
2021/12/26  22:00           215,040 7z.sfx
2021/12/26  22:00           193,536 7zCon.sfx
2021/12/26  22:00           945,664 7zFM.exe
2021/12/26  22:00           667,136 7zG.exe
2018/01/28  17:00               366 descript.ion
2021/12/27  16:52            54,604 History.txt
2022/01/15  03:39              Lang
2021/01/17  23:12             3,990 License.txt
2021/12/26  21:54             1,702 readme.txt
2021/12/26  22:00            14,848 Uninstall.exe

我一眼看出7z.exe和7z.dll是关键,然后外面套了一层7zFM.exe图形化界面有了7-Zip,因为我在

如果这时候我写得不是7-Zip,那么这篇文章的80%都需要重新书写,但是其本质没有变化,这就是计算机的特性,计算机科学都是依附在数学家或者黑客身上的情况,自己是不能存活的,所以现在的这篇文章依赖于7-Zip软件来表达软件编程,加上软件工程是服务业,就和早餐店差不多的形式,客户喜欢吃什么,我们就得做什么,而不是数学家的探索宇宙,不被约束。

参考资料

[1]7-Zip 官方中文网站

[2]Browse /7-Zip/21.07 at SourceForge.net

原文链接:https://www.w1ym.com/83139/,转载请注明出处~~~
0

评论0

请先

站点公告

【温馨提示】 本站不建议您对本站支付任何费用或开通任何会员本站99%资源为免费资源只提供共享不提供技术支持,本站资源主要以学习开发为主,本站是为个人资源记录学习研究等情况而建立,如特殊原因下载,需在24小时删除相关资源。本站资源均来自互联网收集或网友分享,若有侵权,请联系站长删除,谢谢。立即查看
显示验证码
没有账号?注册  忘记密码?