+ -
当前位置:首页 → 问答吧 → Java比C++设计好在哪里了?为啥比C++流行了?

Java比C++设计好在哪里了?为啥比C++流行了?

时间:2010-07-05

来源:互联网

本帖最后由 prolj 于 2010-07-05 16:29 编辑

啊,我现在就STL不熟,C++的Parse也都明白了。
现在看了看STL,明白着这玩意儿,给那些基本功不扎实的人用,呵呵,C只是一把**,会打中自己的脚,而C++就是一个迫击炮,会轰掉自己一条腿。很难说这些不是很扎实的人能否掌握STL。对人的要求高多了,也就说明了现在的国内很多公司发展不起来,国内会C++的人丫根本花不起那个价钱!
Java为啥就这么复合生产力的成本啊?麻烦各位大师从语言和库设计的角度上讲讲,我不怕你上高深的理论和复杂的数学模型,就怕你灌水。

作者: prolj   发布时间: 2010-07-05

你得看用Java做的都是哪些东西,Java能做的用VB也能做。

作者: 没本   发布时间: 2010-07-05

因为Java入门简单

作者: hellioncu   发布时间: 2010-07-05

没看明白, 莫非终于认为c++不是一个shit了?

作者: zylthinking   发布时间: 2010-07-05

因为老板根本不需要那么有技术的东西就能赚到钱
忽悠一下就行,塞钱送礼,喝酒吃饭,泡妞洗澡,哪个干C++事了??

如果说软件必须要有技术含量老板才能卖出去,情况就不一样了

作者: egmkang   发布时间: 2010-07-05

另外还有一个原因,就是C++后坐力是在是太强了,制造出一大堆的复杂概念.我学了也算议两年了,也就能掌握一点皮毛

作者: egmkang   发布时间: 2010-07-05

回复 prolj


            跨平台,至少在理论上是。

作者: zhujiang73   发布时间: 2010-07-05



QUOTE:
啊,我现在就STL不熟,C++的Parse也都明白了。
现在看了看STL,明白着这玩意儿,给那些基本功不扎实的人用 ...
prolj 发表于 2010-07-05 10:04





我认为 Java与c++应该不具备可比性。 java是面向业务的语言。主要是工作在应用层。 做行业软件使用的。 主要是bs模式的比较多。
c++基本还是可以定义为面向系统的语言。主要工作在传输层/会话层/表示层/应用层。 大部分都是客户端软件或者cs模式的比较多。

我觉得c++并不难, 关键在于看应用者怎么看待它。 只要应用者根据自己的需求去学习c++, 就基本不会有困惑。
不应该抱着他的语法死磕。 因为很多c++的高级应用。 是解决特定问题才出现的。 不是什么地方都用高级的东西的。
总之一句话, c++支持面向对象, 支持模板, 支持多态, 支持RTTI等等....,但不代表你的项目就必须用这些。
写程序本质是解决问题。 见过很多c++初学者经常用高射炮打蚊子。

还有,对LZ说一句, STL并不简单。 那东西不是给基本功不扎实的人用的。 只是为了代码重用。 stl 用的好的人, 效率不必c自己写的容器慢。
用的不好的。 效率很差。

作者: xhl   发布时间: 2010-07-05

我就是觉得,基本功不扎实的人,写出来的C++/STL代码比Java还要慢,所以,会轰掉他们一条腿。

作者: prolj   发布时间: 2010-07-05

要理解并能恰当的运用STL,不太容易。

作者: donglongchao   发布时间: 2010-07-05

为什么怕灌水?

作者: rain_fish   发布时间: 2010-07-05

p阿姨這麼牛叉的人自己對比研究一下不就 水落石出了么

他人的看法也需要你的論證

作者: huxk   发布时间: 2010-07-05



QUOTE:
啊,我现在就STL不熟,C++的Parse也都明白了。
现在看了看STL,明白着这玩意儿,给那些基本功不扎实的人用 ...
prolj 发表于 2010-07-05 10:04




    开发周期短、性能过得去、跨平台修改成本低。

具体写一些浅见
1、性能,举例:同样一个new的效率,c++得自己实现内存池管理才能和jvm比,一般人实现的效果肯定比不过写jvm那帮人。
2、开发成本,举例:语法不太灵活但够用易懂是极大的优点,讨论实现方式的时间减少了,代码可读性提高了,大型软件工程沟通才是主要成本。
3、跨平台,不举例了

作者: cx6445   发布时间: 2010-07-05

JAVA号称一次编译,到处执行

作者: shmild   发布时间: 2010-07-05

不同意说STL是给基本功不扎实的人用的
C的项目,也会写一堆通用的函数/宏作为工具用

STL的伟大不在于它的算法,任何正常的三流程序员写个红黑树或者快排都不是问题
STL的伟大在于它的泛型,在于通用
STL的伟大在于他还是大师的源码,任何有兴趣的三流程序员,通过学习STL源码,有了成为一流程序员的可能

作者: shmild   发布时间: 2010-07-05



QUOTE:
你得看用Java做的都是哪些东西,Java能做的用VB也能做。
没本 发表于 2010-07-05 10:09




    用vb写个能用的类似于hadoop和cassandra吧。

