iostream 设计得不是很好, 似乎部分大师级人物也有此认识, 但是我们能够摆脱
得掉吗? 不少 C++ 的库已经依赖于它了; 还有很多人让asio 的作者在 asio 中对
iostream 进行支持.
不过这个不是更重要的, 更重要的是, 语言应该更积极地进化. 语言应该帮助用户
减轻脑力负担, 而不是号称可减轻负担, 但从左边减轻3点负担, 又从右边引入4点
负担.
我更喜欢分版本的语言, 例如 Java, C#, Python等, 好处是, 你的程序尚不支持
新版本的时候, 可以继续沿用旧版本, 而新版本可以做出更多的变化, 可以引入一
些不兼容的变化; 大家有时间判断要不要升级, 要升级要做什么准备. 特别是
Python, 很多计划早早就提出来充分讨论, 同时多个版本并行支持很久.
C++ 呢? BJ 说不喜欢分裂, 如此同时, 演进速度如此之慢, 让人太过失望.
这个世界上, 不变而且不需要变的东西, 是已经死亡的东西. 虽然说 C++ 语言能
力强, 用库可以实现很多东西, 但是, 用库代替语言实现本该语言实现的许多功
能, 那里面带来多少垃圾东西? 轻则是不方便, 重则一团浆糊, 出了错都不知道死
在哪里.
虽然偶尔动动脑力体操是很好的, 但是用C++ 工作, 经年累月都要小心翼翼, 每次
写一个类的时候, 要防止copy, 防止 assignment, 构造的时候异常怎么办等等等
等, 还要和vc, gcc(还好我不用 icc) 不同的特性做斗争, 看古怪到摸不着头脑的
出错信息, 真是受够了.
C++ 是伟大的语言, 做了很多探索, 得到了很多成就, 别的语言从它那里借鉴了许
多, 但是它自己就像一个包袱其重又什么都不舍得放弃的大笨熊, 走都走不动.
我现在喜欢看 C++ 的进展, 看看它带来的新思想, 但是我已经不愿意使用它了.
Huafeng Mo 写道:
> 问题都有两面性,语言内置的实现,更加简洁和直接。但是语言每增加一种设
> 施,便可能增加未来扩展的障碍。通过库实现语言扩展,就目前而言,都显得很
> 丑陋,但对于语言未来的扩展也少很多障碍。
> 这完全取决于语言设计的理念。
> 完全通过内置机制实现语言特性的语言,通常是面向当前的。众多功能性的特性
> 已经将语言圈定在一个狭窄的范围内。
> 通过建立基础特性,然后利用基础特性组合获得新特性的语言,通常是面向未来
> 的。因为没有很多特性作为发展的障碍。
> 以C++的lambda为例,C++没有lambda,但牛人们利用gp和tmp模拟了lambda,姑
> 且应付。但发现不好用,随后在语言扩展的时候再加入。如果一开始就加入,那
> 么万一设计有问题,那么永远也没翻身机会了。而通过模拟运用之后,可能的问
简洁是对的,但是不能过渡,这就是为什么我们有了 for 还需要 do/while 的原因。
oldrev <oldrev(at)gmail(dot)com>
Regards
>>> 引用的文字:
On Tuesday 25 September 2007 09:20:53 Huafeng Mo wrote:
> 问题都有两面性,语言内置的实现,更加简洁和直接。但是语言每增加一种设施,便可能增加未来扩展的障碍。通过库实现语言扩展,就目前而言,都显得很丑陋,但对于
>语言未来的扩展也少很多障碍。 这完全取决于语言设计的理念。
那, 宁愿什么功能都等个10年8年, 什么都看明白了, 才推出好呢, 还是采用多语
言版本, 象 Java 那样, JDK 1.2, 1.3, 1.4, 1.5, 先推一个尽量好的, 运气不
好, 发现有问题, 下一版本再改改呢 ? 我就宁愿后者.
现在内存大大便宜了, 说老实话, 如果 D 不出来, 可能我就要转到 C + Java 上
了. C 之所以抛不开, 因为我还要写 linux kernel module.
当然, 要让用户在互联网上下载的程序, 有些特殊的考虑, 这里有另外一些考虑
(如果程序很小, 我宁愿用 delphi 7 写, 如果程序不是太小, 那么方法多了,
Delphi, C++/Python, C++/lua 等都方法都可以.)
对于成熟特性,这没什么或说的。可对于特性呢?
Java依仗身后的财主可以随便改,可苦了企业了,当然还有股东。:-)
---~----~------~----~------~--~---
这个么,呵呵,我没词儿了,我投降,我投降。;-)