bug报告:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 53 bytes) in /usr/vhome/3/0/5/305570.ctc-ue1-g1.dns.com.cn/www/pivot/pv_core.php on line 1153
在静态语言的社区里,从上面的转贴,对 gc 的普遍误解可见一斑。用 gc 来解放程序员的精力更多的只是一种宣传吧,它只是一种 C 语言无法实现的资源管理模型。把大多数语言转换为 C 来思考本身就是一种错误。
当然对 gc 有一定理解的程序员也不会只用 C 一种语言,更不会来争论这种无聊的话题 😀
C 是一个好语言,只是现在承载了太多本不该它承载的东西。有些问题,用不用 C 来解决并非开发效率/难度的问题,而是做不做的了的问题。硬把 C 用在不适合的领域,并非做不出来,而是做出来效率低下罢了。而(C)程序员们不觉得效率低下,仅仅是因为没有比 C 更好的选择而已。
bug报告:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 53 bytes) in /usr/vhome/3/0/5/305570.ctc-ue1-g1.dns.com.cn/www/pivot/pv_core.php on line 1153
不过我刚才看了一下,有几个说的蛮好的,起码比我水平高,我挺喜欢的:)
TO:haitao
虚拟主机服务器暂时性内存不足,刷新一下就好了。
老方谦虚了。^O^
我最喜欢这句话:这些底层开发并不属于主流的应用开发领域,跟这世界上99%的程序员没有关系!
就好像学物理的,一辈子都不太可能去造原子弹。许多工科生,一辈子都不可能拿诺贝尔奖。
不过,我倒是还有希望拿诺贝尔文学奖,是不是? o(∩_∩)o…哈哈!
文科和理科的区别可能就在这里。
99%?只能说老方的观点跟他们差不多。
软件业根本没有什么主流,做哪方面开发的人都有,都很多,适合用的语言也是五花八门,只有土鳖才会自以为”主流”。
再说搞底层也没有诺奖那么难,计算机界的诺奖级人物基本上是数学家。
在一个delphi论坛转贴了关于gc的话题
结果也引发了一次难得的技术讨论。。。。
└这个话题值得展开否。。。。 [haitao](580) 18:19:09 2007-01-11
│ { --C的缺点。。。。
│ {
│ { # cloudwu 发表于2007-01-11 14:15:28 IP: 218.72.14.*
│ { 我现在每天都用 C (非 C++)写程序,觉得 C 有诸多不足,但是并不讨厌它。
│ {
│ { 其实单就低阶语言来说的话,C 语言也不完美。在作为实现其它语言的工具时(比如用来实现
│ { 函数式语言,或是把 java 这样的语言写出的代码静态翻译成 C 等等),局限性很多。比
│ { 如对堆栈的控制性太弱,在语言级无法准确的操控堆栈。这使得 gc (基于根扫描)的实现,
│ { 尾调用的优化非常困难。
│ {
│ { 我最近读了篇 paper 很有共鸣。
│ { http://www.hpl.hp.com/personal/Hans_Boehm/gc/
│ {
│ { 虽然现在我们在低阶开发上把 C 当万能药在用,但它毕竟不能包治百病。如果真要证明 C 语
│ { 言已经不适用了,前面的文章的比较角度就错了。至于反驳,也不够理直气壮。
│ {
│ { 单说 gc , C 语言本身就不适合实现高性能的 gc 模块,寄托于未来有个天才写出一个 gc
│ { 库来是不现实的。那不会是一个 java 实现的那种 gc , 这是 C 语言本身的硬伤。
│ {
│ { 想用 C 库形式来实现性能足够的 closure 更是天方夜潭。
│ {
│ { 最后倒是 C++ ,颇让我觉得有种恨铁不成钢的感觉。高不成低不就,现在已经不大用了。
├自己的屁股自己擦 [好望角](7) 20:30:53 2007-01-11
│ { 别老指望别人。
├不值得 [holly](12) 20:36:56 2007-01-11
│ { 写的那位简直什么都不懂.
├不值得,gc gc,没有会死啊,没gc还不照样那么多工业级、商业级的软件诞生,有gc后、有…
││ { 标题:不值得,gc gc,没有会死啊,没gc还不照样那么多工业级、商业级的软件诞生,有
││ { gc后、有其它智能更高的语言后、又在此基础上出了些蛤好软件? [周星驰](0) 20:44:00
││ { 2007-01-11
││ { 正文:–无内容–
│├为懒人、不合格的程序员准备的东西离精益求精还有距离 [周星驰](0) 20:45:00 2007-01…
│││ { 标题:为懒人、不合格的程序员准备的东西离精益求精还有距离 [周星驰](0) 20:45:00
│││ { 2007-01-11
│││ { 正文:–无内容–
││└当机器做的事情越来越多,人做的事情就越来越少。当机器越来越像人,人就越来越像?..
││ { 标题:当机器做的事情越来越多,人做的事情就越来越少。当机器越来越像人,人就越
││ { 来越像机器。 [sealw](0) 09:01:00 2007-01-12
││ { 正文:–无内容–
│├我的意思是:为gc这么点屁大的事儿不足以诟病一个语言 [周星驰](0) 20:51:00 2007-01…
│││ { 标题:我的意思是:为gc这么点屁大的事儿不足以诟病一个语言 [周星驰](0) 20:51:00
│││ { 2007-01-11
│││ { 正文:–无内容–
││└如果真的有高效率的gc,应该是解放了很多程序员的不少精力了。。。。 [haitao](29)…
││ │ { 标题:如果真的有高效率的gc,应该是解放了很多程序员的不少精力了。。。。 [hai
││ │ { tao](29) 09:11:27 2007-01-12
││ │ { 正文:当然,也会引得更多水平略低的程序员抢更高一些的程序员的饭碗
││ ├再高效的gc都是由开销的。 [老玉米](42) 09:24:37 2007-01-12
││ ││ { 这个开销,对很多系统是不能忍受的,understand?
││ ││ {
││ ││ { 别整天正这些没用的了
││ │└武断啊,武断。。。 [haitao](67) 09:38:26 2007-01-12
││ │ │ { 对很多系统是不能忍受的,就是对所有系统是不能忍受的?
││ │ │ { 对你没有用,不等于对其他人也没有用
││ │ │ { 更何况你可能不过是没有发现而已呢。。。。
││ │ └你们俩彼此彼此. 呵呵 [holly](0) 09:40:00 2007-01-12
││ │ └你如果能做个没额外开销的gc,我就收回我的话。 [老玉米](0) 09:46:00 200…
││ │ │ { 标题:你如果能做个没额外开销的gc,我就收回我的话。 [老玉米](0) 09:4
││ │ │ { 6:00 2007-01-12
││ │ │ { 正文:–无内容–
││ │ ├高效率==没额外开销 [haitao](12) 09:47:47 2007-01-12
││ │ │ { 这是一个可容忍程度的问题
││ │ └不做 [holly](8) 09:48:00 2007-01-12
││ │ │ { 啥叫没额外开销?
││ │ └比直接管理内存,gc需要更多地cpu time [老玉米](0) 09:49:00 2007-01…
││ │ │ { 标题:比直接管理内存,gc需要更多地cpu time [老玉米](0) 09:49:00
││ │ │ { 2007-01-12
││ │ │ { 正文:–无内容–
││ │ ├可以考虑把GC功能集成进内存控制器嘛 [品雪](0) 09:50:00 2007-01-1…
││ │ ││ { 标题:可以考虑把GC功能集成进内存控制器嘛 [品雪](0) 09:50:00 2
││ │ ││ { 007-01-12
││ │ ││ { 正文:–无内容–
││ │ │└这个idea很牛比,但是估计还要有年头才能实现。 [老玉米](0) 09:5…
││ │ │ │ { 标题:这个idea很牛比,但是估计还要有年头才能实现。 [老玉米]
││ │ │ │ { (0) 09:55:00 2007-01-12
││ │ │ │ { 正文:–无内容–
││ │ │ └这个 idea 是扯淡 [holly](17) 09:57:23 2007-01-12
││ │ │ │ { 还不如就直接硬件实现 vm 算了.
││ │ │ └搬凳子 [老玉米](0) 09:58:00 2007-01-12
││ │ │ └凳子我收下了,去靠墙根站着吧 [品雪](0) 10:29:00 2007-01…
││ │ │ │ { 标题:凳子我收下了,去靠墙根站着吧 [品雪](0) 10:29:00
││ │ │ │ { 2007-01-12
││ │ │ │ { 正文:–无内容–
││ │ │ └靠,国让是正常人类大学毕业的,老师的职业病 [老玉米](0) …
││ │ │ │ { 标题:靠,国让是正常人类大学毕业的,老师的职业病 [老玉
││ │ │ │ { 米](0) 10:35:00 2007-01-12
││ │ │ │ { 正文:–无内容–
││ │ │ └重新小学去回炉 (空) (holly [1] 今天 10:00) [holly](…
││ │ │ { 标题:重新小学去回炉 (空) (holly [1] 今天 10:00)
││ │ │ { [holly](0) 10:52:00 2007-01-12
││ │ │ { 正文:–无内容–
││ │ └这不废话吗? [holly](23) 09:51:35 2007-01-12
││ │ │ { 硬要争的话例外也有, 比如整体释放的固定内存池
││ │ └靠,知道废话,你还问. [老玉米](0) 09:53:00 2007-01-12
││ │ └注意, 是反问! [holly](0) 09:57:00 2007-01-12
││ │ └分不清 [老玉米](5) 09:58:36 2007-01-12
││ │ │ { 什么叫反问
││ │ └重新小学去回炉 [holly](0) 10:00:00 2007-01-12
││ └标题这句话同意 [holly](6) 09:40:30 2007-01-12
││ { 里面的反对.
│└没有gc,就没有java,就没有.net [JoJo](0) 09:51:00 2007-01-12
├呵呵,这都是什么观点啊,我靠 [pigprince](0) 08:49:00 2007-01-12
├真有敢满嘴跑火车 [老玉米](0) 09:17:00 2007-01-12
├CSDN上已经吵过了 [品雪](0) 09:22:00 2007-01-12
├这无聊的千年水坑跨过去就是了,没什么必要喷口水进去了 [amo](0) 09:25:00 2007-01-12
│└我是觉得c/delphi能否实现一种高效率的gc。。。。 [haitao](32) 09:44:21 2007-01-12
│ │ { 目标:
│ │ { 释放垃圾时对cpu的压力不大
│ │ { 释放垃圾的及时性比较好
│ └它们的设计目标就是让主要由开发者来维护 [amo](42) 10:25:35 2007-01-12
│ { 不过应该还是可以做得出来的,毕竟都有自己的内存管理器
│ {
│ { 但要做到效果好就非常难了
└已经展开了啊。与其讨论是否需要GC,还不如讨论GC的优点和缺点。对了,几年前那个关于?..
│ { 标题:已经展开了啊。与其讨论是否需要GC,还不如讨论GC的优点和缺点。对了,几年前那
│ { 个关于“对象在被自动回收时发生异常的解决方法”的讨论,最后有没有结果? [李战](0
│ { ) 09:45:00 2007-01-12
│ { 正文:–无内容–
├gc已经不需要讨论优点和缺点的问题了 [JoJo](85) 09:58:47 2007-01-12
││ { 所有新出现的高级语言都必然提供gc,不然就没有人用。整个高级语言都在向描述性语言
││ { 发展,而类似C/C++这种中级语言已经非常完善(指语言本身),基本上不会再有新语言
││ { 出现了。
│└不知道垃圾回收器在销毁废品时发生异常,它该怎么办? 有没有人试过在对象的析构函…
│ │ { 标题:不知道垃圾回收器在销毁废品时发生异常,它该怎么办? 有没有人试过在对象
│ │ { 的析构函数中抛出异常?这个对象会不会被正确释放? [李战](0) 10:13:00 2007-01
│ │ { -12
│ │ { 正文:–无内容–
│ ├去查specification, 应该有定义 [老玉米](0) 10:15:00 2007-01-12
│ │└无定义 [李战](0) 10:50:00 2007-01-12
│ ├反正都在“栈”里,不管出了什么事,弹掉了事 [amo](0) 10:22:00 2007-01-12
│ │└没那么简单吧 [李战](0) 10:51:00 2007-01-12
│ └析构函数由宿主控制,你根本没权利创建和控制析构函数 [JoJo](36) 10:52:34 2007…
│ { 标题:析构函数由宿主控制,你根本没权利创建和控制析构函数 [JoJo](36) 10:52
│ { :34 2007-01-12
│ { 正文:例如Java的finalize函数,只是看上去像析构函数,实际上根本不是
└你是说gc的实现上的优缺点吧? [haitao](68) 10:19:25 2007-01-12
│ { 我觉得好的gc就要满足:
│ { 释放垃圾时对cpu的压力不大
│ { 释放垃圾的及时性比较好
│ {
│ { 至于销毁垃圾遇到异常,应该记下异常日志就行了吧
└异常日志是可以被记录,但对象是否被释放干净? [李战](0) 10:52:00 2007-01-12
└保证释放干净 [JoJo](12) 10:53:33 2007-01-12
│ { 对象所使用的资源就不一定
└就是啦 [haitao](70) 10:56:34 2007-01-12
│ { 仅仅释放对象本身的空间还不够,应该确保对象的销毁前是有机会执行自己的善后
│ { 函数
│ {
│ { 但是,既然出现了异常,就应该记录下来,又程序员分析解决了
└你说的这个,已经超出程序语言本身的范围了 [JoJo](87) 11:03:19 2007-01-12
{ gc是指对象回收,并不包括资源回收,还没有听说过自动资源回收的说法。资源
{ 和特定的硬件与操作系统有关,绝大部分程序语言都使用类库来提供资源支持,
{ 而没有把它设计到程序语言中去的。
最近忙,没空细谈这个,过阵子再说。
我的观点是:没有万能的语言,也不要想把什么语言搞成万能的。
在静态语言的社区里,从上面的转贴,对 gc 的普遍误解可见一斑。用 gc 来解放程序员的精力更多的只是一种宣传吧,它只是一种 C 语言无法实现的资源管理模型。把大多数语言转换为 C 来思考本身就是一种错误。
当然对 gc 有一定理解的程序员也不会只用 C 一种语言,更不会来争论这种无聊的话题 😀
C 是一个好语言,只是现在承载了太多本不该它承载的东西。有些问题,用不用 C 来解决并非开发效率/难度的问题,而是做不做的了的问题。硬把 C 用在不适合的领域,并非做不出来,而是做出来效率低下罢了。而(C)程序员们不觉得效率低下,仅仅是因为没有比 C 更好的选择而已。
那就换种说法:
搞操作系统等,就高人一等这种观点
基本属于扯淡
因为这是 兴趣 和 分工 的不同
操作系统是软硬件的界面
本身是提供了一个平台
平台给出,在上面能做事情
同样需要专业的工程师们来做
软件开发里很多思想都来自于企业级应用开发
搞操作系统的
未必能做出来一个能用的业务系统
分工不同
兴趣不同
术业有专攻
重要的是 爱好,热情,做事认真, 责任心, 不固步自封,
大家把业务系统的开发 看得太过简单
搞成建筑工地民工砌砖头般的力气活般对待
而且一贯地漫不经心,外行充内行,很少有人能持之以恒的学习
中国也有LINUX,各种版本的UNIX,WINDOWS,操作系统,开发平台一个不少,但是做出来的大批垃圾业务系统和应用程序,列位做过项目的都有体会吧
眼高手低
要求工程们能 专业地学习,做好自己的应用程序开发工作,
就已经是很难很难的事情了
也就是能继续吹吹 搞操作系统更高级 吧
问题是,中国人就这种态度,
让中国人搞,搞得出来么??
正因为没有比C更好的选择,所以我说没有C是万万不能的。很显然的一点就是:如果有更好的选择,C不会成为今天的C。
我同意老方的观点,不论做哪个方面的开发,本来就是分工的不同,不存在高低之分——当然冯·诺依曼之类的数学家那的确是比较高的。只不过现在的情况是,CSDN上很多人总觉得自己做的那一块业务应用领域就是最主流的,可以无视别人的存在。事实上即使是业务应用领域也有很多的区别的,就拿我现在做的SAP应用领域来说,用.net/JAVA也可以通过BAPI进行二次开发,但是绝对没有用ABAP方便高效统一。而ABAP就是一个非常小众的开发圈子。所以我要说那些家伙就是一群土鳖,嘿嘿。
的确,一直以来,把MIS开发看成是软件业里最低层次的工作了
其实要把用户的需求(他们自己都不确定,而且变化频繁)了解清楚,并用软件实现成一个当前能用、日后能扩展的MIS系统来,也是一件相当的技术活。。。。