水木的overcomeunic兄翻译了Bjarne的《Evolving a language in and for the real world - 1991~2006》,下载链接见帖子正文!

46 views
Skip to first unread message

刘未鹏(pongba)

unread,
Aug 15, 2007, 12:30:15 AM8/15/07
to pon...@googlegroups.com
感谢overcomeunic的辛勤劳动!那可是60页的巨paper啊:)

--
刘未鹏(pongba)|C++的罗浮宫
http://blog.csdn.net/pongba
立足现实_与时俱进:C++_1991-2006.pdf

pongba

unread,
Aug 15, 2007, 12:42:47 AM8/15/07
to TopLanguage
或者见这里,已上传到本讨论区。
http://groups.google.com/group/pongba/web/%E7%AB%8B%E8%B6%B3%E7%8E%B0%E5%AE%9E_%E4%B8%8E%E6%97%B6%E4%BF%B1%E8%BF%9B%EF%BC%9AC___1991-2006.pdf

> 立足现实_与时俱进:C++_1991-2006.pdf
> 842KDownload

星染流云

unread,
Aug 15, 2007, 7:43:57 AM8/15/07
to TopLanguage
拜谢overcomeunic老大!尤其是标题,翻得太强了,这才是本地化啊!

> 立足现实_与时俱进:C++_1991-2006.pdf
> 842K下载

刘未鹏(pongba)

unread,
Aug 15, 2007, 7:47:19 AM8/15/07
to pon...@googlegroups.com
haohaolee和cofeedog对标题亦有贡献:-)

星染流云

unread,
Aug 15, 2007, 8:47:14 AM8/15/07
to TopLanguage
那就一并谢过了:)正在拜读,翻得不错。

On 8月15日, 下午7时47分, "刘未鹏(pongba)" <pon...@gmail.com> wrote:
> haohaolee和cofeedog对标题亦有贡献:-)
>

> On 8/15/07, 星染流云 <spiritualw...@sina.com> wrote:
>
>
>
> > 拜谢overcomeunic老大!尤其是标题,翻得太强了,这才是本地化啊!
>
> > On 8月15日, 下午12时30分, "刘未鹏(pongba)" <pon...@gmail.com> wrote:
> > > 感谢overcomeunic的辛勤劳动!那可是60页的巨paper啊:)
>
> > > --
> > > 刘未鹏(pongba)|C++的罗浮宫http://blog.csdn.net/pongba
>
> > > 立足现实_与时俱进:C++_1991-2006.pdf
> > > 842K下载
>

> --
> 刘未鹏(pongba)|C++的罗浮宫http://blog.csdn.net/pongba

星染流云

unread,
Aug 15, 2007, 8:49:50 AM8/15/07
to TopLanguage
那就一并谢过了:)正在拜读,翻得不错。

On 8月15日, 下午7时47分, "刘未鹏(pongba)" <pon...@gmail.com> wrote:

> haohaolee和cofeedog对标题亦有贡献:-)


>
> On 8/15/07, 星染流云 <spiritualw...@sina.com> wrote:
>
>
>
> > 拜谢overcomeunic老大!尤其是标题,翻得太强了,这才是本地化啊!
>
> > On 8月15日, 下午12时30分, "刘未鹏(pongba)" <pon...@gmail.com> wrote:
> > > 感谢overcomeunic的辛勤劳动!那可是60页的巨paper啊:)
>
> > > --
> > > 刘未鹏(pongba)|C++的罗浮宫http://blog.csdn.net/pongba
>
> > > 立足现实_与时俱进:C++_1991-2006.pdf
> > > 842K下载
>

> --
> 刘未鹏(pongba)|C++的罗浮宫http://blog.csdn.net/pongba

八大

unread,
Aug 16, 2007, 8:13:04 AM8/16/07
to TopLanguage
文中写的"在1992年,TI提供他们的非常漂亮的库用于考虑,在一个小时内,有5个主要公司的代表清楚地表达了他们的观点:如果这个库被认真考虑的
话,那么他们将推荐他们自己公司的基础库。这不是委员会所能接受的。对一致性要求不是很高的委员会也许会通过从商用库中选择一个来达到目的,但对于C+
+委员会来说,这是不可能的。"
真是令人无奈的事例啊。

redsea

unread,
Aug 16, 2007, 9:17:55 PM8/16/07
to TopLanguage
似乎不少东西在 C++ 演进那本书上说了。
看了这个 pdf, 加强了感受, C++ 的历史包袱太重了。

虽然我之前用 C++ 还是有些多年,积累还是有一些,不过由于 C++ 程序员培养成本太高,现在公司还是寻找一个合适的语言替代。现在已经在追踪
D 语言,估计到明年,D 语言的成熟度就会 OK 了。 目前用的语言是 C, C++, python 三种。

