Chinaunix

标题: [转][值得思考]C++ 会议第一天,Lippman说C++不适合做大项目 [打印本页]

作者: prolj    时间: 2009-12-13 13:09
标题: [转][值得思考]C++ 会议第一天,Lippman说C++不适合做大项目
http://blog.codingnow.com/2009/12/cpp2009.html

Lippman 大牛的第一场,关于大型可伸缩性的软件开发的, Chen Shuo 同学翻译的很不错

找到电源,所以可以写写了。

果然是牛人啊,上来就讲形而上的东西。我听的有趣,就做了点笔记,但是记的不多。

我们从自然界去寻找灵感,然后在计算机领域去搞出来。以前的计算机是没有内存的,后来冯大侠说,计算机就像大脑,大脑是有记忆的,所以有了内存。

我们现在说大脑就像计算机,是本末倒置了。人们总是从自然界的角度来思考,然后解决软件里的问题。Lippman 牛的想法是,把软件比作生物,从 DNA ,细胞核开始向上一层层的。

系统的基础组织部分是 Data Structure 和 Data Stream ,这个就像细胞一样;在应用领域方面,Executive Function 和 Type Information 就好比生物的各个器官。

大牛参加了许多项目,他抱怨了一轮,说好多都可耻的失败鸟。大项目就是容易失败。程序员辛苦啊,根本不是所谓白领。而且每个程序员都是不可替代的。因为每个人的学习经历不同,看待问题不同,写出来的程序就不同。人们对编程的理解并不像想象的那么美好。现在慢慢的我们提高了抽象层次,按这个宇宙存在的方式去运作。但是从 java 开始学习编程,对程序员来说是有很大代价的,以前用 pascal 开始学习程序也有很大代价。大约是说,失去了对某些本质的理解。形成的对程序世界的世界观会有问题。

说回大项目,比如他参加的 Visual Studio 就不是啥成功的产品。用 .net 做 Windows 也很失败,那玩意根本就跑不快。微软做软件的哲学有问题,所以做不好。

有一个土星登陆器的项目,一代代技术都更新了。他作为技术顾问,提了些建议。主架构师纠结于用 java 还是用 C++ 这种问题上。其实架构师根本不应该关心用啥语言做。语言好不好都是屁话,把事情做好才对。最终项目是失败了。有很多问题都不是常规方法可以处理的。比如通讯的问题,因为土星上有什么什么,导致有时候信号 5,6 小时发不出去,等等。传统的通讯连接方式就不适用。

还有好多项目(有具体列举,没一一记了),做着做着,做了好几年,程序员心都凉了。

另一个是 MMO 项目,花了几千万,还是可耻的失败鸟。做出来后,什么都好,什么都很完美,只能支持 40-50 人在线。公司还说圣诞就要上。高层说,无所谓,不能玩也无所谓,做出来就好。结果当然是不能用的。开发人员心那是拔凉拔凉的。

再话说,Sun AT&T 几个公司想用 C++ 重写 Unix 。还有 IBM 等等用 Unix 的公司,搞了个啥邪恶同盟。反正最后也是可耻的失败鸟。

还有 Bell Labs 的 Plan 9 。东西是好的。不过根本不能成为一个产品。这里,提醒各位同学,找工作要小心。先侦察一下,如果公司就是要做个啥项目光冲着赚钱去的,这心态就有问题,肯定玩完。还有管理人员一定要懂技术,要知道做的东西是怎么回事。否则碰到这种倒霉事赶紧卷铺盖走人,别浪费青春。

接下去又说了好多悲剧,比如 IBM 的 OS/2 啥的。说着说着,说不下去了,名单太长,全是血泪史啊。

Lippman 接着自比江湖百晓生。我觉得他是自谦,想说自己其实只是倚老卖老,知道许多事情,参与了很多项目而已。

正题其实是说怎么做大规模可伸缩性的项目。结论很悲观,说 C++ 其实不适合做这个。最后我问了个问题,说那什么合适呢。他没正面回答。不过举了个例子,提了爱因斯坦的相对论,还有量子力学。大约是想说,C++ 更像是 BS 大牛个人的作品,他一个人构架了 C++ 的大部分东西。但是我们未来需要新的语言来解决问题的话,应该参考量子力学的发展过程,大家一起来构架。C++ 呢,说这个最后可能会被我们带进坟墓。不是 C++ 不好,是因为细节太多,没人全搞的明白。结果每个人写出来的程序都不一样。指定规范很难。最后会有很多人不愿意学。

正题里围绕的实际例子是在动画工业中的。其实做动画,好多工具都是用完即弃的。提高可复用性,关键在于要把可复用单元做的足够小。做大就没人理你了。

他们有人(貌似说的 pixar)做了个神奇的东西,反正就是类似 method 注册啦,动态生成类型啦之类的一个奇妙的 C++ 玩具。可以把代码动态的以字符串形式注册进去。动态生成一些类,一些接口调用之类。大约加了两个间接层。代码里充斥着所谓的注册代码。往往多达几千个。当然性能上也因为这个间接层,下降了几十倍。

当然,大型可伸缩的项目,性能也不是关键的东西。

这里还插了几句关于脚本的。说是有 C++ 程序员说,其实我拿 C++ 写什么什么也很快的。不过那不行,因为 C++ 程序员太少。你用 C++ 写没问题,不过要求你写完了翻译成 perl 代码.

