易码技术论坛

 找回密码
 加入易码
搜索
查看: 516572|回复: 12

[转载]C++0x,崭新的C++,还是另一个JAVA?

[复制链接]
发表于 2007-2-14 22:51:25 | 显示全部楼层
语言越来越复杂&具体了:(
发表于 2007-2-14 23:48:10 | 显示全部楼层
对新手来说是好事~
对老手来说可以无视~
对Sun Microsystem来说是危机~

蛮赞同这句话:“不要为了新手而将C++降格,适合新手的语言已经有很多了!”。
发表于 2007-2-15 03:16:10 | 显示全部楼层
前不久看到的一句话:
所见即所得和强大的类库带来了开发的高效性,给开发者以快感,但背后那些玄妙的机理,却永远玩弄于开发商的手掌之中。
 楼主| 发表于 2007-2-15 13:56:16 | 显示全部楼层
JAVA是开源滴,其标准也是JCP的各个成员共同制定的...
那些类库的代码甚至JDK的代码都是可见的.
只要你愿意,就可以自己写个JDK,呵呵...

所以楼上的担忧对JAVA不存在^O^
发表于 2007-2-15 14:27:23 | 显示全部楼层
JAVA解析器是开源的么?
诸如内存分配等等这些核心的东西应该是JAVA解析器的工作吧~

C++的类库是为了给新手提供方便,只是预先编译好的库。
需要源码的话,打开gcc/src,所有类库的源码都在里面,比如目前已有的stl等等都是开源的。就算是析码如命的M$,他所提供的MFC,也是完全开源的。这一点,恐怕很多不熟悉C++的人都会有误解。

不过,一般来说,如果不是为了快速开发软件,比较熟悉C++的人是不会去用这些库的。
毕竟它们的效率比较低(当然,相对于解析式语言来说,速度还是要高出数倍,但是,用惯C++的人都有追求高速的癖好……)
发表于 2007-2-15 14:34:13 | 显示全部楼层
突然联想到Windows和Linux...

用惯Windows的人经常埋怨软件功能不完善。
用惯Linux的人经常思考软件功能如何完善。
发表于 2007-2-15 16:56:56 | 显示全部楼层
突然觉得,空想不如实干
发表于 2007-2-15 17:42:25 | 显示全部楼层
实干前要用空想酝酿酝酿~~~
能提高效率!
发表于 2007-2-15 18:16:56 | 显示全部楼层
能提高效率的思考就不是空想了,而是实想
发表于 2007-2-16 09:46:28 | 显示全部楼层
游戏软件还是C++的天下,还有相当多的多大型软件是用C++在开发。就算C也是一样,C仍然有着很广泛应用……

感觉文章里面这话说得相当危言耸听:
“C++已经不再是编程语言中的明星了,它被挤下了神坛,慢慢沦为边缘编程语言。这中间的主要原因并不是C++的语法落伍了,而是使用C++开发软件效率低下并且容易出错”

尤其是最后一句,很寒。我觉得C++的瓶颈是人才-v-。
发表于 2007-2-16 11:15:36 | 显示全部楼层
在现在程序还得手工或者半手工编写的情况下:
无论什么语言,完成相同的功能,能把需要的程序行数减少一个数量级,就是好语言。
从这个角度看,还没什么语言做到这点。期待新的有质的飞跃的语言。
发表于 2007-3-1 22:09:20 | 显示全部楼层
能玩转C就不错了。。OO的话。。就免了。。
 楼主| 发表于 2007-2-14 22:34:47 | 显示全部楼层 |阅读模式
     最近,从全球最活跃的C++社区boost传来消息,新的C++标准:C++0x,最早将在2007年10月发布。很早就有人猜测,C++0x中的x到底是8还是9,不过现在看来很可能是7,但是也不尽然,因为上一个C++标准本来计划是1997年发布,但是因为STL的引入而推迟到1998年。这次又遇到了相同的情况,大家都不怀疑TR1和TR2(Technical Report)将成为新标准的一部分,但是随着越来越多的boost库被移到TR2中,TR2的进一个完善很可能拖新标准的后腿。不过,C++0x是C++的一次重大升级,恐怕编译器厂商最快也只能在2009年推出符合新标准的编译器。

   新的C++标准将在几个方面对C++标准进行扩充:


1. 增强STL库,标准库TR1和TR2中的新组建,比如“正则表达式”;
2. 并发内存模型和并发库(面向多核处理器);
3. 垃圾收集器;
4. 可简化的泛型程序的开发;

   从上一个标准C++98发布到现在,将近有10年的时间了,在这十年的时间里编程语言发生了翻天覆地的变化,首先是JAVA异军突起,然后是微软借助.NET平台的优势推出了C#,C++已经不再是编程语言中的明星了,它被挤下了神坛,慢慢沦为边缘编程语言。这中间的主要原因并不是C++的语法落伍了,而是使用C++开发软件效率低下并且容易出错。效率低下的原因是因为C++缺少库的支持,C++只提供了编程语言的基本功能,缺少强有力的库支持,比如字符串处理就一直是C++的诟病。容易出错的原因是C++从C继承了动态内存分配和指针,这一点被认为是软件发生错误的根源,虽然C++引入STL来解决这个问题,比如用vector代替内置数组可以防止内存泄漏,用迭代器代替直接下标操作可以防止地址越界。但是STL毕竟太简单了,比如字符串处理就只有一个简单的string,比起Perl差远了。C++唯一的优势就是速度,但是随着处理器和内存的快速发展也慢慢被遗忘了,所以就沦落到了现在的地步。

   C++要想摆脱这种局面,就必须解决这两个问题,而在新标准中我们已经看到了答案。TR1和TR2已经成为新的标准库的一部分,它们不仅提供了象“正则表达式”和“哈希表”这样程序员盼望已久的功能,还有针对多核处理器的并发内存模型和并发库,对网络也有socket库等等。针对内存出错问题,新标准通过强化STL代替内存访问,使用垃圾收集器防止内存泄漏。在C++社区上关于新标准讨论最多的就是到底应不应该修改C++语言,争论的核心之一就是垃圾收集器。老鸟们总是认为“不要为了新手而将C++降格,适合新手的语言已经有很多了!”,很多C++程序员认为新标准应该将精力集中于扩充标准库,而不是解决内存泄漏问题,因为那是程序员自己的事。在本人看来这种思想将会害死C++,因为现实中总是新手比老鸟多,软件公司的老板招一个程序员是希望他(她,它)能够立即开始编写没有错误的代码,而不是培养他们知道他们成为专家后再开始干活,所以,如果C++不能成为一种“菜鸟友好”的语言,那么C++的堕落将不可避免。设想某个程序员分配了一块内存而忘记释放它,但是垃圾收集器捕获了这个异常并默默地替他释放了这块内存,从而使内存泄漏这种悲惨的事情得以避免,而程序运行起来状态良好,那还有什么理由不在C++中添加垃圾收集功能呢?

   C++0x能够重振C++的雄风吗?有了垃圾收集器的C++,并且所有内存和指针操作都被“友好地”建议用STL代替,那还是C++吗?还是另一个JAVA?答案当然是“这仍旧是C++,请放心使用”,不过C++0x之后还会有什么新的内容,会不会有一套GUI库?如果是那样的话就真的成JAVA了。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-26 12:09 , Processed in 0.011420 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表