有点疑问。

lonelybug 08-05-27
         

在设计程序的时候,比如Java是面向对象C不是,但是游戏框架都是用C制作,C++也许有别的更高效的代码。

要是比较来说,当然C的程序要比Java性能高很多,这也是为什么Tomcat, Java都会用Navie(也许拼错了)的方法来用一些关系到性能方面的东西。

有一点肯定,Java的设计出来的系统,易用性,扩展性,再加上设计模式得辅助,非常的好,我也是Java的程序员。

可是,我觉得,做一些东西的时候,不要偏执,不要一味的追求框架的高灵活性,因为要做到先分析,你的这个框架那部分需要灵活,那部分根本就不需要.我觉得面向接口的思想是需要培养的第一步。接口这个概念其实不是什么新的概念,早在C甚至Basic就已经有了,虽然都是面向过程的,但是函数之间的调用就是要建立一种“接口”协议。

这个例子很简单,你家的电源插座是一个接口,如果没有这个接口,发电站从柴油的换成了水利的,难道让家家户户从新装新的插座么?而变电站,恰恰就是中间层的道理,把不能直接使用的高电压进行降压,然后分不到家家户户。

言归正传,物极必反,知道自己的东西需要什么是首位的,就算你设计一个框架,也不能盲目的追求扩展性,有时候这是一个双刃剑。

只是浅见,希望可以和大家讨论。

         

banq
2008-05-27 11:51

在当今硬件提速越来越快,软件如果还在将单机性能置于软件设计之上,有些说不过去,而且就是单机性能差一些,Java是可伸缩性的,你不能静止眼光看它,分布式云计算代价很低,很方便的啊。

即将到来的java 6.0 JVM在单机性能上提高很多:这就是为什么在特定的基准上Java超越了C和C++以及最终在几乎所有基准上它都能将超越C和C++的主要原因。同时这也是我们的JRuby与微软的IronPython和DLR相比,只需要做很少的事情就可以获得可接受的性能的一个关键原因。”

http://www.infoq.com/cn/news/2008/05/hotspot_performance

像Java这样的解释型语言的性能很有可能最终将超越编译型语言,因为它可以在运行时基于现有硬件进行优化,同时Java中不断提高的对特定于处理器的优化确实令人非常兴奋。

>就算你设计一个框架,也不能盲目的追求扩展性,有时候这是一个双刃剑。
适度设计是重要的,但是现实中往往存在是设计不足,而不是过度设计。如果我们从中庸角度考虑,不去强调扩展性,那么我们还讨论什么呢?
[该贴被banq于2008-05-27 14:48修改过]

lonelybug
2008-05-29 05:23

语言不应该从解释性,还是编译型来看,当然,这是一种分类,但是来说我的疑惑的时候,我的问题是,应用型语言,还是系统语言,Java性能的超越,基于硬件的地提升,和JVM的底层代码提升,而后者的提升,依然是一脸C/C++这种系统语言的优化(我是说编码,和面对不同平台的)。

而从扩展性来说,我从来没有怀疑过java的能力。你所提到的设计不足,我非常肯,很多时候,是设计不足(老板不给时间,确切地说),但是,看看Hibernate的代码,这种“万能”的框架,越来越随着开发者的“贪心”而臃肿,而我认为,这也是bang你为什么要开发Jdon framework的原因之一。

当然,话说回来,我不太同意的就是C/C++和Java真的没有可比性在性能方面。如果说之前人们用C++开发商业程序,而Java的出现恰恰是填补了这个C/C++天生不足的地方。也正因如此,人们觉得Java是万能的,而过多地追捧者,忽视了一点--Java是应用语言,就是说它能做的只是应用程序,做操作系统,那么除非JVM可以单独处理所有硬件通信,底层的东西。而如果真的那样的话,那又和从新做一个操作系统有什么区别呢?

反观 C/C++这些语言,他们在应用系统的领域可以说一败涂地,但是,万丈高楼拔地起,C/C++恰恰就是这些地基,没有他们,Java也是等于0,所以说,解释性语言,无论如何在某些方面,不可能替代编译性语言。按照这个帖子的逻辑来说就是应用系统永远运行于操作系统之上,那么Java是什么位置,C/C++有是什么位置,我想,不必多说,也一目了然了。

我非常感谢banq这里的论坛,东西很好,文章也很有用,我只是,在这里泼了点冷水,让大家稍作停息,思考一下,你要做什么,如果你做底层,系统级开发,那我觉得,你从新考虑一下Java的可行性,而,我想大多数人在这里,还是做应用程序居多(我也是,先要解决吃饭,才能追求狂热的技术追求),哈哈。所以,banq这里,我还是支持用java作开发,当然,现在应用语言过多,导致人们感觉无暇跟住时代脚步,但是,真正的程序员,是学习思想,而不是,学习语言。人类行为方式的天性如此,各行各业都是如此,不知是计算机程序员。

banq
2008-05-29 18:22

楼主所言极是,比较中肯。

Java目前来讲确实侧重应用系统;C/C++侧重底层系统。这是现实。

我想讨论的是:未来会如何?我个人觉得未来就可能不会这样,尤其CPU摩尔定律不断提高的今天,在今天,很多人都天真认为,CPU太快了,似乎多余了,我认为还不够。CPU再快也满足不了我们对软件扩展性和灵活性的追求。

就拿手机来说:2003年我参与手机无线设计时,要为每个手机开发一个客户端,特别是C/C++等,因为当时手机很弱;但是今天,我们使用j2me+polish,可以为两百多种手机只开发一套Java客户端,最差的摩托V3也能跑,这就真正体现了Java一次编写,到处运行的目标。很难想象如果我们为何两百多套C/C++不同客户端的可怕现实,这些都体现了解释性语言的好处。

现在一个问题就是: JVM和CPU之间能不能直接对话?现在已经有直接可以运行JVM的芯片了,直接运行JVM的PC机也早就出来,未成为广泛现实的唯一阻碍还是CPU性能,但是未来呢?

打个比喻:如果C/C++给我们打开了一扇门,那么Java就是告诉我们如何在这个开门后的新世界中活得更好,我相信随着硬件提高,我们追求的重点是后者了。当然所有这些都不能否定C/C++开门功绩。




[该贴被banq于2008-05-29 18:26修改过]

freebox
2008-06-01 23:32

看看sun的口号,再看看java出来时候的目标,显然就是为异构系统群准备的。
我不知道swing在桌面应用中今后有什么样的发展,但是直到现在还是不看好它,也一直不明白为什么要设计个被IDE拖放操作摆弄得乱七八糟的东西。

2Go 1 2 下一页