不过这个东西很复杂,所以除了写它的人,没人愿意去看怎么实现的。后来做这个的那个家伙回巴黎去了。那些代码也很可怕,很复杂,里面也有很多 bug 。

后来 Lippman 也做了个类似的东西,也是号称 Metaprogramming ,不过不是所谓 template metaprogramming ,而是代码生成代码。最终自动生成的是 C 结构。不过主要目的达到,就是隐藏众多细节。有人说这个不是 OOP ,没有 class 啥的,不过他认为这个也是 OOP 。OOP 不能看表象。他说,他其实只是想明白个事,关于静态数据和动态部分之类。

这个例子我很有感触,因为我们公司曾经也有个类似的东西。做了个 C++ 和 lua 的巨复杂的粘合层。弄的看起来很高级。结果发明和维护的人走了后,用它的项目组都以把这坨东西从项目中去掉为荣。

说起大项目,Lippman 说,一切失败的大项目都有个通病。就是时间很长,经过几年后,就变成了一个封闭王国。结果没人知道在干啥。里面拉帮结派,为了一些无所谓的技术问题争来吵去。其实争论的都不是要干的事情。

另外,项目太大了后,就没人了解项目的全部细节。渐渐的,大家都只关心自己做的那一块。这样很糟糕。他思考后,认为解决的方法是,应该把结构旋转 90 度,变成一个有层次的结构。从上到下一层层剥离。同一层次上就不要横向切了。

嗯,这个问题我也很有感触,虽然我的项目不算特别巨大。但是只有我一个人了解项目全部的细节,这让人很累。当然如果要每个人都了解全部细节,就会让每个人都很累。

以上是我凌乱的一些听课笔记。很多有趣的东西没来的及记下。可能也有很多我的误解在里面。同学们姑且看之吧。
作者: zhanglistar    时间: 2009-12-13 16:14
哎,真的是悲剧啊
我还在学unp呢
c++ 太复杂了啊
一直在用c
偶尔做项目用MFC,都是很水的 helloworld级别的呢

技术前途渺茫啊
作者: prolj    时间: 2009-12-13 16:21
世界是政客和商人的,商人当婊子,政客立牌坊。
作者: flynetcn    时间: 2009-12-13 18:45
还有管理人员一定要懂技术,要知道做的东西是怎么回事。否则碰到这种倒霉事赶紧卷铺盖走人,别浪费青春。

---------------
顶这句!就烦感一些技术管理者,你和他谈论设计和code的,他就不爱烦,“我不关心那个,我只要结果!”。这样的管理,猪都会!!

*********
引用<unix编程艺术>的话:

Unix程序员往往对这些问题有本能的直觉。在Unix下,OO语言没能代替非OO的主力语言,如C、Perl(其实有OO功能,但用得不多)和shell等,这种直觉似乎也是原因之一。跟其它正统领域相比,Unix世界对OO语言的批判更直接了当;Unix程序员知道什么时候不该用OO;就算用OO,他们也尽可能保持对象设计的整洁清晰。正如《网络风格的元素》(The Elements of Networking Style)一书的作者在另一个略有不同的背景下所说的[Padlipshy]:“如果你知道自己在做什么,三层就足够了;但如果你不知道自己在做什么,十七层也没用。”

OO在其取得成功的领域(GUI、仿真和图形)之所以能成功,主要原因之一可能是因为在这些领域里很难弄错类型的本体问题。例如,在GUI和图形系统中,类和可操作的可见对象之间有相当自然的映射关系。如果你发现增加的类和所显示的对象没有明显对应关系,那么很容易就会注意到胶合层太厚了。

Unix风格程序设计所面临的主要挑战就是如何将分离法的优点(将问题从原始的场景中简化、归纳)同代码和设计的薄胶合、浅平透层次结构的优点相结合。
作者: nicolas.shen    时间: 2009-12-13 22:11
我是学物理的,当然量子力学不在话下,在我看来,学量子力学好比学java,很多本质的,内在东西它不去,也弄不清楚,所以只要会用就可以了,这样做的后果就是:她是临时的,妥协的,会阻碍大众对问题的内在的探索,因此搞研究的不应该纠结于语言的繁简,而应该提高抽象能力
作者: prolj    时间: 2009-12-13 22:28
标题: 回复 #5 nicolas.shen 的帖子
清华的?
作者: nicolas.shen    时间: 2009-12-13 22:34
pku
作者: prolj    时间: 2009-12-13 22:36
以为是清华的前同事呢,不过pku也很强大啊,妞儿很放得开,思想比较高潮,口齿比较快。技术上,实说,还没有遇见北大的牛人。
作者: nicolas.shen    时间: 2009-12-13 22:40
pku的精神已不再啦
作者: ZSMDEV    时间: 2009-12-13 22:46
醍醐灌顶啊

作者: prolj    时间: 2009-12-13 22:49
虽然我比较喜欢那里的古建筑和环境,但是很难恭维了,可以说90年之后就没有pku了。
shen童鞋可以成为一代牛人,重振pku的雄风啊,现在里面的风气,说实话,老师的水平跟北大青鸟讲师差不多了。学生傲气有余,实干不足啊。
作者: nicolas.shen    时间: 2009-12-13 23:06
嗯,如果我能赚到很多钱会考虑回去开个实验室 ,名字我都想好啦,人家有叫仙童,我的叫“化境”
作者: prolj    时间: 2009-12-13 23:09
标题: 回复 #12 nicolas.shen 的帖子
收我去打工吧,硬件虽然没入门,但是软件上咱敢得瑟啊
作者: nicolas.shen    时间: 2009-12-13 23:10
我还木有钱呢
作者: heixia108    时间: 2009-12-13 23:44
原帖由 prolj 于 2009-12-13 22:36 发表
以为是清华的前同事呢,不过pku也很强大啊,妞儿很放得开,思想比较高潮,口齿比较快。技术上,实说,还没有遇见北大的牛人。


