C++何去何从?

hydland 2002-06-04 05:32:49
现在虚拟机开始流行,如JVM,.NET环境,C++在这些虚拟环境中怎样存在,其地位又会如何呢?会不会有什么编译器能够产生在虚拟环境下运行的程序?然而这个有可行性吗?C++自己管理内存,而虚拟环境会帮助用户管理内存?同时下一个热点是WEB Service,用标准的C++能够建立Web Service吗?

我不知道C++面对软件业新的发展会何去何从?
...全文
62 58 打赏 收藏 转发到动态 举报
写回复
用AI写文章
58 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajoo 2002-06-12
  • 打赏
  • 举报
回复
guys, I reached the 30 posts limit in that C++ death thread.
So you can go to http://www.csdn.net/expert/topic/796/796188.xml?temp=.8755152
so we can continue.
ajoo 2002-06-12
  • 打赏
  • 举报
回复
huxw:
there are many Java "Wei Dao Shi" in Java board also. Be careful, they may eat you. You may not be so lucky as me to survive. :)
ajoo 2002-06-11
  • 打赏
  • 举报
回复
there are also many Java "Wei Dao Shi" there. be careful.
huxw 2002-06-11
  • 打赏
  • 举报
回复
:C++ is not something perfect. some of its features are bad.
:Don't make it like the tiger's butt. :)
我喜欢这样的言论。嗯,找一天,换个主语,发到java版去。 ;)
HKer_007 2002-06-11
  • 打赏
  • 举报
回复
C++做是基础 !
hglcsdn 2002-06-11
  • 打赏
  • 举报
回复
只要的冯氏CPU,C++就永远存在
ajoo 2002-06-10
  • 打赏
  • 举报
回复
He he. it's reasonable to compare C# with Java. Actually this kind of debate never cease ever since the day c# is born. I've written some comparision too.

Forgive me using those jargons. Not showing off anything. Just want to show that C++ is not something that "you can do everything in it freely". Of course, for many of them, Java does not support either.

Restate my two points:
1. C++ is not something perfect. some of its features are bad. Don't make it like the tiger's butt. :)
2. Java IS cross-platform, while c++ IS NOT. you've got to know something before you comment on it.


wenyz 2002-06-10
  • 打赏
  • 举报
回复
其实语言的比较没有太大的意义。
除非是差别很大的,不在一个层次的语言。
比如汇编和C# 。
关键是设计的思想。是结构化的设计还是面象对象的设计。
设计的好的东西,用任何语言都可以实现。
c++的OO支持很好。又全面兼容灵活的C。
当然是众多PROGRAMMER的首选。
zhengguoshan 2002-06-10
  • 打赏
  • 举报
回复
以后,C++ 会比现在更好用。
它应该是跨平台的。。。
huxw 2002-06-09
  • 打赏
  • 举报
回复
项目上到底使用那种语言,决定因素还是有不少的。不过只要不是太盲目的决定,就不会来csdn上参考大家吵了一顿以后到底吵出什么结果来的,是吧。 ;)

似乎解释语言就是万能的了,嗯 ;) vm不过是在操作系统之上提供了一个抽象层(解释器也算一种简单的vm吧)。但是,vm没法超越操作系统,vm能抽象的,也就是他支持的操作系统功能的一个交集罢了。你实用了vm,就是说,你放弃了这个操作系统特有的某些功能。当然,你可以无所谓。 ;)

实际上,理论上的争论,最后的结果无非是酱紫的:你C++有的有用的语言特性,我java全有;你C++没有的有用的语言特性,我java也有;你C++有的垃圾特性,我java都抛弃了;我java还有一个vm;你C++不久一个速度优势嘛,用C吧,C++没前途的。争论到此,似乎有一个结论了。

如果是现实中。我要开发一个游戏,需要在win32,linux,ps2, xbox, ngc五个平台上跑,难道我用java?我又何苦用C?我要开发一个office,需要在win32,linux,mac,solaris四个平台上跑,难道我用java?我又何苦用C?我还要开发一个......,需要在...., ....., ....., ......若干个平台上跑,我想用java,但是java不支持其中的.....这个平台。

理论终归是理论,java并不是万能的。C++能够坚持下来的理由很简单:“移植不是很难,相对于汇编;效率不是很低,相对于解释语言;对象概念比较清楚,相对于C”。

说道这里,还是觉得把java和C#比较合适。java有的特点我都有;java还没有的特性,我也有;你java不足的地方,我也补充了,你java垃圾的地方,我也抛弃了;你java有个vm,我也有。你java的vm支持的平台多?老实说,我觉得一个工作环境,搞那么多异质平台纯粹是有病。如果是unix为主,那就全用一种unix;如果是win32,就全用win32。总不能为了证明java的vm可以在那么多平台上跑,就一定要把那么多平台凑在一起吧。所以我C#支持win32和freebsd两种平台足够了,当然以后如果发展的好,linux下面的vm一样会冒出了,怎么说我到底也是公开了freebsd下面vm的源代码的啊。 ;))

纯粹是就java和C++的比较抬杠,不代表所有java或者C#的fans的意见,也不代表sun或者ms的意见。
Elminster 2002-06-08
  • 打赏
  • 举报
回复
To ajoo

呃,恐怕我得重复我的另一句话了:“某些特征是有用的,某些特征是重要的,但这不意味着我们非得把这些特征全部加到语言中去”。

我没有说那些特征是不重要的,所以“I needn't tell you why those features not in C++ are not important because I also think they are important”。我只是说那些特征可以通过库,通过利用现有的手段来实现。而且我也举例说明了这么做的原因:如果把特征加入语言,那么那些用不到这些特征的程序员就非得为此付出额外的代价,这种代价有时是不可接受的。

