C++ 会议第一天

标签: 语言与设计 | 发表时间:2009-12-03 06:31 | 作者:云风 arbeitandy
出处:http://blog.codingnow.com/

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

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

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

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

我们现在说大脑就像计算机,是本末倒置了。人们总是从自然界的角度来思考,然后解决软件里的问题。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 度,变成一个有层次的结构。从上到下一层层剥离。同一层次上就不要横向切了。

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


以上是我凌乱的一些听课笔记。很多有趣的东西没来的及记下。可能也有很多我的误解在里面。同学们姑且看之吧。

相关 [会议 一天] 推荐:

C++ 会议第一天

- arbeitandy - 云风的 BLOG
Lippman 大牛的第一场,关于大型可伸缩性的软件开发的, Chen Shuo 同学翻译的很不错 :D. 果然是牛人啊,上来就讲形而上的东西. 我听的有趣,就做了点笔记,但是记的不多. 我们从自然界去寻找灵感,然后在计算机领域去搞出来. 以前的计算机是没有内存的,后来冯大侠说,计算机就像大脑,大脑是有记忆的,所以有了内存.

奇点会议2011

- jyf1987 - Solidot

Bloodhound:会议血犬

- Zhang Qiwei - 36氪
许多朋友们肯定经常都会需要参加许多会议,而会议是一个非常好的获得生意伙伴和合作网络的地方,传统的方式就是交换名片,可是这非常的不方便. 正是由于这一点不方便,一款名叫Bloodhound的应用就找准了需求,打算撬开这个市场. 其围绕的几个核心点非常明确:由会议组织者将会议的信息输入到该应用内(或者该应用自动抓取已经公开在网上的该会议信息),参会人员如果发现其中有自己想要认识的人可以直接通过该应用在LinkedIn或者Facebook上关注他,或者甚至可以在会议开始前就给他们附上包含你的信息的邮件.

Velocity 2011会议分享

- Adam - 百度泛用户体验
感谢公司和部门的支持,6月12号我和其它同事一起前往美国参加了Velocity 2011的会议,在此期间学习到了很多性能优化方面的经验和方法,通过本文整理出来分享给大家. 我们乘坐12号下午4点的国航飞机出发,经过11小时到达了旧金山国际机场,由于时差的关系,到了旧金山后的当地时间是12号中午12点,感觉像穿越了.

会议总是隆重的

- Jerome - FeedzShare
来自: 体坛灌水井 - FeedzShare  . 发布时间:2011年09月04日,  已有 2 人推荐. 网易娱乐:周雨薇的美貌,让不少男嘉宾都将她作为自己的心动女生. 乐嘉在介绍她时,这样评价道:“她曾经是河南省女足的运动员,因为太漂亮了被队内排斥,所以最终放弃了足球. ”[查看原文]好友向您推荐这条跟贴.

如何主持会议

- -
[cp]#工作法则101# 【如何开会】现场篇 1.开会前交代清楚会议背景&目的&上次会议的recap&时间. 交代背景:是拉齐认知,确保所有人在同一理解位置上. Recap 上次会议的结论:帮助大家回忆一下,之前定下来的结论和框架不用反复在讨论了. 交代目的:哪些是需要决策,哪些是告知,哪些是讨论.

什么是好的会议

- - Dawei XU
现在我们很多人每天的工作就是开大量的会议,在 Good Meetings 这篇文章里作者聊了聊他觉得如何开好会议的一些想法. 下面把其中的一些观点整理一下,放在下面. 什么是好的会议和不好的会议. 没有明确的目标和方向 有明确的目标和方向. 感觉很混乱 有清晰的日程. 参会人员不对 合适的参会人员(人没有太多导致交流不畅,也没有太少导致需要的人不在).

70%的会议无效!!如何提高会议效率 ?

- - 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
   研究认为,70%的会议是无效会议,会议中70%的时间是无效时间.   会议已经成为企业管理沟通的一个重要的方式,高层领导大多数的时间都花费在会议上,会议效率的高低直接影响企业管理的效果,但会议的效果总是不尽如人意. 友泰咨询UTC研究认为,70%的会议是无效会议,会议中70%的时间是无效时间.

恶搞版: 奥巴马会议室[16p]

- 后太史生(Wade) - 煎蛋
貌似很多人在看了奥巴马他们坐在会议室 打COD 观看现场作战的那张图之后产生了一些不同的想法,于是各种各样的恶搞版就这样犹如雨后的春笋一般喷涌而出~. 国会改叫奥巴马兄弟姐妹会算了……. 笨贼: 没穿腰带逃跑,被裤子绊倒[v]. [英语段子] 小时候,爸爸对我说:“知识就是力量……”. © 煎蛋 / 投稿 / 图片托管于又拍网 / @煎蛋超载鸡.

百度营销会议被砸场子

- Jacob - 月光博客
  昨天在微博看到一个优酷的视频,讲的是百度在广州香格里拉酒店举办的“搜赢天下,智引未来”营销会议,被来宾砸了场子,部分桌椅被掀,某中小企业上台拉出横幅“百度骗钱、骗子”,使得会议完全进行不下去,会场里全是拍照、拍视频的人…….   我转发这个视频后,今天发现这个视频被删除了,百度屏蔽负面信息的速度还是很迅速的.