原来是清华的啊   膜拜一下~
作者: baopbird2005    时间: 2009-12-14 09:19
如雷贯耳
作者: jph83    时间: 2009-12-14 09:29
“C++不适合做大项目”我感觉也是,但普通人一辈子也感觉不到。
不要以为我在逗你玩,我说的可是真的哟。
作者: chenzhanyiczy    时间: 2009-12-14 09:37
月经贴!整天讨论c++这个好那个坏,没意思
作者: 1world1dream    时间: 2009-12-14 10:03
"C++ 更像是 BS 大牛个人的作品,他一个人构架了 C++ 的大部分东西"
这句说得对,C++就是BS自言自语意淫出来的东西。
作者: wuexp    时间: 2009-12-14 13:48

作者: windyrobin    时间: 2009-12-15 18:31
proj 阿姨的发言越来越大胆啦哈!

作者: hnwcr    时间: 2009-12-15 22:44
标题: 可她讲的都是实话
原帖由 windyrobin 于 2009-12-15 18:31 发表
proj 阿姨的发言越来越大胆啦哈!



精神确实没了,只剩下“傲气有余”啦。
作者: pqpqme    时间: 2009-12-16 10:08
还是具体问题具体分析吧,大型项目是多大?哪一类?
用适合的解决方案解决实际问题,灵活一些吧。当然并不一定要用C。
作者: jeanlove    时间: 2009-12-16 13:18
原帖由 prolj 于 2009-12-13 13:09 发表
http://blog.codingnow.com/2009/12/cpp2009.html

Lippman 大牛的第一场,关于大型可伸缩性的软件开发的, Chen Shuo 同学翻译的很不错

找到电源,所以可以写写了。

果然是牛人啊,上来就讲形而上的 ...


不得不顶。

所谓的OO语言,各种OO的好处,更多的情况下是一种假设:
这种假设基于: "我"认为这样做了以后,程序能够封装的更好,模块化的更好,云云。
但是假设毕竟是假设,脱离不开人的水平。

1. 所以C++也好,Java也好,各种设计上的"闪光点"其实是假定这样做有某种好处-----但是在现实工程中这些好处是不是会体现出来是不确定的,而这样做造成的代价和混乱确是一定存在的,所以就变成了悖论。
2. 更糟糕的是,一个项目中的程序员水平不一样,总有人喜欢把项目当成试验田,把各种高级特性进行低水平的滥用,最后你去看这个工程:快变成垃圾了,后来的人越来越不能维护了。
3. 即便是OO,各个人的理解不一样,有人认为要这样封装,有人认为要那样封装,一个人认为自己封装得很好,其他人会认为是垃圾。
4. C的程序难以维护的地方C++也一样: 一个程序流程N个对象相互交户,除了问题,该谁? 替换谁? 这两个语句的顺序能变吗? 这两个对象之间到底有什么样的交互? 对于接受大工程的人来说,OO的好处,归根到底竟然只是引入了Namespace使得变量和函数的scope变得比C更清晰了而已。此外没有任何意义。

C++是B.S.个人的观点,同样Java也是J.G的个人观点,而已。
作者: windyrobin    时间: 2009-12-16 13:49
原帖由 hnwcr 于 2009-12-15 22:44 发表



精神确实没了,只剩下“傲气有余”啦。


切,俺从来对什么专家、学者、教授,清华北大的不感冒,
是骡子是马 在洒家面前跑两步就明白啦!
作者: 灿烂星空    时间: 2009-12-16 14:29
原帖由 windyrobin 于 2009-12-16 13:49 发表


切,俺从来对什么专家、学者、教授,清华北大的不感冒,
是骡子是马 在洒家面前跑两步就明白啦!


我也是对那些东西不感冒,是骡是马拉出来遛遛,是公是母亮出来看看。



[ 本帖最后由 灿烂星空 于 2009-12-16 14:32 编辑 ]
作者: mcemil    时间: 2009-12-16 14:52
只知道pku的oj很火爆,因为没什么水题 ,以前一直在zoj混,后来去poj看了下,那个提交量真是惊人。
作者: koolcoy    时间: 2009-12-16 15:53
原帖由 jeanlove 于 2009-12-16 13:18 发表


4. C的程序难以维护的地方C++也一样: 一个程序流程N个对象相互交户,除了问题,该谁? 替换谁? 这两个语句的顺序能变吗? 这两个对象之间到底有什么样的交互? 对于接受大工程的人来说,OO的好处,归根到底竟然只是引入了Namespace使得变量和函数的scope变得比C更清晰了而已。此外没有任何意义。


作者: koolcoy    时间: 2009-12-16 15:54
原帖由 mcemil 于 2009-12-16 14:52 发表
只知道pku的oj很火爆,因为没什么水题 ,以前一直在zoj混,后来去poj看了下,那个提交量真是惊人。

一个网游而已
作者: mgqw    时间: 2009-12-16 16:14
清华北大都出国享福去了,在国内大部分都是俺们这种二三流学校的苦命农民工
作者: fire_cpp    时间: 2009-12-16 20:05
C++不适合大项目,照文中所说原因就是语言太庞大、没人能弄懂所有的内容,而一个目标可以通过许多特性(甚至是非常生僻的特性)来实现,造成维护困难。那么,我认为,之所以不适合大项目,部分原因在于语言自身,部分原因在于项目管理上。