不过你最后一段话说到点子上了:“in C++, you have to be experienced and very careful to program cross-platform”。确实,只有相当有经验而且受过良好训练的程序员才能用好 C++ (不仅仅是在可移植性方面),因为 C++ 里的陷阱太多了。这是 C++ 最大的缺点,我同意。
spiker_h 2002-06-08
  • 打赏
  • 举报
回复
C和C++不是最好的语言,我想也不必成为最好的语言。ajoo打的那一大堆新技术名词我没认识几个,恕我孤陋寡闻。但比较老的OO技术和TEMPLATE技术到现在还没有完美的实现,而且实现这些技术的效率损失(尤其Java)和编译器的不确定性(主要指C++)代价使有些领域C这种面对过程语言还是主导语言。
其实象Java,Perl,Python这些解释性语言刚推出的时候各种高级语言特性也不见得就很完备,功能的增加同样是不断版本更新的结果,我看不出比起c和C++的库扩展方式有什么先进的地方。就好像Windows和Linux的比较,前者把一大堆东西都绑在一起,后者则尽量模块化。乍用整合环境是很爽,时间长了就体会出两者的各有所长,各有所短了。
大胆说一下,C和C++用起来真的很难吗?Java之类的解释语言就那么简单?是语言决定商业项目还是商业项目决定语言?
Elminster 2002-06-08
  • 打赏
  • 举报
回复
呃,不是这样的 ……

在我看来,C++ 给程序员自由,不强迫程序员以某种特定的风格编程,不把负担强加给不需要那些特征的程序员,这造就了 C++ 的灵活与强大;但同时这么做不是没有代价的,代价就是只有那些受过良好训练、富于经验的程序员才能用好 C++ ,才能避开 C++ 中到处都是的陷阱,才能用 C++ 写出可移植的程序来。

任何事物同时又是它的反面,任何优点同时又是缺点,C++ 如是,其他语言亦如是 ——— 啊,很抱歉,似乎又牵扯到你讨厌的哲学了,就此打住,^_^
ajoo 2002-06-08
  • 打赏
  • 举报
回复
Elminster:
when we criticize that C++ has some problematic features that should be banned, you said: C++ gives you freedom.
While when we say C++ does not have these features, you said: adding those cost much.

your reasoning still sounds to me like "C++ is good because c++ is good".
ajoo 2002-06-07
  • 打赏
  • 举报
回复
if we say "feature A is good because C++ has it. C++ gives you freedom"; "feature B is not in C++ because C++ has its own rules, and you may use lib to implement it"
That sound you just define C++ as good.
Whatever C++ support, good. Whatever it does not support, does not matter.
:)
ajoo 2002-06-07
  • 打赏
  • 举报
回复
随着标准 C++ 的进一步推广和更多跨平台库的出现
if your software just call class libs, then it's fine. As I said earlier, 1+2 is always cross-platform. i++ is always cross-platform.
But, software is complex. a software that only calls different libs is ideal, but not so common.

By the way, the long list cannot be implemented by a lib (that's why I did not list concurrency control in it).
they are just language features.
Elminster 2002-06-07
  • 打赏
  • 举报
回复
To ajoo

请不要把我的观点推向极端,我说“C++ 相信程序员,给予程序员自由,没有强迫”,是指较之其他大多数语言,C++ 的“自由”与“严格”平衡点更多的靠近“自由”这一端,而不是说 C++ 中没有严格的规则 ——— 无论无何,语法规则你总得遵守。

可移植性的问题,你说“migration of software written in C++ is always a big project”,其实不然,我眼前就有一个例子:一个数据的采集、处理、服务软件,因为广泛采用了标准 C++ 和一些跨平台的库,从 WIN NT 平台移植到 SUN UNIX 平台下,所要做的事情只是重新编译而已 ——— 当然了,我得承认有少量代码是有两份实现的 ——— 不能说是 a piece of cake 吧,至少离 a big project 实在远的很。而且我相信,随着标准 C++ 的进一步推广和更多跨平台库的出现,这样的情况会越来越多。

至于你后面列出的那长长的清单,我只想说一句:很多特征 C++ 是通过库而不是语法来支持的。
lhj_2000_0 2002-06-07
  • 打赏
  • 举报
回复
同样C++也会发展!那只是将来的事情!C及C++的强大是其他语言无法比拟的!
freezingfire 2002-06-07
  • 打赏
  • 举报
回复
不管怎么说,C++在商用软件开发上,绝对没有优势,以现在的形式来看,死是不会的,但是应用领域会越来越小。
ajoo 2002-06-07
  • 打赏
  • 举报
回复
SnowFalcon(恶魔吹着笛子来) :
covariance is not fully support. It only supports covariant return value, not parameters, not template.
people call the friend operator== a double dispatch. But that's only a joke.
continuation? could you give more details rather than just give me some fancy names? don't just read a few lines of ad and recite it as you do for the covariance stuff. :)


Elminster();
did not want to go extreme. But you did not tell me why those features not in C++ are not important, while those in are indespensible.

for 工作在内存紧张的平台上的程序员, I would suggest them using C instead of C++. many c++ fancy features requires overhead at runtime.
interface keyword matters only at compile time. But it does encourage the seperation of interface and class. it enforces you don't have implementation in interface. it tells you explicitly what is the difference of interface and class. they are quite different things, why mess them up together?

C++ is now having gc libs.

just want to emphasize:
in C++, you have to be experienced and very careful to program cross-platform.
But in Java or any other interpreted language, an idiot can write a cross-platform one.
加载更多回复(38)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