作者: cx6445   发布时间: 2010-07-05

回复 cx6445


    用.NET和MONO以及C#能的话,VB.NET当然也能。只是Apache的那些人显然没打算用微软那套框架而已。

作者: 没本   发布时间: 2010-07-05

操, 伟大之处。。。。。。。。。。。。。。。

作者: zylthinking   发布时间: 2010-07-05



QUOTE:
回复  cx6445


    用.NET和MONO以及C#能的话,VB.NET当然也能。只是Apache的那些人显然没打算用微软那 ...
没本 发表于 2010-07-05 14:10




    我知道搭一个能跑肯定没问题,关键要有公司愿意用,用java、c#、c、c++都行,就是vb.net不行。

作者: cx6445   发布时间: 2010-07-05

回复 cx6445


    那是,很多人从VB转Java,不就觉得那东西档次要高一点么。从这点上讲微软挺恨Java的。不是考虑面子的话,两种语言其实都差不多。

作者: 没本   发布时间: 2010-07-05



QUOTE:
回复  cx6445


    那是,很多人从VB转Java,不就觉得那东西档次要高一点么。从这点上讲微软挺恨Java的 ...
没本 发表于 2010-07-05 14:38




    档次是看这个语言有什么产品了,如果用vb.net能开发一个牛B的技术领域的产品,那档次就不一样了。

作者: cx6445   发布时间: 2010-07-05

在语言层面上,Java比C++优雅

作者: proghua   发布时间: 2010-07-05

回复 cx6445


    BASIC语言的名称就决定了没几个大牛会冒毁一世英名的风险写牛B程序来为微软做嫁衣裳。貌似这个句子长了点。

作者: 没本   发布时间: 2010-07-05



QUOTE:
我就是觉得,基本功不扎实的人,写出来的C++/STL代码比Java还要慢,所以,会轰掉他们一条腿。
prolj 发表于 2010-07-05 10:50




但是同等层次的熟手,写出来的java代码比C++/STL快的可能性很低很低。

作者: mirnshi   发布时间: 2010-07-05

不做java很久了。

作者: ecjtubaowp   发布时间: 2010-07-05

有几个TMD近视!

作者: prolj   发布时间: 2010-07-05

一个原因,Java的代码好维护,好调试。。。。

作者: yovnchine   发布时间: 2010-07-05



QUOTE:
1、性能,举例:同样一个new的效率,c++得自己实现内存池管理才能和jvm比,一般人实现的效果肯定比不过写jvm那帮人。
cx6445 发表于 2010-07-05 13:32



比什么? 比overhead吗? 比实时性吗? 比局部性吗?
jvm有好远死好远。

C++的内存池不一定需要"自己动手", 可以用现有的库。
jvm在这方面, 就坐等。。。  坐等谁呢? 那个micro system到底挂了没?
即使在, 上面提到的那些指标是没法改进的。
不管写jvm的那帮人多牛逼(真牛逼吗?)  也无法将vector<int*> 改成vector<int>

另外, 与其说等jvm升级, javaer通常是被"机器升级"所拯救。



QUOTE:
3、跨平台,不举例了
cx6445 发表于 2010-07-05 13:32



write once, debug anywhere这个称号, 确实不需要举例。

作者: OwnWaterloo   发布时间: 2010-07-05

本帖最后由 cx6445 于 2010-07-05 19:01 编辑


QUOTE:
比什么? 比overhead吗? 比实时性吗? 比局部性吗?
jvm有好远死好远。

C++的内存池不一定需要"自 ...
OwnWaterloo 发表于 2010-07-05 18:27




    兄弟别激动,我知道c++的库多。所有写java的人都不会自己去实现一个内存池管理,也不好实现,但是这在商业上是很大的优点。不知道你能不能明白?

只要有足够多的时间和人力,c++一定可以做得比java好,但是商业应用时间成本和人力成本是决定性的,技术离开商业只能是自娱自乐。

apache基金会的软件被java占领大部份不是偶然的,c#学java也不是偶然的,facebook、twitter、yahoo部份底层软件用java也不是偶然的。

作者: cx6445   发布时间: 2010-07-05

你说的话总是一半对, 另一半待商榷……

因为java的内存管理无法自由控制而放弃java的人有,
因为无法控制C++的内存管理而转java的人也有。

所以这完全不能说明在内存管理上, java占优势。


而这一帖, 直到这里都说得让人无法驳斥:


QUOTE:
但是商业应用时间成本和人力成本是决定性的
cx6445 发表于 2010-07-05 18:58




直到这里:


QUOTE:
技术离开商业只能是自娱自乐。
cx6445 发表于 2010-07-05 18:58



商业同样是离不开技术的, 哪怕技术烂点都没关系, 必须有一定的技术含量。

说得不好听点, 有部分玩技术的真的就是在玩技术, 自发的, 而不是为利益驱动。
反而是这些玩商业的劫持了他们的成果, 还倒打一耙, 称之其为"自娱自乐"。

作者: OwnWaterloo   发布时间: 2010-07-05