我也不喜欢C++太过庞杂,而喜欢Python这样的东西。
作者: alphayeah    时间: 2009-12-16 20:57
以C++语法过于复杂,我通常写C++程序,都是用最简单的语法,和用其它OO语言没啥两样的使用。
作者: songvar    时间: 2009-12-16 21:29
各种语言都越来越复杂,越来越强大。
作者: chinesedragon    时间: 2009-12-16 21:56
我正在学习C++啊,打击人啊
作者: done100    时间: 2009-12-16 22:35
标题: C++做大项目的确有难度
学好C++已是十分不容易,还得搞清楚项目的细节,再把这两个本身很复杂的东西弄在一起,的确很需要魄力和勇气啊
作者: 李营长    时间: 2009-12-16 22:54
C++如果做很大的项目,再加上封上几层,确实很痛苦。几大开源的C++库都有这个毛病,最小的STL已经让许多人哭爹喊娘,复杂的BOOST,ACE就更不用说了。微软人弄出来的ATL/WTL也给一些人带来了困扰
作者: max_cpp    时间: 2009-12-16 23:06
都牛人,学习了!
作者: 小羊咪咪    时间: 2009-12-17 00:31
原帖由 李营长 于 2009-12-16 22:54 发表
C++如果做很大的项目,再加上封上几层,确实很痛苦。几大开源的C++库都有这个毛病,最小的STL已经让许多人哭爹喊娘,复杂的BOOST,ACE就更不用说了。微软人弄出来的ATL/WTL也给一些人带来了困扰


