程序员为啥不把软件整合成一个可执行文件呢
很多软件在开发的时候使用了插件化的开发方式,每个插件都是一个独立的DLL。一些第三方功能模块不提供源代码,只能保持独立DLL的形态。如果同样的功能被多个exe文件使用,把功能打包成DLL可以降低开发和维护难度,减少文件总体积。
■网友
你是程序员吗?
这不是程序员的好恶。这是软件设计决定的。而为什么这么设计,是软件的制作需求决定的。
你看到的只是一小部分。很多java程序,就是做成.class或者.jar之类的就发布了。所以没什么可奇怪的。作为用户,好用就行了。
我估计你不是行里人,所以我不深说了。深说对外行没啥意义。这个问题对行里人应该都明白。
■网友
【程序员为啥不把软件整合成一个可执行文件呢】 就好像我有个桌子,它分了五个部件,由桌腿1-4号和桌面组成……
如果桌脚1号坏了,我可以买个原厂全新桌脚换上即可……
如果原厂发布新部件了,我还可以买一套全新花纹的桌脚1-4号,桌子立马焕然一新……
甚至,正吃着饭呢,桌脚坏了一个,我还可以拿个小木棍先撑着,别的人继续吃饭,我钻到桌子下面去换桌角……
但是你要是个整体,那只要任何一点损坏,我就只能把桌子丢了再买一个……
万一吃着饭呢,桌子坏了,我也只能说大家先别吃了,我们把桌子扔了,等我买个新桌子回来再吃吧……
■网友
go就是这样干的。
说一个很具体的需求,嵌入式软件对于可执行文件的大小非常敏感,都链接到一个可执行文件里面会导致占用空间太大。
■网友
这就是动态链接库和静态链接库的区别吧。
动态链接库优点,一是公用一部分库在内存空间,节约内存;二是模块化,为了方便修改某些小功能,接口不变的话,就不用重新编译生成可执行文件,提升效率,节约开发时间。
缺点,一是不同版本的动态库可能会导致程序无法正常运行;二是由于公用库代码的内存,调用其中的函数时,需要去找到其内存地址,确定函数入口,加载运行会比静态链接略慢一点点。
推荐阅读
- 招聘都要学历,何来程序员不看学历
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 银行系统的研发岗(程序员)是不是很难进(校招)推广到国企的研发岗(程序员)呢
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 怎样成为一名合格的Python程序员?
- 为啥5G和2.4G默认的BSSID是相同的