刘未鹏(pongba)

unread,
Aug 17, 2007, 12:27:36 AM8/17/07
to pon...@googlegroups.com
readsea的公司情况很典型,C++程序员的确更难合格,BJ在最后说"在C++里面有一个更小更简洁的语言呼之欲出",但向后兼容性又不允许C++这么做。可惜啊可惜..
D到明年就能够投入商业应用了?readsea兄因何下此判断?:)

redsea

unread,
Aug 17, 2007, 6:52:32 AM8/17/07
to TopLanguage
呵呵, 我没有说清楚, 这只是我判断明年 D 语言对我们公司来说, 成熟度应该可以了。

对我而言,最喜欢的是:

1. C++ 的大多数陷阱都不存在了,这是最重要的一点
毕竟作者是从第一代 C++ 编译器就可以写 C++ 编译器的, 而 Alxender (Loki 库的作者), Imperfect C+
+ 的作者等一大帮出谋划策,甚至写某些库代码的 C++ 牛人,对 C++ 的优缺点认识都很深刻。

gc 的引入,不但内存释放省心了,而且多线程,成员函数(递归)调用情况下的复杂释放问题也没有了。

对象取消了值访问方式,只留下引用访问方式,这也避免了新手容易将栈对象和堆对象混用的危险问题,同时 container 是也不存在要么是
value copy, 要么是 pointer copy 但不释放对象的问题了。 (但同时一个对象内部包含多个对象的时候, 就需要多个new
操作了,如果某个性能要求很高的程序,对象申请释放频繁,就更需要有特定的 allocator 了)。

scope(exit) 语句,可以写出清晰的资源释放代码,不必要处处动用罗嗦的 RAII, 这下哪个程序员都没有理由不写出资源管理正确的
代码了。 scope(failure)语句, 有助于写出原子性的函数,要么成功,要么一点影响都没有。

2.很多对工程有利的 feature
module
编译工具自动分析 import, Makefile 里面只需要写 主文件就可以了,其他都不必管。
不必在 #include 之前加上判断有没有 include 做优化,不必在头文件里面 define 已经 include
模块循环依赖,class 循环引用之类的问题,都不是问题,只要确定没有错,照写就可以了,编译器会照顾好, 这样就需要按照逻辑

关系组织文件,不必照顾编译器另外做物理分割了, 流畅了很多
内建 unittest, code coverage 分析
编译速度非常快,和 C 差不多。 不必再象以前一样,看到ACE_OS 不错,但是编译速度原因不敢用。

这些对具体工程都是非常好的事情。

3. 语法上的其他 feature
很强大,例如 方便的 traits, static if, 等东西,对组织程序结构有很大的帮助,可以写出很容易理解的模板了。
例如,我可以定义一个结构,里面是一串 delegate,然后用 template 处理这个 结构,生成相关的marshal,
unmarshal 代码,写网络 rpc 用不着接口描述语言了。

目前还不成熟的地方:
1. 语法语义还没有稳定, 还在演变中

2. dmd, gdc 都还有一些 bug, 看起来数目在收敛中,但是还要多观察一段时间才行。
dmd 的bug, 主要出现在一些不常用的特性组合中,一般的代码还好。
gdc 我还没有去看,不过据说更严谨,只要说已经完成了的,bug 较少。

3. 两个标准库之争
我觉得恐怕作者的 phobos 会失败。

4. 两个标准库本身也还不够成熟,还有些bug, 有些地方性能不佳。
tango 的一些问题不是很严重,例如socket 代码,用了不能重入(reentrant) 的 clib 函数; 对于不合法的
UTF8 串没有报告错误

;sort 碰到特殊输入序列性能低下之类的,还好了。
反而 D 作者的 phobos 最近碰到严重问题, 使用 void [ ] 数组,在数组扩大的时候, 会出现内存丢失,是 gc 里面的问
题。

5. 其他库,例如数据库操作的库,也还不够成熟齐备。


对于我们公司来说,用 C++ 的项目规模并不是很大,只是一些和网络有关,以及一些要求效率的地方用到用 C++, 写成 python
module, 用 python 调用.

如果转换到D 的话,不用 D 的新feature, 库方面,只要 core, net, thread, sync, signal 几个方面的
库。这样,根据目前的 bug 列表中涉及的数目和严重性,编译器和 tango 库中我们用到的部分, 到了明年质量应该就 OK 了, 数据库接口
库,了不起自己再写好了,反正D 语言写程序似乎流畅一些,不会经常感到有卡住,要回头处理别的问题 --- 一个什么 type traits 啊,
或者需要分割一个 header 文件啊,之类的破事情。

