V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Radeon  ›  全部回复第 31 页 / 共 33 页
回复总数  653
1 ... 23  24  25  26  27  28  29  30  31  32 ... 33  
2013-01-12 11:59:27 +08:00
回复了 Sherlockhlt 创建的主题 程序员 是返回一个结构指针好还是修改指针参数好?
很多C语言的初学者以为malloc()是最底层的函数之一。很遗憾,不是。malloc()只是OS提供的user land内存管理API的二道贩子而已
2013-01-12 11:54:56 +08:00
回复了 Sherlockhlt 创建的主题 程序员 是返回一个结构指针好还是修改指针参数好?
@Sherlockhlt 原因有好几种
1. 标准的malloc()不够优化。对于openssl这种lib来说,自己搞一套内存管理器,甚至关键路径用汇编都很正常
2. 库函数已经静态链接某一特定版本的malloc()了,用户代码自己可以用另一个版本。一个进程里存在两套以上的内存管理器互不干扰,虽然C语言的入门书不会提,但是是完全正常的。而且实际中的复杂应用中也很常见
3. 库函数实际上是OS的API。Kernel里的内存管理器和User land的自然不一样,想一样也不可能
2013-01-12 11:10:49 +08:00
回复了 Sherlockhlt 创建的主题 程序员 是返回一个结构指针好还是修改指针参数好?
补充一下,有时候库函数确实需要返回大小在调用前不确定的数据,由于大小不确定,所以调用方很难提前分配

方法有二
1. 提供一个查询函数,查询返回数据有多大,还是由调用方分配
2. 提供一个释放内存的函数,这样库函数可以安心用自己的内存管理器来动态分配内存
2013-01-12 11:02:58 +08:00
回复了 Sherlockhlt 创建的主题 程序员 是返回一个结构指针好还是修改指针参数好?
库函数不要返回自己"malloc"出来的数据,原因是客户代码和库函数有可能不使用一致的内存管理器

如果是自己的代码内部,又都使用标准的C的malloc(),可以用第一种方式返回数据
2013-01-12 08:13:11 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
@clowwindy putty只有500KB,而且还是GUI程序

举一两个应用的例子抬杠也没有意思,Windows和OSX早就证明了每个应用自带依赖没什么问题,硬盘空间照样够用。吃硬盘的不是应用而是媒体文件。这点也不用跟我争,去问问Win/OSX的用户就行

本来软件包就该由开发方维护、发布,由发行版维护到底有什么好处呢?打一行apt-get install xyz就能用上看似很惬意,实际上问题很大。不能指定安装路径、不能指定版本、不能同时安装多个版本、配置文件、应用文件分散到不同的目录里不好找,不同的发行版使用的配置文件格式还不一样,要不停得学习新格式,这些不都是给用户找麻烦么
2013-01-11 21:37:10 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
二进制库的大小真不是问题。putty, winscp这些用到openssl的应用都很小巧。除了巨型软件套装(如Adobe CS、Visual Studio、MS Office之类),Win下的常见应用的大小基本都在10MB这个量级

C++程序由于模板,展开后编译出上百MB的目标文件很正常。这是C++的设计缺陷。而且由于模板都是在客户代码(即最终应用)中展开,换用包管理器也无济于事(因为没有别的应用会和你共享实例化以后的模板)

Linux的包管理把整个系统的代码库串联起来,缺少冗余,从结构上来说很脆弱。一个库有bug或者出现regression,所有相关应用都遭殃
2013-01-11 15:45:32 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
@haohaolee 说得好!
2013-01-11 14:52:22 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
@est DLL hell是历史了。目前的Windows应用都推荐做成支持XCOPY的。话说回来, dll hell就是没有严格执行“每个应用自带依赖”造成的

MSI至少是个操作系统支持的规范,好处是用户如果安装msi型的软件,他永远都能找到卸载的入口。OSX的pkg格式没有规范,就导致反安装方式无法八门

另外,无需提OSX的.app(bundle)格式。自带依赖并支持XCOPY部署本来不就应该是理所当然的么??
2013-01-11 14:27:50 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
@est MSI跟winsxs没有关系。Winsxs是side-by-side assembly用的。标准的windows应用是支持XCOPY部署的,需要反安装包的用户给他们提供个msi包装的版本
2013-01-11 13:42:39 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
@wliment 自带依赖根本不会让软件膨胀多少。C/C++库都是百KB ~ 几十MB级别而已。当然,巨型软件总是很大的,但是膨胀的部分往往不是库而是资源文件、帮助文档之类,反正瞎搞是没下限的

Windows、OSX下这么多年下来也没有多少人表示软件包的平均大小让人吃不消吧
2013-01-11 13:37:51 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
这年头居然有人认为Windows下卸载程序一定会留下残留,真是让人无语。这是要分installer的作者有没有用心去写的好不好,写的好的软件,卸载自然不会有垃圾残留的
2013-01-11 11:13:45 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
@fox000002 软件包应该自带依赖。这样就不需要一个全局包管理器了。用户也可以安装同一个软件的多个版本实例,互不干扰。目前msi的做法就很好,用户指定一个安装目录就行了。
2013-01-11 11:05:39 +08:00
回复了 zhonghua 创建的主题 程序员 ubuntu 11.10 desktop,无线上网,速度奇慢无比
@likuku 我从2007年就使用mac作为主力开发机器,中间不知道折腾了多少东西,也曾经是坚定的苹果信者。不过目前我看透了,Mac/OSX实际的问题很多,绝对被大众媒体高估和神话了。别人眼里的"just works"对我来说远远不够好用。

我已经换回Linux作为主力OS了,Windows用来补充,OSX基本不用了
2013-01-11 11:00:15 +08:00
回复了 tioover 创建的主题 Linux 为什么linux发行版之间不能有一个统一的二进制软件包标准?
为什么非要包管理器呢。像Windows那样做成.msi类型的installer是最好的
2013-01-10 16:58:33 +08:00
回复了 zhonghua 创建的主题 程序员 ubuntu 11.10 desktop,无线上网,速度奇慢无比
@zhonghua 没那么简单,Mac这两年被神话了。“智能”和“弱智”只有一步之遥。对别人来说"just works"的设定,对自己来说也许是脑残,而且还改不了
这个话题不出所料变成TIOBE排行榜了
C
2012-12-28 17:49:57 +08:00
回复了 jiyinyiyong 创建的主题 问与答 觉得 V2EX 中文字体 Linux 上看着好难看, 有同感的同学么?
自己用stylish调啊
2012-12-27 13:20:14 +08:00
回复了 iqav 创建的主题 Apple iMac、Mac Pro、Macbook Pro 自用哪个更为实用呢?
台式机过时了以后就是笨重的一堆铁,笔记本多少还算是个东西
我也觉得4个小时不错了
1 ... 23  24  25  26  27  28  29  30  31  32 ... 33  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1097 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 18:56 · PVG 02:56 · LAX 10:56 · JFK 13:56
Developed with CodeLauncher
♥ Do have faith in what you're doing.