其实即使自己写的模板,过段时间再看,也是哭爹喊娘
作者: hellioncu    时间: 2009-12-17 08:28
C++也可以用得简单些,没人逼你非得把C++的所有特性都用上。
继承么也不要太多层次了,最多2、3层,一般也不要用多继承。
这样C++还是很好用的。
作者: evaspring    时间: 2009-12-17 09:29
下次试下C++ ~
作者: liuty2006    时间: 2009-12-17 11:03
CU的人大都对c++有偏见:(
其实,大规模的程序设计才是c++的长项。
作者: egmkang    时间: 2009-12-17 11:06
标题: 回复 #41 liuty2006 的帖子
对的呀,蜗居里面的小贝就是学大规模C++......来着
作者: 乱.码    时间: 2009-12-17 11:11
原帖由 jeanlove 于 2009-12-16 13:18 发表

2. 更糟糕的是,一个项目中的程序员水平不一样,总有人喜欢把项目当成试验田,把各种高级特性进行低水平的滥用,最后你去看这个工程:快变成垃圾了,后来的人越来越不能维护了。



这一条说的太对了!
一种语言是要完成一个功能,要尽可能用最简单的方法来实现,而不要没事在产品上炫耀自己的奇技淫巧,实际上,细看起来就像一坨屎!
作者: egmkang    时间: 2009-12-17 12:07
标题: 回复 #43 乱.码 的帖子
我们的项目看起来就是一坨屎
作者: reiase    时间: 2009-12-17 12:56
标题: 回复 #44 egmkang 的帖子
挖个坑,然后把shit堆里边,并尽量保证shit不泄漏
作者: reiase    时间: 2009-12-17 12:58
粘合层越薄越好,而且粘合层最好不要有思想
作者: charming72    时间: 2009-12-17 13:05
原帖由 jeanlove 于 2009-12-16 13:18 发表


不得不顶。

所谓的OO语言,各种OO的好处,更多的情况下是一种假设:
这种假设基于: "我"认为这样做了以后,程序能够封装的更好,模块化的更好,云云。
但是假设毕竟是假设,脱离不开人的水平。

1. 所以C++也好,Java也好,各种设计上的"闪光点"其实是假定这样做有某种好处-----但是在现实工程中这些好处是不是会体现出来是不确定的,而这样做造成的代价和混乱确是一定存在的,所以就变成了悖论。
2. 更糟糕的是,一个项目中的程序员水平不一样,总有人喜欢把项目当成试验田,把各种高级特性进行低水平的滥用,最后你去看这个工程:快变成垃圾了,后来的人越来越不能维护了。
3. 即便是OO,各个人的理解不一样,有人认为要这样封装,有人认为要那样封装,一个人认为自己封装得很好,其他人会认为是垃圾。
4. C的程序难以维护的地方C++也一样: 一个程序流程N个对象相互交户,除了问题,该谁? 替换谁? 这两个语句的顺序能变吗? 这两个对象之间到底有什么样的交互? 对于接受大工程的人来说,OO的好处,归根到底竟然只是引入了Namespace使得变量和函数的scope变得比C更清晰了而已。此外没有任何意义。

C++是B.S.个人的观点,同样Java也是J.G的个人观点,而已。



只是J.G把Java弄成个虚拟机,浪费了更多的计算资源,让硬件商人卖了更多硬件
作者: OwnWaterloo    时间: 2009-12-17 13:14
原帖由 jeanlove 于 2009-12-16 13:18 发表
C++是B.S.个人的观点,同样Java也是J.G的个人观点,而已。


对你这句话, 我很生气。
就从这句话就可以看出你对B.S. 只是在人云亦云而已。
你了解B.S. 在设计C++时倾注的心血么? 了解J.G设计java时的傲慢么?  居然把他和J.G之流放在一起比较。
你这是赤果果的侮辱。
作者: maxxfire    时间: 2009-12-17 13:21
一切失败的大项目都有个通病。就是时间很长


顶这句,我们公司就有个这样的项目,足足做了4年,开发人员一个接一个的换,从PHP搞到JAVA,最终夭折。。

4年啊,什么概念,以房地产来看,多少高楼都拔地而起了。。

有的时候想想,搞IT不如建筑算了,建出来的东西实实在在的现在眼前;每个普通人都能看的见摸的着啊。。
作者: 论坛热点    时间: 2009-12-17 13:30
原帖由 OwnWaterloo 于 2009-12-17 13:14 发表


对你这句话, 我很生气。
就从这句话就可以看出你对B.S. 只是在人云亦云而已。
你了解B.S. 在设计C++时倾注的心血么? 了解J.G设计java时的傲慢么?  居然把他和J.G之流放在一起比较。
你这是赤果果的侮辱。


你这样好像你是B.S的小秘状也
作者: OwnWaterloo    时间: 2009-12-17 13:37
标题: 回复 #50 论坛热点 的帖子
你这样好像你是墙头草状也
作者: 论坛热点    时间: 2009-12-17 13:39
原帖由 OwnWaterloo 于 2009-12-17 13:37 发表
你这样好像你是墙头草状也

不要误会,我的意思是喜欢一样东西,不要表现得那么亲密,不然会让人肉麻的
作者: UnixStudier    时间: 2009-12-17 13:39
原帖由 liuty2006 于 2009-12-17 11:03 发表
CU的人大都对c++有偏见:(
其实,大规模的程序设计才是c++的长项。

據說,c++比較擅長大規模的程序設計。

其實還是c語言寫的大規模的程序多。不知道上千萬行代碼的項目叫不叫大規模,反正我知道幾個這種級別的項目都是c語言做的。
作者: reiase    时间: 2009-12-17 13:40
标题: 回复 #51 OwnWaterloo 的帖子
老兄别生气哈,个人作品不个人作品无所谓

perl5与perl6就是个人作品与社区作品的区别
作者: OwnWaterloo    时间: 2009-12-17 13:43
标题: 回复 #52 论坛热点 的帖子
不要误会,我的意思是不管你对某东西喜欢还是不喜欢,都要有自己的主见,别做墙头草
作者: 论坛热点    时间: 2009-12-17 13:44
原帖由 reiase 于 2009-12-17 13:40 发表
老兄别生气哈,个人作品不个人作品无所谓

perl5与perl6就是个人作品与社区作品的区别


B.S被玷污了,他能不是生气么
作者: 论坛热点    时间: 2009-12-17 13:46
原帖由 UnixStudier 于 2009-12-17 13:39 发表

據說,c++比較擅長大規模的程序設計。

其實還是c語言寫的大規模的程序多。不知道上千萬行代碼的項目叫不叫大規模,反正我知道幾個這種級別的項目都是c語言做的。

啥样的叫大规模,本来10万行的程序,让笨蛋写成100万行,就叫大规模了?
作者: han_leimin    时间: 2009-12-17 13:50
单纯从源代码级别来看,大规模C++基本上是不可维护的,开发人员众多,水平参差不齐,而且C++语言自身而言就尤其的复杂,特性众多,大多数人工作在C++的一个子集上就足够了。我很赞赏楼主所说得,程序员不能随意就替换的,思考问题的风格以及学习经历和知识结构的不同,对代码的理解差别就相当的大。要想用C++开发大型项目主要要解决两个问题,一个是C++特性的使用必须有效的进行规范和约束(例如设计模式和STL的使用就需要仔细盘算一下),二是从更高的抽象层次上分解大型项目,例如UML建模工具等手段(UML工具以及设计模式也不是太容易掌握的,但应该是一种趋势),能够在设计视图和源码之间保持绝对的同步非常重要,提高对问题解决的抽象层次,这方面严肃的工具还是不少的。
    大型项目失败的原因不应该出在C++本身的复杂特性上,很大程度都是对它的理解不够而滥用造成的,最后成了一个烂摊子。能够透彻理解C++特性,编程风格一致的程序员也是异常的缺乏。所以用C++开发大型项目还是小心为妙。
作者: 论坛热点    时间: 2009-12-17 13:54
原帖由 han_leimin 于 2009-12-17 13:50 发表
单纯从源代码级别来看,大规模C++基本上是不可维护的,开发人员众多,水平参差不齐,而且C++语言自身而言就尤其的复杂,特性众多,大多数人工作在C++的一个子集上就足够了。我很赞赏楼主所说得,程序员不能随意 ...

不对,如果只用C++的可用的牛寺性,还是可以维护的
作者: OwnWaterloo    时间: 2009-12-17 14:02
标题: 回复 #54 reiase 的帖子
其实C++也是由标准委员会而不是由B.S. 一人独揽大局的。
Lippman在这点上只是表达自己的谦虚以及对B.S. 的敬意而已。

对一些无知而无谓的言论, 我确实感到眼睛很疼
作者: 论坛热点    时间: 2009-12-17 14:18
原帖由 OwnWaterloo 于 2009-12-17 14:02 发表
其实C++也是由标准委员会而不是由B.S. 一人独揽大局的。
Lippman在这点上只是表达自己的谦虚以及对B.S. 的敬意而已。

对一些无知而无谓的言论, 我确实感到眼睛很疼

我看主贴没有“Lippman在这点上只是表达自己的谦虚以及对B.S. 的敬意而已。
”的意思,你怎么知道的?
作者: OwnWaterloo    时间: 2009-12-17 14:23
标题: 回复 #61 论坛热点 的帖子
您得重造。 小的对话就会死机, 对大段文字信息的提取能力更是欠缺。
作者: 论坛热点    时间: 2009-12-17 14:25
原帖由 OwnWaterloo 于 2009-12-17 14:23 发表
您得重造。 小的对话就会死机, 对大段文字信息的提取能力更是欠缺。

没人在主贴里看到“Lippman在这点上只是表达自己的谦虚以及对B.S. 的敬意而已。
”的意思,就你看到了,莫非你是他x里的xx?
作者: OwnWaterloo    时间: 2009-12-17 14:29
标题: 回复 #63 论坛热点 的帖子
原帖由 prolj 于 2009-12-13 13:09 发表
http://blog.codingnow.com/2009/12/cpp2009.html
Lippman 接着自比江湖百晓生。我觉得他是自谦,想说自己其实只是倚老卖老,知道许多事情,参与了很多项目而已。

正题其实是说怎么做大规模可伸缩性的项目。结论很悲观,说 C++ 其实不适合做这个。最后我问了个问题,说那什么合适呢。他没正面回答。不过举了个例子,提了爱因斯坦的相对论,还有量子力学。大约是想说,C++ 更像是 BS 大牛个人的作品,他一个人构架了 C++ 的大部分东西。


Lippman的意思难道是:
原帖由 jeanlove 于 2009-12-16 13:18 发表
C++是B.S.个人的观点




到底谁是Lippman的xx?
作者: 论坛热点    时间: 2009-12-17 14:32
原帖由 OwnWaterloo 于 2009-12-17 14:29 发表


Lippman的意思难道是:




到底谁是Lippman的xx?


C++ 更像是 BS 大牛个人的作品,他一个人构架了 C++ 的大部分东西。

“个人的作品”
作者: OwnWaterloo    时间: 2009-12-17 14:35
标题: 回复 #65 论坛热点 的帖子
原帖由 论坛热点 于 2009-12-17 14:32 发表
C++ 更像是 BS 大牛个人的作品,他一个人构架了 C++ 的大部分东西。
“个人的作品”


果然AI有缺陷    只会简单的词匹配
您的图灵测试失败了, 另寻他人吧
或者回炉重造之后, 再来找哥, 也许有兴趣再陪您玩玩
作者: 论坛热点    时间: 2009-12-17 14:37
原帖由 OwnWaterloo 于 2009-12-17 14:35 发表


果然AI有缺陷    只会简单的词匹配
您的图灵测试失败了, 另寻他人吧
或者回炉重造之后, 再来找哥, 也许有兴趣再陪您玩玩

你是AI的,坛子里的人都知道了
作者: OwnWaterloo    时间: 2009-12-17 14:39
标题: 回复 #67 论坛热点 的帖子
原帖由 论坛热点 于 2009-12-17 14:37 发表
你是AI的,坛子里的人都知道了


嗯, 坛子里的都知道了
作者: 论坛热点    时间: 2009-12-17 14:42
原帖由 OwnWaterloo 于 2009-12-17 14:39 发表


嗯, 坛子里的人都知道了

既然你是AI的,你就多发表些言论,表达你的思想,让大家知道AI的牛寺性
作者: liuty2006    时间: 2009-12-17 14:46
c++为什么会出现?就是解决c程序做大会出现问题。
c现在只适合在效率敏感的底层开发。对于大型应用开发,大部分实现还是c++
作者: 论坛热点    时间: 2009-12-17 14:48
原帖由 liuty2006 于 2009-12-17 14:46 发表
c++为什么会出现?就是解决c程序做大会出现问题。
c现在只适合在效率敏感的底层开发。对于大型应用开发,大部分实现还是c++

也许这就是C plus plus的名字的由来
作者: OwnWaterloo    时间: 2009-12-17 14:51
标题: 回复 #69 论坛热点 的帖子
到底谁表现得更像AI, 由您我来判断都有失公允。

不过我认为您就是, 而且还是个缺陷AI, 所以不想把您弄得烧坏掉了。

btw: 我对您那个"毕业三年"的"AI同党"比较感兴趣, 换它出来玩玩? 它好歹是"毕业三年", 不比得您这般缺陷
作者: 论坛热点    时间: 2009-12-17 14:52
原帖由 OwnWaterloo 于 2009-12-17 14:51 发表
到底谁表现得更像AI, 由您我来判断都有失公允。

不过我认为您就是, 而且还是个缺陷AI, 所以不想把您弄得烧坏掉了。

btw: 我对您那个"毕业三年"的"AI同党"比较感兴趣, 换它出来玩玩? 它好歹是"毕业三 ...

"毕业三年"?????? 什么意思?
作者: OwnWaterloo    时间: 2009-12-17 14:57
标题: 回复 #73 论坛热点 的帖子
原帖由 论坛热点 于 2009-12-17 14:52 发表
"毕业三年"?????? 什么意思?


表鸡动, 您烧坏了不要紧、反正回炉是您的最终归宿, 您的芯片可比您贵重
您们应该相互认识一下, 它比您多"三年"经验, 好好像它学学。
作者: 论坛热点    时间: 2009-12-17 15:00
原帖由 OwnWaterloo 于 2009-12-17 14:57 发表


表鸡动, 您烧坏了不要紧、反正回炉是您的最终归宿, 您的芯片可比您贵重
您们应该相互认识一下, 它比您多"三年"经验, 好好像它学学。

谁?哪个三年的?
作者: 论坛热点    时间: 2009-12-17 15:02
标题: 回复 #74 OwnWaterloo 的帖子
你这AI的说话怎么这么多弯弯,这是你们AI的特点?
作者: jeanlove    时间: 2009-12-17 15:24
呵呵,看论战的体会,我想说说我自己的观点:
-----------------------
当我不同意一个人的观点的时候,我会更多的让对方仔细的解释他的观点,看看我自己对"他"的解释是不是"他"自己想要表现的意思,更多的时候,自己对别人的猜测和别人真实想要表达的意思是不一样的,所以我不喜欢揣度和总结别人说的段落和章节,除非我足够了解他这么说的时候,隐含了某种上下文。
-----------------------
举个例子: 刚和老婆谈恋爱的时候一次出去吃饭,我俩都揣度对方的意义,然后就发生了这样的事情:
我喜欢吃鱼头,然后我想,老婆应该也喜欢吃鱼头,于是我把鱼头夹到了老婆的碗里面;老婆很高兴,把鱼尾巴夹到了我碗里面。

那顿饭我们吃的很慢,主要是那条鱼吃了好久。

后来过了很长时间,我们说起了吃饭的事情,我们才把话匣子打开,原来老婆喜欢吃鱼尾巴,所以她也觉得,我应该也喜欢吃鱼尾巴,所以把鱼尾巴夹给了我。

实事上,我痛恨鱼尾巴,老婆痛恨鱼头。但是我们都试图从自己的立场出发去揣度别人在想什么,于是结果就杯具了........
-----------------------

我常常希望,我们讨论问题的时候,还是围绕着问题本身,而不是花时间来剖析异见持有者的水平,人品,或者其他和个人有关的论题。"你肯定觉得","你是不是这样想的?","你自己的水平如何"诸如此类的话,并不见得对讨论有帮助。

谢谢大家
作者: unistd    时间: 2009-12-17 15:35

这位兄弟就喜欢搞人身攻击,讲不出道理了,又四面楚歌,就开始转移话题,搞人身攻击,说什么人家智商、水平有问题。
我这水平低的都能看出C++有问题,那是不是证明他C++问题太明显,太弱智了?
作者: diffo    时间: 2009-12-17 15:52
看这帖子6L了,就屁颠屁颠的进来看贴
没想到后面净是骂仗,艹

作者: koolcoy    时间: 2009-12-17 16:47
原帖由 diffo 于 2009-12-17 15:52 发表
看这帖子6L了,就屁颠屁颠的进来看贴
没想到后面净是骂仗,艹

这种vs类的帖子除了掐架外还能有啥?
作者: OwnWaterloo    时间: 2009-12-17 17:49
标题: 回复 #78 unistd 的帖子
人身公鸡? 我想还是你比较擅长。 管好你的臭嘴先
作者: OwnWaterloo    时间: 2009-12-17 18:18
标题: 回复 #78 unistd 的帖子
说实话, 这帖里面我最看不惯的就是你。
远到Lippman,近到jeanlove, 至少有一个C++程序员的身份。
你懂什么? 你懂C++么? 你懂大项目么?

除了跟风你还懂什么?
除了骂人你还懂什么?
除了牛头不对马嘴的回帖,你还懂什么?

你也有资格批评C++?
你这种水平低(自己承认的)、偏执(从你以前的签名)、对C++的无知(从你至今的回帖), 你有什么资格看出C++有问题

不知道你和_unistd_是啥关系。 你俩的回帖加起来也突破不了低水平。
难怪会被人戏谑:
原帖由 故哈 于 2009-12-8 10:53 发表
亿邮好像在招 让我去面试我没去 你可以去试试


去查查"希帕索斯"是谁, 然后回家吃饭吧
作者: dragonfly0427    时间: 2009-12-17 18:20
哈哈,
我还打算将来拿它写操作系统呢
作者: sep    时间: 2009-12-17 19:08
其实我也怀疑,说c++有问题的又是多少真正了解的,真正参与过c++的大型项目开发的
恩。我承认,我一辈子没用过c++做项目
作者: unistd    时间: 2009-12-17 19:37
原帖由 OwnWaterloo 于 2009-12-17 18:18 发表
说实话, 这帖里面我最看不惯的就是你。
远到Lippman,近到jeanlove, 至少有一个C++程序员的身份。
你懂什么? 你懂C++么? 你懂大项目么?

除了跟风你还懂什么?
除了骂人你还懂什么?
除了牛头不对马 ...


傻逼一个!装你妈逼啊!你做过狗屁项目?
这些某些傻逼的嘴脸,别人掌握不了的,他自以为掌握了,就比别人高人一等了。
那爷给你弄一堆狗屎代码,别人都整理不出来,你装逼整出来了,是不是也证明你比那些人高明,厉害?
C++本身就是水火的结合体,自相矛盾的个体,用C++的都是那些一瓶子不满半瓶子逛荡的弱智!就好比人妖!
C缺乏的就是一个应用领域的标准库,只要把网络、图像等各个领路的库弄出来,根本就不需要扩展C语言本身成C++
我没做过大项目,但是人家Lippman做过,我跟着Lippman走行不?我向他学习行不,难道你还想让别人跟你学啊!
还有这博客的作者云风,人家高中时就写游戏,目前在网易负责游戏引擎的开发,当年他就在论坛说过从C++转向C的原因,人家云风不如你啊
有种你去批判Lippman去啊,去批判云风去啊,你有那个胆吗!
整天还说不定在意淫自己用面向对象的特技多牛逼,哈,别人都不会用就我会用,别人都用不好,就我用得好!
作者: OwnWaterloo    时间: 2009-12-17 19:42
标题: 回复 #85 unistd 的帖子
吐不出象牙的狗嘴终于显露出来了
又等着被删帖吧。
作者: unistd    时间: 2009-12-17 19:42
我不用查“希帕索斯”我也知道情况,
希帕索斯人家是开始不被人理解,后来证明正确,C++是开始被神话,后来才发现问题,这是一码事吗?c++就和共产主义和文化大革命一样!害人不浅!
作者: OwnWaterloo    时间: 2009-12-17 19:45
标题: 回复 #85 unistd 的帖子
关于你的论点。 Lippman怎么了? 他有说要放弃C++吗? 云风怎么了? 他的话就是圣旨?
你怎么不把Linus搬出来? 那才显得你够牛逼。

你就跟一辈子疯好了。
作者: OwnWaterloo    时间: 2009-12-17 19:47
标题: 回复 #87 unistd 的帖子
可悲的不仅仅是希帕索斯之死, 还包括人们的态度 —— 心胸狭隘、企图以极端的方式抹杀与自己有不同政见者 —— 所以我说他们真可悲。
作者: liuty2006    时间: 2009-12-17 19:48
标题: 回复 #85 unistd 的帖子
呵呵,拿云峰说事了。。。
看过他的博客--他根本不懂什么叫软件工程,缺少大局观。
感觉--很能装。。。对菜鸟很有吸引力。。。呵呵

[ 本帖最后由 liuty2006 于 2009-12-17 19:51 编辑 ]
作者: OwnWaterloo    时间: 2009-12-17 19:50
标题: 回复 #90 liuty2006 的帖子
云风有本事是真, 装酷也是真。

《游戏之旅》 p141
同样的道理,临时构造一个对象,使用系统提供的new操作间接地调用了malloc是一种低效的操作;
注重效率的做法是一个placement new, 而改用alloca在堆栈中分配对象需要的空间, 然后在退出函数时直接调用对象的析构函数,而不是delete方法,让函数退出时的堆栈调整操作自动回收内存。


就是一个装酷装不成蚀把米的例子
作者: OwnWaterloo    时间: 2009-12-17 19:55
标题: 回复 #90 liuty2006 的帖子
除了找点(在他看来)和他有相同意见的牛人作靠山, 好让他可以跟风之外, 以他的水平, 你以为他还会做什么
张口闭口云风, 你以为他真关注云风的blog吗? 看过云风的书吗? 云风的见解都正确?

无非是他知道:
1. 云风和他在C++上可能有相同见解
2. 云风在他看来很牛
作者: 星空天神    时间: 2009-12-17 20:11
华为的网管软件都是c++写的
作者: to407    时间: 2009-12-17 21:28
标题: 回复 #8 prolj 的帖子
。。。。。我也想看看 有放得开的妞。。
作者: fire_cpp    时间: 2009-12-18 05:06
很多人说“C++功能多,设计的时候你没必要全用到啊”,是的,你不用到,总会有人用到——语言提供了这种特性就一定会有人用,你不用不能阻止别人不用。那么还不如语言本身就简单一点,防止滥用。

所以我说语言本身有责任,项目管理也有责任。
作者: 渣渣鸟    时间: 2009-12-18 07:24
这个帖子好。
作者: 论坛热点    时间: 2009-12-18 09:15
标题: 回复 #81 OwnWaterloo 的帖子
讨论技术不要说脏话,看你的所有回帖,感觉都是表面的东西,没有深度,急了就说脏话反击与你持相反观点的人,这样不好,像泼妇骂街,再这样版主就把你删了。你这样子只能给C++脸上泼屎。本来我想支持你,但看你的表现想想还是算了吧。

[ 本帖最后由 论坛热点 于 2009-12-18 09:16 编辑 ]
作者: OwnWaterloo    时间: 2009-12-18 09:51
标题: 回复 #97 论坛热点 的帖子
原帖由 论坛热点 于 2009-12-18 09:15 发表
看你的所有回帖,感觉都是表面的东西,没有深度

说这话的, 你不是第1个。
但你们有一个共同特点 —— 脸皮厚比城墙拐角,也不撒泡尿照照自己,还真把自己当颗葱了

原帖由 论坛热点 于 2009-12-18 09:15 发表
本来我想支持你,但看你的表现想想还是算了吧。

千万别! 有你支持? 我丢不起那人!
作者: 论坛热点    时间: 2009-12-18 10:00
原帖由 OwnWaterloo 于 2009-12-18 09:51 发表

说这话的, 你不是第1个。
但你们有一个共同特点 —— 脸皮厚比城墙拐角,也不撒泡尿照照自己,还真把自己当颗葱了


千万别! 有你支持? 我丢不起那人!

讨论问题,你持这种态度素养可不好
作者: OwnWaterloo    时间: 2009-12-18 10:03
标题: 回复 #99 论坛热点 的帖子
原帖由 论坛热点 于 2009-12-18 10:00 发表
讨论问题,你持这种态度素养可不好

拿你当猴耍还不自知, 你有啥资格来讨论问题? 你40帖回帖中哪1帖不是废话?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2