On 8月17日, 下午12时27分, "刘未鹏(pongba)" <pon...@gmail.com> wrote:
> readsea的公司情况很典型,C++程序员的确更难合格,BJ在最后说"在C++里面有一个更小更简洁的语言呼之欲出",但向后兼容性又

不允许C++这么做-。可惜啊可惜..
> D到明年就能够投入商业应用了?readsea兄因何下此判断?:)
>
>

redsea

unread,
Aug 17, 2007, 7:37:36 AM8/17/07
to TopLanguage
目前来说, 最不喜欢, 而且觉得以后可能是一个陷阱的是:

数组的传参很怪,

1. 用形参 可以修改 实参各个数组项的内容

2. 如果缩短长度, 不会影响到实参的长度

3. 增长长度, 不会影响实参的长度,
如果 空间够原地扩展的化, 增长之后的数组和实参指向同样的存储区

如果 空间不够原地扩展, 那么会另行申请一个空间, 从此修改形参数组项不再影响实参.

这是 copy on can not expand.

这应该是为性能的优化, 估计有以下考虑

1. 传值的开销大
2. 如果 copy on write, 那么每次改一个值,都 copy 是受不了
3. 初次 write 的时候 copy, 以后不再 copy 似乎合理一些, 但是需要额外的判断。

估计由于类似考虑,就做成了目前这个样子。

D 的规范里面没有具体写, 这是测试到的行为,如果以后都是这样,会是一个出错点。

刘未鹏(pongba)

unread,
Aug 17, 2007, 8:36:24 AM8/17/07
to pon...@googlegroups.com
多谢redsea兄介绍:-) 很有启发!:)

On 8/17/07, redsea <red...@gmail.com> wrote:

pi1ot

unread,
Oct 8, 2007, 12:29:50 AM10/8/07
to TopLanguage
"Games- Doom3, StarCraft, Halo, ..."
老头还挺关注娱乐业, :)

On 8月15日, 下午12时30分, "刘未鹏(pongba)" <pon...@gmail.com> wrote:

> 感谢overcomeunic的辛勤劳动!那可是60页的巨paper啊:)
>
> --

Atry

unread,
Oct 8, 2007, 1:43:28 AM10/8/07
to pon...@googlegroups.com
在此书中看到一句话:

不管怎么称呼,C++通常被指为"面向对象编程的语言"。但只有当歪曲"面向对象"的定义时这才是真的。

hahahaha


在07-10-8,pi1ot <pilo...@gmail.com > 写道:

Atry

unread,
Oct 8, 2007, 1:59:36 AM10/8/07
to pon...@googlegroups.com
又看到一句令我流汗的话:

特别的,Sun的Java的实现者,HotSpot,本身就是一个C++程序员。

原来 HotSpot 是一个人?

在07-10-8,Atry <pop....@gmail.com > 写道:

pi1ot

unread,
Oct 8, 2007, 4:33:43 AM10/8/07
to TopLanguage
翻译问题,说实话这篇文章有些地方译得不是太细心。
不过毕竟工作量不小,也没有影响阅读,还是劳苦功高。

On Oct 8, 1:59 pm, Atry <pop.a...@gmail.com> wrote:
> 又看到一句令我流汗的话:
>
> 特别的,Sun的Java的实现者,HotSpot,本身就是一个C++程序员。
>
> 原来 HotSpot 是一个人?
>

> 在07-10-8,Atry <pop.a...@gmail.com> 写道:


>
>
>
>
>
> > 在此书中看到一句话:
>
> > 不管怎么称呼,C++通常被指为"面向对象编程的语言"。但只有当歪曲"面向对象"的定义时这才是真的。
>
> > hahahaha
>

> > 在07-10-8,pi1ot <pilot...@gmail.com > 写道:


>
> > > "Games- Doom3, StarCraft, Halo, ..."
> > > 老头还挺关注娱乐业, :)
>
> > > On 8月15日, 下午12时30分, "刘未鹏(pongba)" < pon...@gmail.com> wrote:
> > > > 感谢overcomeunic的辛勤劳动!那可是60页的巨paper啊:)
>
> > > > --
> > > > 刘未鹏(pongba)|C++的罗浮宫http://blog.csdn.net/pongba
>
> > > > 立足现实_与时俱进:C++_1991-2006.pdf

> > > > 842K下载- Hide quoted text -
>
> - Show quoted text -

Garfield

unread,
Oct 8, 2007, 12:11:50 PM10/8/07
to TopLanguage
是啊,合格的C程序员显然更好找一些,甚至可以从头培养,
Reply all
Reply to author
Forward
0 new messages