b***i 发帖数: 3043 | 1 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度
,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电
路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。
后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了,
不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。
那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏
是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几
个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是
由 不太懂设计电路的人来设计了,更容易了。
Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
要再用原始的方案来做了,也不需要精通那些原始方案的人了。使用新技术的人站在巨
人的肩膀上,但这并不表示这些使用新技术的人就不如精通原始方案的人。从经济学角
度来讲,社会你用这些模块化的技术来更快地完成任务。也许芯片设计很难,也许芯片
生产的化工知识需要博士学历,但是使用计算机做软件赚几亿的大学辍学生们不见得比
博士笨。他们选择了站在巨人的肩膀上成为更高的人。Java出现后在很多领域取代C++
也是看不见的手决定的。以后大部分人编程的工作会更容易。那个时候仍然有人会Java
,仍然会有人用C++,仍然有人设计芯片,但是真的不表示用C++就比用Java的聪明,或
者贡献更多。
工作需要哪个技术,我们就去学那个技术。 |
w********r 发帖数: 1971 | 2 问题是,java不是c++的模块化,c++也在做java的事情,也作者很多java不能做的事情,逻
辑论证需要论证的实体能对号入座. |
t**r 发帖数: 3428 | 3 软件的不确定性,变化速度 灵活性 导致那种一个芯片可以用到很多场景的事情永远
不会发生。 |
i**********6 发帖数: 211 | 4 人类的技术发展是一个abstraction的level不断提高的过程。
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
h********3 发帖数: 2075 | 5 说得没有错。这个道理是显而易见的。
Java当初崛起的主要初衷其实是跨平台。但是恰好又做了动态语言的领头羊。很多动态
语言的引入,动摇和改变了传统软件设计的思想。后者的影响力在大型软件系统十分巨
大,甚至可以说,在当年大型企业软件架构里面,Java以及其延伸出来的技术思想是唯
一的银弹。不做企业软件的人,很难体会这点。10多年前,用C/C++开发企业软件唯一
的方法是COM组件或者DLL库来构造。对于大型企业软件来说,是十分可怕的。
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
X****r 发帖数: 3557 | 6 Java一般不被认为是动态语言。
【在 h********3 的大作中提到】 : 说得没有错。这个道理是显而易见的。 : Java当初崛起的主要初衷其实是跨平台。但是恰好又做了动态语言的领头羊。很多动态 : 语言的引入,动摇和改变了传统软件设计的思想。后者的影响力在大型软件系统十分巨 : 大,甚至可以说,在当年大型企业软件架构里面,Java以及其延伸出来的技术思想是唯 : 一的银弹。不做企业软件的人,很难体会这点。10多年前,用C/C++开发企业软件唯一 : 的方法是COM组件或者DLL库来构造。对于大型企业软件来说,是十分可怕的。 : : 板。
|
n*w 发帖数: 3393 | 7 nobody think java is dynamical language
【在 X****r 的大作中提到】 : Java一般不被认为是动态语言。
|
b******y 发帖数: 9224 | 8 java崛起我觉得还有个重要一点,就是sun microsystems 设计这个语言的时候比较严
谨,为了网络设计的。符合了社会发展方向。 |
|
p*****y 发帖数: 529 | 9 最近开始悄悄走红哦的functional language正在重复java想当年走过的路。
【在 w********r 的大作中提到】 : 问题是,java不是c++的模块化,c++也在做java的事情,也作者很多java不能做的事情,逻 : 辑论证需要论证的实体能对号入座.
|
h********3 发帖数: 2075 | 10 functional language出现得比Java早多了。语言设计太多问题了,成不了气候。首先
设计者就是用数学家的思想去解决一个问题,而非工程师的思想。其次,细节语法问题
太繁琐,比如LISP。光是一层包一层的括号都看死人了,没有可读性。最后,Java拥有
直接上最优秀的虚拟机。有最优秀的一帮人在JVM上做了太多出色的工作。其他任何语
言,包括python在类,都很难接近JVM的效率。网上有很多程序语言的计算效率对比。
除了C/C++,汇编,Fortuan外,python,ruby,php之类语言落后Java都是在2个数量级一
样上。现在大家都在考虑把语言编译成Java bytecode直接上JVM跑,而不自己写虚拟机。
【在 p*****y 的大作中提到】 : 最近开始悄悄走红哦的functional language正在重复java想当年走过的路。
|
|
|
h********3 发帖数: 2075 | 11 具有反射的语言都是动态语言。因为即使它不是“动态”的,都可以用反射功能去实现
成“动态”。
【在 X****r 的大作中提到】 : Java一般不被认为是动态语言。
|
z*******3 发帖数: 13709 | 12 而且官方的jvm还不是最好的
linux上的jvm有更牛逼的实现
http://www.azulsystems.com/
这个可以让gc的中断时间在一个很小的范围内
就是不知道用这个虚拟机执行的效率去跟c/c++写的程序做对比会怎样
机。
【在 h********3 的大作中提到】 : functional language出现得比Java早多了。语言设计太多问题了,成不了气候。首先 : 设计者就是用数学家的思想去解决一个问题,而非工程师的思想。其次,细节语法问题 : 太繁琐,比如LISP。光是一层包一层的括号都看死人了,没有可读性。最后,Java拥有 : 直接上最优秀的虚拟机。有最优秀的一帮人在JVM上做了太多出色的工作。其他任何语 : 言,包括python在类,都很难接近JVM的效率。网上有很多程序语言的计算效率对比。 : 除了C/C++,汇编,Fortuan外,python,ruby,php之类语言落后Java都是在2个数量级一 : 样上。现在大家都在考虑把语言编译成Java bytecode直接上JVM跑,而不自己写虚拟机。
|
m****t 发帖数: 2329 | |
b***i 发帖数: 3043 | 14 C++的一个重要弊端是include。这个不解决,就是一个短板。其他短板我回来再说。
我曾经和SUN当年参与Java团队的大牛通过email,在他写的代码基础上进行修改补充。
这对战斗力提高很有帮助。也是从那时候起,我对Java另眼相看了。在Java崛起的时代
,大量的工作从C++转移出来了,因为Java完美解决了几个问题,包括include,也包括
调试程序的技术。其他方面我就不说了,几位大牛都阐述很好。我只是在我要做的领域
必须用java,这个领域用C++就不行。
【在 w********r 的大作中提到】 : 问题是,java不是c++的模块化,c++也在做java的事情,也作者很多java不能做的事情,逻 : 辑论证需要论证的实体能对号入座.
|
b*******e 发帖数: 6389 | 15 类比缺乏准确性。
用集成电路是为了省钱。
用java为了省劳动力的钱。
用c++为了省服务器的钱。
没有人在乎技术,一切都是为了省钱。
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
m*******l 发帖数: 12782 | 16 我刚要回.groovy算是
【在 X****r 的大作中提到】 : Java一般不被认为是动态语言。
|
a****l 发帖数: 8211 | 17 其实说来说去都是库函数,各种语言的库函数本来就是很多的,最简单的,很多人可能像
不到能做个a/b是个多么美好的功能.
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
M******6 发帖数: 231 | 18 Nice article
板。
[发表自未名空间手机版 - m.mitbbs.com]
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
r*********r 发帖数: 3195 | |
k****y 发帖数: 4083 | 20 胡说八道!
Java10年前的崛起是benefit from the bubble, actually java performance was
very low at that time. But Indi-A3s pump it a lot, so it became popular |
|
|
m*******l 发帖数: 12782 | 21
【在 k****y 的大作中提到】 : 胡说八道! : Java10年前的崛起是benefit from the bubble, actually java performance was : very low at that time. But Indi-A3s pump it a lot, so it became popular
|
c*********e 发帖数: 323 | 22 Look who is behind java, one would know why it can be used even by a fool.
It's a resource hog, but that won't matter as you can buy a powerful machine
from sun, from ibm to run your poor performing code. What's more, anyone
may become a java programmer in 21 days as long as he/she wants to. |
b******s 发帖数: 589 | |
r***y 发帖数: 4379 | 24 感情java能有今天都是三哥三妹的功劳
你不是印度人吧, 犯不上免费给a3脸上贴金
【在 k****y 的大作中提到】 : 胡说八道! : Java10年前的崛起是benefit from the bubble, actually java performance was : very low at that time. But Indi-A3s pump it a lot, so it became popular
|
r*******n 发帖数: 3020 | 25 1. Functional language语法细节繁琐?LISP,Clojure, Haskell语法比java简单多了。
2. Python虚拟机比JVM慢,主要是因为支持python的动态机制,并不是开发python虚拟
机的
不优秀。
但是LISP的运行效率接近C、c++,更不会比java慢,它是动态语言,
我现在不知道为什么。
机。
【在 h********3 的大作中提到】 : functional language出现得比Java早多了。语言设计太多问题了,成不了气候。首先 : 设计者就是用数学家的思想去解决一个问题,而非工程师的思想。其次,细节语法问题 : 太繁琐,比如LISP。光是一层包一层的括号都看死人了,没有可读性。最后,Java拥有 : 直接上最优秀的虚拟机。有最优秀的一帮人在JVM上做了太多出色的工作。其他任何语 : 言,包括python在类,都很难接近JVM的效率。网上有很多程序语言的计算效率对比。 : 除了C/C++,汇编,Fortuan外,python,ruby,php之类语言落后Java都是在2个数量级一 : 样上。现在大家都在考虑把语言编译成Java bytecode直接上JVM跑,而不自己写虚拟机。
|
h******u 发帖数: 155 | 26 A couple of years ago, someone (pretty high in the management hierarchy)
from T.J. Watson said that Java would've died a long time before had IBM
stopped supporting it :) 所以任何東西的成功本來就有各種因素夾雜在一起,不是
光光技術強,或者光光哪個公司強力支持就起的來得。所以大家說得都對 :) 另外說
Java的performance,一開始的時候根本就不是一個 concern,因爲它太慢了,並且大
家也沒指望用它實現點 performance-critical的system code。後來JVM的
optimization多了起來,各種技術讓JVM快了很多,很多地方已經接近C/C++的
performance了,這時候大家才開始關心他的performance,並且這時候大的企業級的
project多了起來,OO的performance弊端開始集中跑了出來 (a.k.a,系統級的runtime
bloat)。 |
A******g 发帖数: 612 | 27 (+ (+3 5) (+ 2 (+ 6 (+7 (* 3 7)))) ) 好读吗?
LISP(像scheme)有解析器,也有编译器,快的是已经编译的二进制码
了。
【在 r*******n 的大作中提到】 : 1. Functional language语法细节繁琐?LISP,Clojure, Haskell语法比java简单多了。 : 2. Python虚拟机比JVM慢,主要是因为支持python的动态机制,并不是开发python虚拟 : 机的 : 不优秀。 : 但是LISP的运行效率接近C、c++,更不会比java慢,它是动态语言, : 我现在不知道为什么。 : : 机。
|
c*********e 发帖数: 16335 | 28 俺最佩服它的rmi,能想出这个idea的是我的偶象。
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
N******7 发帖数: 1297 | 29 你有用Java写过大型程序嘛?也太高看A3了。
【在 k****y 的大作中提到】 : 胡说八道! : Java10年前的崛起是benefit from the bubble, actually java performance was : very low at that time. But Indi-A3s pump it a lot, so it became popular
|
N******7 发帖数: 1297 | 30 请问你的水平是21 days for dummy出来的吗?如果你把21 days for dummy练出来的也
叫Java Programmer的话,那Java的失败就是有太多这种人了。
machine
【在 c*********e 的大作中提到】 : Look who is behind java, one would know why it can be used even by a fool. : It's a resource hog, but that won't matter as you can buy a powerful machine : from sun, from ibm to run your poor performing code. What's more, anyone : may become a java programmer in 21 days as long as he/she wants to.
|
|
|
z*******3 发帖数: 13709 | 31 前身是corba
【在 c*********e 的大作中提到】 : 俺最佩服它的rmi,能想出这个idea的是我的偶象。 : : 板。
|
N******7 发帖数: 1297 | 32 rmi的概念其实早就有吧,DCOM,Corba都是这种RPC的概念。不过Java的abstract做得
真不错,SUN的engineer书生气浓,但做事认真。
【在 c*********e 的大作中提到】 : 俺最佩服它的rmi,能想出这个idea的是我的偶象。 : : 板。
|
x********q 发帖数: 108 | 33 围棋的规则比象棋简洁简单,但是它可比象棋难下。
了。
【在 r*******n 的大作中提到】 : 1. Functional language语法细节繁琐?LISP,Clojure, Haskell语法比java简单多了。 : 2. Python虚拟机比JVM慢,主要是因为支持python的动态机制,并不是开发python虚拟 : 机的 : 不优秀。 : 但是LISP的运行效率接近C、c++,更不会比java慢,它是动态语言, : 我现在不知道为什么。 : : 机。
|
c*********e 发帖数: 16335 | 34 sun email怎么不能过滤spam? 搞的现在我们都用outlook,不习惯。outlook把很多相
关的email放在一起,经常以为是同一个email.
【在 N******7 的大作中提到】 : rmi的概念其实早就有吧,DCOM,Corba都是这种RPC的概念。不过Java的abstract做得 : 真不错,SUN的engineer书生气浓,但做事认真。
|
r******n 发帖数: 4522 | 35 我觉得Java的好处是百搭,老少咸宜,大小通吃。牛人用它可以更容易跟别人showoff
自己有多牛。A3们,老中半路出家,IS大妈班毕业的也能学个皮毛混口饭吃。 |
c*********e 发帖数: 16335 | 36 大家都是混饭吃啦。做到eistein那个级别的,有几个?
showoff
【在 r******n 的大作中提到】 : 我觉得Java的好处是百搭,老少咸宜,大小通吃。牛人用它可以更容易跟别人showoff : 自己有多牛。A3们,老中半路出家,IS大妈班毕业的也能学个皮毛混口饭吃。
|
r******n 发帖数: 4522 | 37 还是不一样的,牛人会思考怎么用,在哪里用Java比较好。土人只考虑哪里招Java的多
pay得高。没有牛人的话Java还是跟刚出道时一样慢如蜗牛。没有土人的话牛人就失去
指导目标,失去动力,彼此相辅相成。
【在 c*********e 的大作中提到】 : 大家都是混饭吃啦。做到eistein那个级别的,有几个? : : showoff
|
N******7 发帖数: 1297 | 38 这个不太一样吧。用sun email的有多少人?而且大多是在公司内部用,那时候有多少
spam?用进废退嘛。
sun出过不少好东西,有的东西都没出过sun公司。比如sun ray,说起来就和VNC一样,
但从中国连sun总部的机器都嗖嗖的。可除了sun的人,谁听说过。
Sun也就是坏在了Engineer管公司,不会挣钱呀。
【在 c*********e 的大作中提到】 : sun email怎么不能过滤spam? 搞的现在我们都用outlook,不习惯。outlook把很多相 : 关的email放在一起,经常以为是同一个email.
|
c*********e 发帖数: 16335 | 39 这个就像哲学家和普通老百姓一样,哲学家想的是非常大尺度,大深度的东西。德国的
哲学家,有名的非常多,尼采后来疯了,还是很可惜的。
【在 r******n 的大作中提到】 : 还是不一样的,牛人会思考怎么用,在哪里用Java比较好。土人只考虑哪里招Java的多 : pay得高。没有牛人的话Java还是跟刚出道时一样慢如蜗牛。没有土人的话牛人就失去 : 指导目标,失去动力,彼此相辅相成。
|
c*********e 发帖数: 16335 | 40 sun,rim,都是经验教训阿。一个公司不能有2个ceo,一个搞管理,一个搞技术;一个公司
不能让搞技术的当头头,头头一定要有管理头脑和交流能力。
【在 N******7 的大作中提到】 : 这个不太一样吧。用sun email的有多少人?而且大多是在公司内部用,那时候有多少 : spam?用进废退嘛。 : sun出过不少好东西,有的东西都没出过sun公司。比如sun ray,说起来就和VNC一样, : 但从中国连sun总部的机器都嗖嗖的。可除了sun的人,谁听说过。 : Sun也就是坏在了Engineer管公司,不会挣钱呀。
|
|
|
i******l 发帖数: 270 | 41 不是吧,在java中类型是静态的,无法改变。真正的动态语言如python, ruby之流,
是可以在运行中改变一个类型的,塞一个方法进去,删掉一些属性什么的。
【在 h********3 的大作中提到】 : 具有反射的语言都是动态语言。因为即使它不是“动态”的,都可以用反射功能去实现 : 成“动态”。
|
i******l 发帖数: 270 | 42 这个不能说谁强谁弱,看需求。
有的环境要求较快的响应时间,官方的jvm的gc可能会暂停
过长时间,但绝对性能应该还是王者
实际上,采用reference counting的vm,响应时间的表现都
会比采用什么mark sweep/region算法的vm好,但是整体性能
差很多。
【在 z*******3 的大作中提到】 : 而且官方的jvm还不是最好的 : linux上的jvm有更牛逼的实现 : http://www.azulsystems.com/ : 这个可以让gc的中断时间在一个很小的范围内 : 就是不知道用这个虚拟机执行的效率去跟c/c++写的程序做对比会怎样 : : 机。
|
h********3 发帖数: 2075 | 43 你这个还只是简单的数学表达式。不算复杂。如果你真正看过LISP开发的软件源代码,
绝对一层包一层括号都把你看死。
【在 A******g 的大作中提到】 : (+ (+3 5) (+ 2 (+ 6 (+7 (* 3 7)))) ) 好读吗? : LISP(像scheme)有解析器,也有编译器,快的是已经编译的二进制码 : : 了。
|
a********x 发帖数: 1502 | 44 写了一段时间Clojure,大大锻炼了我数括号的能力
【在 h********3 的大作中提到】 : 你这个还只是简单的数学表达式。不算复杂。如果你真正看过LISP开发的软件源代码, : 绝对一层包一层括号都把你看死。
|
r***y 发帖数: 4379 | 45 java 里面定义个复杂对象嵌套很深的 generics , 那些尖括号也能把人给数晕
【在 h********3 的大作中提到】 : 你这个还只是简单的数学表达式。不算复杂。如果你真正看过LISP开发的软件源代码, : 绝对一层包一层括号都把你看死。
|
n***d 发帖数: 8857 | 46 performance 不代表一切。容易用,不会crash才是王道。
【在 k****y 的大作中提到】 : 胡说八道! : Java10年前的崛起是benefit from the bubble, actually java performance was : very low at that time. But Indi-A3s pump it a lot, so it became popular
|
n******t 发帖数: 4406 | 47 你们是真不懂还是假不懂,JVM这东西可以用,但是没法快的.
【在 z*******3 的大作中提到】 : 而且官方的jvm还不是最好的 : linux上的jvm有更牛逼的实现 : http://www.azulsystems.com/ : 这个可以让gc的中断时间在一个很小的范围内 : 就是不知道用这个虚拟机执行的效率去跟c/c++写的程序做对比会怎样 : : 机。
|
N******7 发帖数: 1297 | 48 现在的JVM通过JIT还是有可能很快的,不能完全达到高效的c/c++,但可以很接近。
【在 n******t 的大作中提到】 : 你们是真不懂还是假不懂,JVM这东西可以用,但是没法快的.
|
z*******3 发帖数: 13709 | 49 那要看怎么定义这个快了
其实我现在用jvm跑一些游戏感觉并不差
看这个
http://jpcsp.org/
java写的psp模拟器
牛逼吧
【在 n******t 的大作中提到】 : 你们是真不懂还是假不懂,JVM这东西可以用,但是没法快的.
|
M******6 发帖数: 231 | |
|
|
h********3 发帖数: 2075 | 51 其实很多Java的应用比C/C++还更高效。主要在于内存分配和回收上的速度。JVM的内存
分配和管理,比C/C++的new,delete,malloc,free高效得多。C/C++的程序如果没有好的
内存池搭配,速度比JVM的慢多了,特别是在大内存的server上跑。
之前有专门对比过Web server的效率。C/C++只有Nginx比Apache tomcat快,原因是
Nginx自己实现了一套高效的内存池。即便是Apache组织下的Apache Web server,都不
如tomcat快,这个很有讽刺意义。
如果你仔细研究一下JVM的源代码就会发现,其实大部分JAVA的对象分配通常都是几条
机器指令就完成的。而C/C++的malloc,free要遍历链表。正是因为如此,我们写Java程
序的时候可以肆无忌惮地创建对象,把一切对象化。而你做C/C++的时候,始终要考虑
,你是应该在循环里面创建对象,还是考虑在程序启动的时候创建对象池。于是,久而
久之,C/C++的程序员就把大部分精力花在如此的程序实现细节上了,而忽略了你的业
务逻辑,你的软件设计。
runtime
【在 h******u 的大作中提到】 : A couple of years ago, someone (pretty high in the management hierarchy) : from T.J. Watson said that Java would've died a long time before had IBM : stopped supporting it :) 所以任何東西的成功本來就有各種因素夾雜在一起,不是 : 光光技術強,或者光光哪個公司強力支持就起的來得。所以大家說得都對 :) 另外說 : Java的performance,一開始的時候根本就不是一個 concern,因爲它太慢了,並且大 : 家也沒指望用它實現點 performance-critical的system code。後來JVM的 : optimization多了起來,各種技術讓JVM快了很多,很多地方已經接近C/C++的 : performance了,這時候大家才開始關心他的performance,並且這時候大的企業級的 : project多了起來,OO的performance弊端開始集中跑了出來 (a.k.a,系統級的runtime : bloat)。
|
h******u 发帖数: 155 | 52 "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也
就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12
instructions。C/C++的memory allocation也不是一定需要freelist-based,很多
customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光
是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality,
同一個processor的不同threads會不會經常access同一個cache line,還有
fragmentation等等。各種原因在一起非常複雜。
另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good
idea :) 現在看到很多server applications的scalability已經被excessive object
creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
concurrent users結果發現只能並行support幾千個,根本原因就是每一個user
session create了太多的object,在share memory系統上memory bandwidth就那麽大,
每一個thread 用了太多memory,並發行大大降低。另外,如果你要看現在的data-
intensive application,大的像hadoop一樣的map-reduce system,如果瘋狂create
objects,根本沒辦法scalable。擧個例子:一個大的數據處理系統在12G heap上面沒
辦法處理1G的數據,原因是每個data item都用object來表示的, GC overhead佔了縂
時間的47%。解決這些問題需要很多新的research,當然還有就是developers們需要有
object is not free的意識:)
【在 h********3 的大作中提到】 : 其实很多Java的应用比C/C++还更高效。主要在于内存分配和回收上的速度。JVM的内存 : 分配和管理,比C/C++的new,delete,malloc,free高效得多。C/C++的程序如果没有好的 : 内存池搭配,速度比JVM的慢多了,特别是在大内存的server上跑。 : 之前有专门对比过Web server的效率。C/C++只有Nginx比Apache tomcat快,原因是 : Nginx自己实现了一套高效的内存池。即便是Apache组织下的Apache Web server,都不 : 如tomcat快,这个很有讽刺意义。 : 如果你仔细研究一下JVM的源代码就会发现,其实大部分JAVA的对象分配通常都是几条 : 机器指令就完成的。而C/C++的malloc,free要遍历链表。正是因为如此,我们写Java程 : 序的时候可以肆无忌惮地创建对象,把一切对象化。而你做C/C++的时候,始终要考虑 : ,你是应该在循环里面创建对象,还是考虑在程序启动的时候创建对象池。于是,久而
|
c*********e 发帖数: 16335 | 53 嘿嘿,这个thread引起众多码工回帖,让我想起了大学熄灯后的床上夜话,或者是鹊桥
夜话。
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
m*******l 发帖数: 12782 | 54 唯一的一个好贴子
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
c*********e 发帖数: 16335 | 55 好在现在内存都是5g,10g的,硬盘就更大了。
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
m*******l 发帖数: 12782 | 56 所以要好的C++程序员来...
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
m*******l 发帖数: 12782 | 57 所以JAVA早就了太多mediocre的程序员
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
c*********e 发帖数: 16335 | 58 所以要好的程序员来创建对象,不该创建对象的时候坚决不建。
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
c*********e 发帖数: 16335 | 59 java程序员更重视的是business logic,尤其是ejb的程序员。container能帮着做很多
事,连entry point main()都免了。
【在 m*******l 的大作中提到】 : 所以JAVA早就了太多mediocre的程序员 : : object
|
m*******l 发帖数: 12782 | 60 ft. MFC的main隐藏的更早
【在 c*********e 的大作中提到】 : java程序员更重视的是business logic,尤其是ejb的程序员。container能帮着做很多 : 事,连entry point main()都免了。
|
|
|
h******u 发帖数: 155 | 61 看你的數據處理量。像fb或者amazon這樣大的系統(如果他們用java implement的話)
,你會有幾十上百Gb的data stream 在等著處理。就算内存在不斷增大,需要處理的數
據量絕對比内存增大的速度快。
【在 c*********e 的大作中提到】 : 好在现在内存都是5g,10g的,硬盘就更大了。 : : object
|
m*******l 发帖数: 12782 | 62 现在JAVA的抄的很多概念什么mvc, rmi啥的,人家微软不比这个晚
【在 m*******l 的大作中提到】 : ft. MFC的main隐藏的更早
|
x****u 发帖数: 44466 | 63 隐藏main本来就不是什么大事,因为main/winmain本来就不是Win32进程的入口。但MFC
这么做纯属手贱,其实没必要。
【在 m*******l 的大作中提到】 : ft. MFC的main隐藏的更早
|
c*********e 发帖数: 16335 | 64 这个要问amazon,fb怎么做的了。可能是它们的商业机密。
【在 h******u 的大作中提到】 : 看你的數據處理量。像fb或者amazon這樣大的系統(如果他們用java implement的話) : ,你會有幾十上百Gb的data stream 在等著處理。就算内存在不斷增大,需要處理的數 : 據量絕對比内存增大的速度快。
|
m*******l 发帖数: 12782 | 65 为了看起来更像对象
MFC
【在 x****u 的大作中提到】 : 隐藏main本来就不是什么大事,因为main/winmain本来就不是Win32进程的入口。但MFC : 这么做纯属手贱,其实没必要。
|
x****u 发帖数: 44466 | 66 数据层又不是用java做的,java做的是逻辑,可以用机器数目提高性能。
【在 c*********e 的大作中提到】 : 这个要问amazon,fb怎么做的了。可能是它们的商业机密。
|
x****u 发帖数: 44466 | 67 本来MFC多好的纯C++ Reflection实现,结果被这颗老鼠屎弄得不伦不类。
【在 m*******l 的大作中提到】 : 为了看起来更像对象 : : MFC
|
h******u 发帖数: 155 | 68 他們當然不可能是用java implement的 :)
【在 c*********e 的大作中提到】 : 这个要问amazon,fb怎么做的了。可能是它们的商业机密。
|
g*****g 发帖数: 34805 | 69 It's true excessive object creation can cause JVM performance issue. However
, it's fairly straightforward to fix them. It's not like that's a
showstopper and you have to go back to C++. In most system, the intensive
object creation is contained in a few function/classes. It's fairly easy to
profile and optimize. By holding on and reuse the objects carefully, the
performance issue can be resolved. It's an optimization step, not a practice
necessary in function design. Also, GC can be tuned to improve the
performance. For most systems, particularly RDBMS, bottleneck is typically
on the DB.
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
d**********x 发帖数: 4083 | 70 正经点做大规模c++项目的基本都有自己的内存池实现。。。
原生的分配器在小对象多的时候非常差,非常非常差。。
【在 h********3 的大作中提到】 : 其实很多Java的应用比C/C++还更高效。主要在于内存分配和回收上的速度。JVM的内存 : 分配和管理,比C/C++的new,delete,malloc,free高效得多。C/C++的程序如果没有好的 : 内存池搭配,速度比JVM的慢多了,特别是在大内存的server上跑。 : 之前有专门对比过Web server的效率。C/C++只有Nginx比Apache tomcat快,原因是 : Nginx自己实现了一套高效的内存池。即便是Apache组织下的Apache Web server,都不 : 如tomcat快,这个很有讽刺意义。 : 如果你仔细研究一下JVM的源代码就会发现,其实大部分JAVA的对象分配通常都是几条 : 机器指令就完成的。而C/C++的malloc,free要遍历链表。正是因为如此,我们写Java程 : 序的时候可以肆无忌惮地创建对象,把一切对象化。而你做C/C++的时候,始终要考虑 : ,你是应该在循环里面创建对象,还是考虑在程序启动的时候创建对象池。于是,久而
|
|
|
m*******l 发帖数: 12782 | 71 这个东西本来就是case by case tune的
【在 d**********x 的大作中提到】 : 正经点做大规模c++项目的基本都有自己的内存池实现。。。 : 原生的分配器在小对象多的时候非常差,非常非常差。。
|
N******7 发帖数: 1297 | 72 在实时系统需要处理大数据的时候JVM的performance的确是一个问题。object越来越多
,没有足够的时间GC,而且内存越大,GC的时候越长,Whole world freeze的时间也就
越长。这方面用C/C++,可以用内存加指针,不需要create object,也不需要free,的
确比Java强。
一般的Web Application没那么高的实时性要求,当然看不起来java的weak point。
However
to
practice
【在 g*****g 的大作中提到】 : It's true excessive object creation can cause JVM performance issue. However : , it's fairly straightforward to fix them. It's not like that's a : showstopper and you have to go back to C++. In most system, the intensive : object creation is contained in a few function/classes. It's fairly easy to : profile and optimize. By holding on and reuse the objects carefully, the : performance issue can be resolved. It's an optimization step, not a practice : necessary in function design. Also, GC can be tuned to improve the : performance. For most systems, particularly RDBMS, bottleneck is typically : on the DB. :
|
c*********e 发帖数: 16335 | 73 用c#做web application呢,有同样的问题?
【在 N******7 的大作中提到】 : 在实时系统需要处理大数据的时候JVM的performance的确是一个问题。object越来越多 : ,没有足够的时间GC,而且内存越大,GC的时候越长,Whole world freeze的时间也就 : 越长。这方面用C/C++,可以用内存加指针,不需要create object,也不需要free,的 : 确比Java强。 : 一般的Web Application没那么高的实时性要求,当然看不起来java的weak point。 : : However : to : practice
|
n******t 发帖数: 4406 | 74
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这就是我说Java的程序快不起来的原因。。。lol
【在 h********3 的大作中提到】 : 其实很多Java的应用比C/C++还更高效。主要在于内存分配和回收上的速度。JVM的内存 : 分配和管理,比C/C++的new,delete,malloc,free高效得多。C/C++的程序如果没有好的 : 内存池搭配,速度比JVM的慢多了,特别是在大内存的server上跑。 : 之前有专门对比过Web server的效率。C/C++只有Nginx比Apache tomcat快,原因是 : Nginx自己实现了一套高效的内存池。即便是Apache组织下的Apache Web server,都不 : 如tomcat快,这个很有讽刺意义。 : 如果你仔细研究一下JVM的源代码就会发现,其实大部分JAVA的对象分配通常都是几条 : 机器指令就完成的。而C/C++的malloc,free要遍历链表。正是因为如此,我们写Java程 : 序的时候可以肆无忌惮地创建对象,把一切对象化。而你做C/C++的时候,始终要考虑 : ,你是应该在循环里面创建对象,还是考虑在程序启动的时候创建对象池。于是,久而
|
x****u 发帖数: 44466 | 75 不过大部分对象应该可以用Reference Counting就释放掉。
【在 n******t 的大作中提到】 : : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ : 这就是我说Java的程序快不起来的原因。。。lol
|
n******t 发帖数: 4406 | 76 所有的这种"肆无忌惮的xxx",都是有问题的。。。
肆无忌惮的create pthread,肆无忌惮的create connection,肆无忌惮的open files,
就算Java本身不一定效率低,就单单从it鼓励程序员这么干这一点来说,就不是一个
高效的语言。
而且现在要管理的resource多了去了,GC只是memory而已,要一劳永逸不是那么简单的。
【在 x****u 的大作中提到】 : 不过大部分对象应该可以用Reference Counting就释放掉。
|
x****u 发帖数: 44466 | 77 就算是肆无忌惮,想耗尽资源还是很有难度的。
的。
【在 n******t 的大作中提到】 : 所有的这种"肆无忌惮的xxx",都是有问题的。。。 : 肆无忌惮的create pthread,肆无忌惮的create connection,肆无忌惮的open files, : 就算Java本身不一定效率低,就单单从it鼓励程序员这么干这一点来说,就不是一个 : 高效的语言。 : 而且现在要管理的resource多了去了,GC只是memory而已,要一劳永逸不是那么简单的。
|
m*******l 发帖数: 12782 | 78 所以我说JAVA的缺点就是是很多mediocre的程序员存在
当然JAVA的大牛也很多,但是mediorce的更多
的。
【在 n******t 的大作中提到】 : 所有的这种"肆无忌惮的xxx",都是有问题的。。。 : 肆无忌惮的create pthread,肆无忌惮的create connection,肆无忌惮的open files, : 就算Java本身不一定效率低,就单单从it鼓励程序员这么干这一点来说,就不是一个 : 高效的语言。 : 而且现在要管理的resource多了去了,GC只是memory而已,要一劳永逸不是那么简单的。
|
m*******l 发帖数: 12782 | 79 分配内存的死循环...
【在 x****u 的大作中提到】 : 就算是肆无忌惮,想耗尽资源还是很有难度的。 : : 的。
|
x****u 发帖数: 44466 | 80 Java没有分配内存函数啊。
【在 m*******l 的大作中提到】 : 分配内存的死循环...
|
|
|
n******t 发帖数: 4406 | 81 所以说,要写可以用的程序是没问题的,但是要性能高,也是不太可能的。
反正需要的时候也可以用,现在很多时候机器都闲得谎,无所谓。
但是也要知道有很多时候机器不是闲得慌的,比如很多用户体验比较在意的应用,
Java就不太行。
【在 x****u 的大作中提到】 : 就算是肆无忌惮,想耗尽资源还是很有难度的。 : : 的。
|
x****u 发帖数: 44466 | 82 Java是专为非瓶颈代码设计的语言。
C如果写的好可以效率达到CPU极限,但对于大多数程序员来说肯定搞得比Java慢并且漏
洞百出。
【在 n******t 的大作中提到】 : 所以说,要写可以用的程序是没问题的,但是要性能高,也是不太可能的。 : 反正需要的时候也可以用,现在很多时候机器都闲得谎,无所谓。 : 但是也要知道有很多时候机器不是闲得慌的,比如很多用户体验比较在意的应用, : Java就不太行。
|
m*******l 发帖数: 12782 | 83 是这样的
【在 x****u 的大作中提到】 : Java是专为非瓶颈代码设计的语言。 : C如果写的好可以效率达到CPU极限,但对于大多数程序员来说肯定搞得比Java慢并且漏 : 洞百出。
|
c*********e 发帖数: 16335 | 84 java说白了,就是用写好的frameworks,library,interface,比如spring,hibernate,
android里面的clicklistener,activity,fragment之类的,程序员只要override某个
method就可以了。这个趋势,c#现在也是这样了。搞的现在编程基本就是copy,paste.
有啥事,找stackoverflow.com,上面各种各样的问题,答案都非常靠铺,copy,paste就
搞定。神马iphone,android,c,c++,c#,java,etc.编程,有问题,找stackoverflow.com
,copy,paste,done.下班回家抱娃。
【在 m*******l 的大作中提到】 : 所以我说JAVA的缺点就是是很多mediocre的程序员存在 : 当然JAVA的大牛也很多,但是mediorce的更多 : : 的。
|
m*******l 发帖数: 12782 | 85 应该是对大多数JAVA程序员
现在剩下的C/C++程序员我个人感觉应该平均水平不至于像JAVA那样
【在 x****u 的大作中提到】 : Java是专为非瓶颈代码设计的语言。 : C如果写的好可以效率达到CPU极限,但对于大多数程序员来说肯定搞得比Java慢并且漏 : 洞百出。
|
c*********e 发帖数: 16335 | 86 好多c,c++ programmer已经跳槽到c#,做网络方面的事情,比如web services,web
application,authentication.毕竟现在是网络时代,和网络有关的工作机会最多。
【在 m*******l 的大作中提到】 : 应该是对大多数JAVA程序员 : 现在剩下的C/C++程序员我个人感觉应该平均水平不至于像JAVA那样
|
x****u 发帖数: 44466 | 87 我的感觉是,大多数的C++代码里面一样有很多问题。因为复杂度过高,多数程序员没
法真正掌握。
【在 m*******l 的大作中提到】 : 应该是对大多数JAVA程序员 : 现在剩下的C/C++程序员我个人感觉应该平均水平不至于像JAVA那样
|
d**********x 发帖数: 4083 | 88 我正在寻找成为java牛人之路。。。
【在 m*******l 的大作中提到】 : 应该是对大多数JAVA程序员 : 现在剩下的C/C++程序员我个人感觉应该平均水平不至于像JAVA那样
|
c*********e 发帖数: 16335 | 89 java牛人应该是写api,web services的那些architect.
【在 d**********x 的大作中提到】 : 我正在寻找成为java牛人之路。。。
|
x****u 发帖数: 44466 | 90 architect这个词被java搞臭了。
【在 c*********e 的大作中提到】 : java牛人应该是写api,web services的那些architect.
|
|
|
d**********x 发帖数: 4083 | 91 re
【在 x****u 的大作中提到】 : architect这个词被java搞臭了。
|
m*******l 发帖数: 12782 | 92 你有C++的基础应该比这里夸夸奇谈 的几个强太多了
【在 d**********x 的大作中提到】 : 我正在寻找成为java牛人之路。。。
|
b***i 发帖数: 3043 | 93 C/C++程序员象个肌肉发到的勇士,学过功夫,学过内力,准备爬到泰山顶上采草药,
结果别人做缆车上去先到。其实,坐缆车的人不见得肌肉不发达,人就是用了更好的工
具。
【在 m*******l 的大作中提到】 : 应该是对大多数JAVA程序员 : 现在剩下的C/C++程序员我个人感觉应该平均水平不至于像JAVA那样
|
c*********e 发帖数: 16335 | 94 sigh,c/c++和java之争。c#也不错。
【在 b***i 的大作中提到】 : C/C++程序员象个肌肉发到的勇士,学过功夫,学过内力,准备爬到泰山顶上采草药, : 结果别人做缆车上去先到。其实,坐缆车的人不见得肌肉不发达,人就是用了更好的工 : 具。
|
i******l 发帖数: 270 | 95 jvm中的创建海量的对象,考虑到c/c++的对应实现,也一样有开销啊,除非你创建的是
固定不变的数据,不考虑回收,使用最简单的bump pointer allocation。
如果要回收,jvm有很多算法进行递增式的gc,比如generational gc,young objects死
的快,old objects被移到回收频率低的空间,大多数时候的gc都是短促而快的轻量gc,
最后内存使用达到了某个阈值才会激发full gc
总之,如果大批量的创建,回收,不管java还是c/c++都要付出代价。
【在 N******7 的大作中提到】 : 在实时系统需要处理大数据的时候JVM的performance的确是一个问题。object越来越多 : ,没有足够的时间GC,而且内存越大,GC的时候越长,Whole world freeze的时间也就 : 越长。这方面用C/C++,可以用内存加指针,不需要create object,也不需要free,的 : 确比Java强。 : 一般的Web Application没那么高的实时性要求,当然看不起来java的weak point。 : : However : to : practice
|
b***i 发帖数: 3043 | 96 关于对象内存管理,我在想,是否可以有一种硬件机制,可以将地址和内存建立映射,
在一个CPU时钟周期内释放内存?
objects死
gc,
【在 i******l 的大作中提到】 : jvm中的创建海量的对象,考虑到c/c++的对应实现,也一样有开销啊,除非你创建的是 : 固定不变的数据,不考虑回收,使用最简单的bump pointer allocation。 : 如果要回收,jvm有很多算法进行递增式的gc,比如generational gc,young objects死 : 的快,old objects被移到回收频率低的空间,大多数时候的gc都是短促而快的轻量gc, : 最后内存使用达到了某个阈值才会激发full gc : 总之,如果大批量的创建,回收,不管java还是c/c++都要付出代价。
|
c*********e 发帖数: 16335 | 97 感觉内存还是太小,什么时候,内存会大到象硬盘那么大呢?
【在 b***i 的大作中提到】 : 关于对象内存管理,我在想,是否可以有一种硬件机制,可以将地址和内存建立映射, : 在一个CPU时钟周期内释放内存? : : objects死 : gc,
|
l*********s 发帖数: 5409 | 98 ^__^, 问题是老板们也很精明,要求也相应提高了,结果还是没完没了的加班。。。
com
【在 c*********e 的大作中提到】 : java说白了,就是用写好的frameworks,library,interface,比如spring,hibernate, : android里面的clicklistener,activity,fragment之类的,程序员只要override某个 : method就可以了。这个趋势,c#现在也是这样了。搞的现在编程基本就是copy,paste. : 有啥事,找stackoverflow.com,上面各种各样的问题,答案都非常靠铺,copy,paste就 : 搞定。神马iphone,android,c,c++,c#,java,etc.编程,有问题,找stackoverflow.com : ,copy,paste,done.下班回家抱娃。
|
m*******l 发帖数: 12782 | 99 你一直bump,完了怎么办?
objects死
gc,
【在 i******l 的大作中提到】 : jvm中的创建海量的对象,考虑到c/c++的对应实现,也一样有开销啊,除非你创建的是 : 固定不变的数据,不考虑回收,使用最简单的bump pointer allocation。 : 如果要回收,jvm有很多算法进行递增式的gc,比如generational gc,young objects死 : 的快,old objects被移到回收频率低的空间,大多数时候的gc都是短促而快的轻量gc, : 最后内存使用达到了某个阈值才会激发full gc : 总之,如果大批量的创建,回收,不管java还是c/c++都要付出代价。
|
b***i 发帖数: 3043 | 100 用java这些framework好歹加个班能把工作做完,同样的工作,就没C++的了,或者说连
老板都知道C++加班也没戏。
当然,有些工作是得用C++,比如科学计算了(Fortran的急了?)。我是说,大量的工
作,估计占原C++的60%以上的工作,都变成了Java的了。
【在 l*********s 的大作中提到】 : ^__^, 问题是老板们也很精明,要求也相应提高了,结果还是没完没了的加班。。。 : : com
|
|
|
x****u 发帖数: 44466 | 101 你把复杂的东西做到CPU里面了,CPU就慢了,还是不合适。
【在 b***i 的大作中提到】 : 关于对象内存管理,我在想,是否可以有一种硬件机制,可以将地址和内存建立映射, : 在一个CPU时钟周期内释放内存? : : objects死 : gc,
|
m*******l 发帖数: 12782 | 102 可以两个CPU, 一个专门干这个
【在 x****u 的大作中提到】 : 你把复杂的东西做到CPU里面了,CPU就慢了,还是不合适。
|
x****u 发帖数: 44466 | 103 性能提高一点点,速度慢50%。
【在 m*******l 的大作中提到】 : 可以两个CPU, 一个专门干这个
|
c*********e 发帖数: 16335 | 104 那是当然,老板就是搞管理的。比如有的老板,强迫员工周五交货,不交的话,嘿嘿。
。。
【在 l*********s 的大作中提到】 : ^__^, 问题是老板们也很精明,要求也相应提高了,结果还是没完没了的加班。。。 : : com
|
i******l 发帖数: 270 | 105 你没仔细读啊。
那个哥们儿说jvm的海量对象创建回收慢,我说在c/c++里也受影响,除非是不考虑回收,
使用bump pointer allocation的,那你可以搞一大块,移动指针就完了。
况且jvm也没有那么慢
【在 m*******l 的大作中提到】 : 你一直bump,完了怎么办? : : objects死 : gc,
|
i******l 发帖数: 270 | 106 这个可以有。
现在core越来越多,现在还是同样的核的U多,以后可能出于功耗考虑,
可能还会把不同的核在一个U上,m个小core,n个大core
这就更能体现出jvm的优势了,因为不同的service可以放到不同的core上,
举个例子,jit放到某个大core上,gc放到某个低频的小core上,以此来达到
功耗和性能的协调,这在managed language领域有不少人搞。随着移动设备
数量急剧增加,我觉得vm的前景不错呢。
如果是c和c++,诸位觉得该怎么弄?
【在 m*******l 的大作中提到】 : 可以两个CPU, 一个专门干这个
|
x****u 发帖数: 44466 | 107 靠,ARM的成功说明了CPU指令绝不可以随意复杂化。
【在 i******l 的大作中提到】 : 这个可以有。 : 现在core越来越多,现在还是同样的核的U多,以后可能出于功耗考虑, : 可能还会把不同的核在一个U上,m个小core,n个大core : 这就更能体现出jvm的优势了,因为不同的service可以放到不同的core上, : 举个例子,jit放到某个大core上,gc放到某个低频的小core上,以此来达到 : 功耗和性能的协调,这在managed language领域有不少人搞。随着移动设备 : 数量急剧增加,我觉得vm的前景不错呢。 : 如果是c和c++,诸位觉得该怎么弄?
|
a9 发帖数: 21638 | 108 arm现在只是移动设备有优势啊。主要还是省电。
【在 x****u 的大作中提到】 : 靠,ARM的成功说明了CPU指令绝不可以随意复杂化。
|
i******l 发帖数: 270 | 109 这跟指令有什么关系?
这些服务在vm里也就是thread而已,把某某thread绑在某个core上
跑为什么会CPU复杂化指令
【在 x****u 的大作中提到】 : 靠,ARM的成功说明了CPU指令绝不可以随意复杂化。
|
x****u 发帖数: 44466 | 110 这就是最大优势啊。电就意味着热,然后会影响很多。
【在 a9 的大作中提到】 : arm现在只是移动设备有优势啊。主要还是省电。
|
|
|
a9 发帖数: 21638 | 111 貌似目前还是复杂指令集有无可拟的速度优势。
【在 x****u 的大作中提到】 : 这就是最大优势啊。电就意味着热,然后会影响很多。
|
x****u 发帖数: 44466 | 112 你浪费一个CPU,能获得50%性能提高么?
【在 i******l 的大作中提到】 : 这跟指令有什么关系? : 这些服务在vm里也就是thread而已,把某某thread绑在某个core上 : 跑为什么会CPU复杂化指令
|
c*********e 发帖数: 16335 | 113 很奇怪现在人工智能领域发展这么慢,难道让一个机器人自己会思考,这么难吗?
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
m*******l 发帖数: 12782 | 114 难
【在 c*********e 的大作中提到】 : 很奇怪现在人工智能领域发展这么慢,难道让一个机器人自己会思考,这么难吗? : : 板。
|
x****u 发帖数: 44466 | 115 去掉冷却系统后就不行了。
而且现在复杂指令已经遇到了功耗频率的极限。
【在 a9 的大作中提到】 : 貌似目前还是复杂指令集有无可拟的速度优势。
|
a9 发帖数: 21638 | 116 还是这句话:目前还是复杂指令集有无可比拟的速度优势
【在 x****u 的大作中提到】 : 去掉冷却系统后就不行了。 : 而且现在复杂指令已经遇到了功耗频率的极限。
|
x****u 发帖数: 44466 | 117 说这个没什么用,CPU的历史就是高速CPU被低功耗CPU干掉的历史。
【在 a9 的大作中提到】 : 还是这句话:目前还是复杂指令集有无可比拟的速度优势
|
a9 发帖数: 21638 | 118 的确是,intel把amd干趴下了
【在 x****u 的大作中提到】 : 说这个没什么用,CPU的历史就是高速CPU被低功耗CPU干掉的历史。
|
N******7 发帖数: 1297 | 119 这个我觉得不太一样。我们的一个系统就是这样,实时大数据量,在C/C++里可以把读
来的数据往一大块内存里放,然后移动指针,另一个读指针,直接按structure读。内
存可以不需要不断alloc和free。但以前的design在Java里不得不一个一个object的
create。然后这些object没时间被GC,都堆在memery里,一但Full GC,就freeze
whole world,然后timeout, socket close。本来考虑也用一大块memory的方式,但那
样没法用structure data了。
不知道这种时候你用java有什么好的design没有?
objects死
gc,
【在 i******l 的大作中提到】 : jvm中的创建海量的对象,考虑到c/c++的对应实现,也一样有开销啊,除非你创建的是 : 固定不变的数据,不考虑回收,使用最简单的bump pointer allocation。 : 如果要回收,jvm有很多算法进行递增式的gc,比如generational gc,young objects死 : 的快,old objects被移到回收频率低的空间,大多数时候的gc都是短促而快的轻量gc, : 最后内存使用达到了某个阈值才会激发full gc : 总之,如果大批量的创建,回收,不管java还是c/c++都要付出代价。
|
z*******3 发帖数: 13709 | 120 肆无忌惮地new也不对
现在大部分都是让spring什么来管
spring对于大多数bean只创建一个对象
然后来回地用
但是google写的guice默认是对每一个请求自动创建新对象
因为现在这个年代,new一个bean已经不那么耗时了
除非这个bean有io的操作
不过spring是先把这些都生成,然后存在内存里面
供线程调用,所以spring启动很慢,网络上一搜,一堆的抱怨
guice因为不预先生成bean保存在内存里,所以启动很快
等到你要用时候,它再生成对象,所以执行效率不如spring
【在 n******t 的大作中提到】 : 所以说,要写可以用的程序是没问题的,但是要性能高,也是不太可能的。 : 反正需要的时候也可以用,现在很多时候机器都闲得谎,无所谓。 : 但是也要知道有很多时候机器不是闲得慌的,比如很多用户体验比较在意的应用, : Java就不太行。
|
|
|
x****u 发帖数: 44466 | 121 大内存这事系统可以直接帮你做好。
【在 N******7 的大作中提到】 : 这个我觉得不太一样。我们的一个系统就是这样,实时大数据量,在C/C++里可以把读 : 来的数据往一大块内存里放,然后移动指针,另一个读指针,直接按structure读。内 : 存可以不需要不断alloc和free。但以前的design在Java里不得不一个一个object的 : create。然后这些object没时间被GC,都堆在memery里,一但Full GC,就freeze : whole world,然后timeout, socket close。本来考虑也用一大块memory的方式,但那 : 样没法用structure data了。 : 不知道这种时候你用java有什么好的design没有? : : objects死 : gc,
|
i******l 发帖数: 270 | 122 也不能说浪费一个core,只是根据任务的特点,让特定的一个或一些核
专注于,或主要执行某些任务。
性能和功耗的协调统一,举个例子,假设,某任务用1G的core和200MHz的
简单core来跑,都能在时间t内完成,但功耗差老了,那么区别对待vm内
不同类型的任务就是一个好主意。反正核的数量是不停的在增加的,现在
的处理器厂商就会玩命堆核
【在 x****u 的大作中提到】 : 你浪费一个CPU,能获得50%性能提高么?
|
x****u 发帖数: 44466 | 123 这种事情OS早就帮你想好了。
你设计个高优先级线程,基本上一个核就被它给包场了。
【在 i******l 的大作中提到】 : 也不能说浪费一个core,只是根据任务的特点,让特定的一个或一些核 : 专注于,或主要执行某些任务。 : 性能和功耗的协调统一,举个例子,假设,某任务用1G的core和200MHz的 : 简单core来跑,都能在时间t内完成,但功耗差老了,那么区别对待vm内 : 不同类型的任务就是一个好主意。反正核的数量是不停的在增加的,现在 : 的处理器厂商就会玩命堆核
|
a9 发帖数: 21638 | 124 zkss?
把读
。内
但那
【在 x****u 的大作中提到】 : 大内存这事系统可以直接帮你做好。
|
d**********x 发帖数: 4083 | 125 OS无法预测缓存命中情况吧。。?
【在 x****u 的大作中提到】 : 这种事情OS早就帮你想好了。 : 你设计个高优先级线程,基本上一个核就被它给包场了。
|
x****u 发帖数: 44466 | 126 比如你分配了一大块内存,实际上只是拿到了线性地址而已,物理内存消耗几乎为零。
【在 a9 的大作中提到】 : zkss? : : 把读 : 。内 : 但那
|
x****u 发帖数: 44466 | 127 你软件怎么预测?
【在 d**********x 的大作中提到】 : OS无法预测缓存命中情况吧。。?
|
a9 发帖数: 21638 | 128 人家早填了数据了。。。。。
【在 x****u 的大作中提到】 : 比如你分配了一大块内存,实际上只是拿到了线性地址而已,物理内存消耗几乎为零。
|
x****u 发帖数: 44466 | 129 填了数据才分配内存。
【在 a9 的大作中提到】 : 人家早填了数据了。。。。。
|
i******l 发帖数: 270 | 130 这个跟OS没什么关系。
我在说vm设计,怎么最大化的利用硬件获得功耗和性能的统一。
而这一切对于程序员都是透明的。所以我说vm前景很好。
【在 x****u 的大作中提到】 : 这种事情OS早就帮你想好了。 : 你设计个高优先级线程,基本上一个核就被它给包场了。
|
|
|
z*******3 发帖数: 13709 | 131 create thread由web server来管,如果是中间的,用app server来管
connection建连接池
open files对于大多数的java程序来说可能都不存在
bean本身用spring来管
数据用db来管
所以基本上要管理的resources都有比较合适的东西在做
单纯依赖core java自己去拼命写也是有问题的
现在很多程序猿写了几个月程序,搞不好连new这个关键字都不用
的。
【在 n******t 的大作中提到】 : 所有的这种"肆无忌惮的xxx",都是有问题的。。。 : 肆无忌惮的create pthread,肆无忌惮的create connection,肆无忌惮的open files, : 就算Java本身不一定效率低,就单单从it鼓励程序员这么干这一点来说,就不是一个 : 高效的语言。 : 而且现在要管理的resource多了去了,GC只是memory而已,要一劳永逸不是那么简单的。
|
x****u 发帖数: 44466 | 132 Dalvik设计者显然不这么认为啊。
【在 i******l 的大作中提到】 : 这个跟OS没什么关系。 : 我在说vm设计,怎么最大化的利用硬件获得功耗和性能的统一。 : 而这一切对于程序员都是透明的。所以我说vm前景很好。
|
i******l 发帖数: 270 | 133 纯bump pointer allocation,不回收,这个肯定c/c++快,比java合适。
【在 N******7 的大作中提到】 : 这个我觉得不太一样。我们的一个系统就是这样,实时大数据量,在C/C++里可以把读 : 来的数据往一大块内存里放,然后移动指针,另一个读指针,直接按structure读。内 : 存可以不需要不断alloc和free。但以前的design在Java里不得不一个一个object的 : create。然后这些object没时间被GC,都堆在memery里,一但Full GC,就freeze : whole world,然后timeout, socket close。本来考虑也用一大块memory的方式,但那 : 样没法用structure data了。 : 不知道这种时候你用java有什么好的design没有? : : objects死 : gc,
|
i******l 发帖数: 270 | 134 ...这从何说起啊
那他们怎么认为啊
【在 x****u 的大作中提到】 : Dalvik设计者显然不这么认为啊。
|
x****u 发帖数: 44466 | 135 安卓上的程序还是编译过的Java啊。
【在 i******l 的大作中提到】 : ...这从何说起啊 : 那他们怎么认为啊
|
c*********e 发帖数: 16335 | 136 为啥子难?其实用几个数据库,n个表格模拟人的大脑的记忆存储。然后让机器人每碰
到一件事,都在自己的记忆和经验表里搜索该怎么处理,不就可以了吗?难道我想得太
简单?
还可以定义一个机器人的行为和思维模式,比如这个特定的机器人,性格是内向的,但
是工作是aggressive的,人是稳定的,不会主动攻击人的。
【在 m*******l 的大作中提到】 : 难
|
a9 发帖数: 21638 | 137 你是在说watson吧?
【在 c*********e 的大作中提到】 : 为啥子难?其实用几个数据库,n个表格模拟人的大脑的记忆存储。然后让机器人每碰 : 到一件事,都在自己的记忆和经验表里搜索该怎么处理,不就可以了吗?难道我想得太 : 简单? : 还可以定义一个机器人的行为和思维模式,比如这个特定的机器人,性格是内向的,但 : 是工作是aggressive的,人是稳定的,不会主动攻击人的。
|
N******7 发帖数: 1297 | 138 愿闻其详
【在 x****u 的大作中提到】 : 大内存这事系统可以直接帮你做好。
|
c*********e 发帖数: 16335 | 139 watson就是个大百科全书,不能往里面更改数据。
我觉得机器人应该可以根据自己的经验来改变同一个问题的答案并存到数据库里。比如
机器人3岁的时候,人们问它,长大了想干什么,它会说歌星;5岁的时候再问它,它应
该能根据自己的经历,说想当医生,因为漂亮姑娘喜欢当医生的。
【在 a9 的大作中提到】 : 你是在说watson吧?
|
b***i 发帖数: 3043 | 140 用Java有希望,因为Java有reflection。另外,我也是 最近才会的,Java调试程序的
时候,可以直接修改后继续运行,然后你的代码如果涉及一个类的方法,可以看到修改
后的结果。这样,Java程序可以设计成不仅连知识(放在数据库里面)是动态的,连人
写的代码都可以动态修改,不用重新启动程序。明白我的意思?就是说,我一辆车,开
着开着,我把它从toyota改成法拉利了,中间没停车。
【在 c*********e 的大作中提到】 : watson就是个大百科全书,不能往里面更改数据。 : 我觉得机器人应该可以根据自己的经验来改变同一个问题的答案并存到数据库里。比如 : 机器人3岁的时候,人们问它,长大了想干什么,它会说歌星;5岁的时候再问它,它应 : 该能根据自己的经历,说想当医生,因为漂亮姑娘喜欢当医生的。
|
|
|
z*******3 发帖数: 13709 | 141 修改得不多
比如增减fields就不能实现
增减方法也不行,唯一能动态增加方法的是用aop来实现
用spring或者aspectj
可以改变private/public这些modifier
【在 b***i 的大作中提到】 : 用Java有希望,因为Java有reflection。另外,我也是 最近才会的,Java调试程序的 : 时候,可以直接修改后继续运行,然后你的代码如果涉及一个类的方法,可以看到修改 : 后的结果。这样,Java程序可以设计成不仅连知识(放在数据库里面)是动态的,连人 : 写的代码都可以动态修改,不用重新启动程序。明白我的意思?就是说,我一辆车,开 : 着开着,我把它从toyota改成法拉利了,中间没停车。
|
c*********e 发帖数: 16335 | 142 动态修改这个功能已经不是新鲜事了,windows server 2008就有这个功能,不用重启
计算机。
【在 b***i 的大作中提到】 : 用Java有希望,因为Java有reflection。另外,我也是 最近才会的,Java调试程序的 : 时候,可以直接修改后继续运行,然后你的代码如果涉及一个类的方法,可以看到修改 : 后的结果。这样,Java程序可以设计成不仅连知识(放在数据库里面)是动态的,连人 : 写的代码都可以动态修改,不用重新启动程序。明白我的意思?就是说,我一辆车,开 : 着开着,我把它从toyota改成法拉利了,中间没停车。
|
x****u 发帖数: 44466 | 143 你确定java可以动态改代码?
字节码里面已经没有源程序了,你改什么啊。
【在 b***i 的大作中提到】 : 用Java有希望,因为Java有reflection。另外,我也是 最近才会的,Java调试程序的 : 时候,可以直接修改后继续运行,然后你的代码如果涉及一个类的方法,可以看到修改 : 后的结果。这样,Java程序可以设计成不仅连知识(放在数据库里面)是动态的,连人 : 写的代码都可以动态修改,不用重新启动程序。明白我的意思?就是说,我一辆车,开 : 着开着,我把它从toyota改成法拉利了,中间没停车。
|
x****u 发帖数: 44466 | 144 如果说到这个,其实VC6也做得到。
【在 z*******3 的大作中提到】 : 修改得不多 : 比如增减fields就不能实现 : 增减方法也不行,唯一能动态增加方法的是用aop来实现 : 用spring或者aspectj : 可以改变private/public这些modifier
|
N******7 发帖数: 1297 | 145 呵,我现在理解为什么有的人能被气得骂人了。Java可能不好动态加field或method,
但动态改代码从Proxy时就可以了,不用说cglib, javassit之类的,没有interface都
可以改。更别说aspectj了。
【在 x****u 的大作中提到】 : 你确定java可以动态改代码? : 字节码里面已经没有源程序了,你改什么啊。
|
x****u 发帖数: 44466 | 146 你说的这种编译后改代码,VC6一样可以实现。
纯动态还是没戏的。
【在 N******7 的大作中提到】 : 呵,我现在理解为什么有的人能被气得骂人了。Java可能不好动态加field或method, : 但动态改代码从Proxy时就可以了,不用说cglib, javassit之类的,没有interface都 : 可以改。更别说aspectj了。
|
N******7 发帖数: 1297 | 147 不知道你说的纯动态是什么意思。我说的不是编译后译编译的结果,是在运行时改。
【在 x****u 的大作中提到】 : 你说的这种编译后改代码,VC6一样可以实现。 : 纯动态还是没戏的。
|
x****u 发帖数: 44466 | 148 问题很简单,你怎么修改字节码里面已经看不到的东西?
【在 N******7 的大作中提到】 : 不知道你说的纯动态是什么意思。我说的不是编译后译编译的结果,是在运行时改。
|
b***i 发帖数: 3043 | 149 VC得继承某个类,java不用,任何类都可以动态生成。
另外,我给你举个例子,我写一个程序,解释basic语言的代码,中间一个方法我写好
了,外面调用的我catch了exception,然后我可以一边调试我的一个basic语言的代码,
一边修改,假设原来代码要么出错,要么throw exception,我再输入一边刚才的basic
的代码。C++里面,必须把这个方法用extern "C"来调用,然后必须用动态库。java本
身所有都是等价于动态库。
【在 x****u 的大作中提到】 : 你说的这种编译后改代码,VC6一样可以实现。 : 纯动态还是没戏的。
|
x****u 发帖数: 44466 | 150 java也是相当于有隐含基类的。
Basic如果是编译后执行的话,也是基本改不了,纯解释版本除外。
basic
【在 b***i 的大作中提到】 : VC得继承某个类,java不用,任何类都可以动态生成。 : 另外,我给你举个例子,我写一个程序,解释basic语言的代码,中间一个方法我写好 : 了,外面调用的我catch了exception,然后我可以一边调试我的一个basic语言的代码, : 一边修改,假设原来代码要么出错,要么throw exception,我再输入一边刚才的basic : 的代码。C++里面,必须把这个方法用extern "C"来调用,然后必须用动态库。java本 : 身所有都是等价于动态库。
|
|
|
z*******3 发帖数: 13709 | 151 我觉得反射这些东西都是系统越大越有用
本身就是比较耗费资源的东西
java里面也是各种框架什么在用
作为构建框架的基础
小的,客户端,用了这个反倒像是奇淫技巧
客户端更看重执行效率
而不是结构这些东西
【在 x****u 的大作中提到】 : java也是相当于有隐含基类的。 : Basic如果是编译后执行的话,也是基本改不了,纯解释版本除外。 : : basic
|
N******7 发帖数: 1297 | 152 答案也很简单,你根本就不用改。
比如spring security,如果你没有privilege,根本就不进入method,也可以把input
parameter修改后再call method,甚至call a completely different method。这些没
有改你看不到的东西,但它他都是动态改变程序的logic。你不会说这些都不是动态的
吧。
【在 x****u 的大作中提到】 : 问题很简单,你怎么修改字节码里面已经看不到的东西?
|
x****u 发帖数: 44466 | 153 那就简单了。VC6也可以凭空搞出新对象来,而且调用者透明。
input
【在 N******7 的大作中提到】 : 答案也很简单,你根本就不用改。 : 比如spring security,如果你没有privilege,根本就不进入method,也可以把input : parameter修改后再call method,甚至call a completely different method。这些没 : 有改你看不到的东西,但它他都是动态改变程序的logic。你不会说这些都不是动态的 : 吧。
|
c*********e 发帖数: 16335 | 154 objective-c是一个特例,本来好老的一个语言,因为iphone又重新成为亮点。
板。
【在 b***i 的大作中提到】 : 人类技术每到一定层次,就会把这种技术模块化,比如,100年前电路到达一定成熟度 : ,出现了印刷电路板技术,但并不表示直接拿线连电路不可行,只是说大量的工作用电 : 路板非常适合,降低了出错的可能性,降低了成本,很多不懂电路的人可以生产电路板。 : 后来,又出现了集成电路技术,把电路板变成一个芯片,功能封装了,出错又减少了, : 不会设计CPU的人也能用集成电路来做计算机了。但是仍然有人自己设计芯片。 : 那个时代电子游戏出现了,完全用硬件的电子游戏,直接控制电视机。这样的电子游戏 : 是可以设计,但是很麻烦,很少有人能设计出来,一旦出错,就是硬件的错误,要等几 : 个星期才能拿到修正的电路。所以,用软件设计游戏这个技术出现后,大部分游戏就是 : 由 不太懂设计电路的人来设计了,更容易了。 : Java的出现重复了这些历史,使用Java能够更容易解决以前的大量问题,这些问题不需
|
b***i 发帖数: 3043 | 155 Java的用户程序可以调用编译代码,产生byte code,然后执行,比如jsp。然后这个代
码中所写的类就可以动态构造了。
VC6咋搞?
【在 x****u 的大作中提到】 : 那就简单了。VC6也可以凭空搞出新对象来,而且调用者透明。 : : input
|
x****u 发帖数: 44466 | 156 你这个不叫动态修改代码,叫动态编译代码。
【在 b***i 的大作中提到】 : Java的用户程序可以调用编译代码,产生byte code,然后执行,比如jsp。然后这个代 : 码中所写的类就可以动态构造了。 : VC6咋搞?
|
h******u 发帖数: 155 | 157 要看什么样的 application?不是什么程序都好fix的。并且,我前面主要在讲用java
实现的
data-processing system,例如hadoop,Giraph,Hyracks之类,不是简单query db的程序
。这些大程序往往需要在5G的memory上面处理500G的data stream,如果你看到所有的
interface都需要object, 这个程序很难去大大的优化。object pooling是一个很ad-
hoc的pattern,并不能fundamentally解决object带来的 overhead。一个很关键的做法
(现在很多系统都在用),就是不让系统里面object的数量随着数据量线形增长,否则
不可能scalable。怎么办,Hyracks用了这种做法:用buffer-based data management
。创建大的buffer,把数据放在buffer里面,而不要create小objects。 类似于region
-based memory management。 只有data processor (比如hash function, sorter,
grouper ,etc)才create objects,data item千万不能create objects。Hyracks比
Hadoop和Giraph的scalability成数量级的增长, 但是问题就在于这样把原始的C/C++
的memory management带回到了Java里面,用户coding很不方便,于是就需要develop
compiler spport to automatically generate buffer-manipulating code from high
-level relational specifications。
All in all,我不是在advocate Java programming 或者 C/C++ programming。Java有
些问题是 Inherent in object-orientation,不是说optimize一下就能消除的。是在
fundamentally optimize就像 Hyracks一样把老旧C/C++的问题带回来了。 这就是
state-of-the-art of Java programming.
However
to
practice
【在 g*****g 的大作中提到】 : It's true excessive object creation can cause JVM performance issue. However : , it's fairly straightforward to fix them. It's not like that's a : showstopper and you have to go back to C++. In most system, the intensive : object creation is contained in a few function/classes. It's fairly easy to : profile and optimize. By holding on and reuse the objects carefully, the : performance issue can be resolved. It's an optimization step, not a practice : necessary in function design. Also, GC can be tuned to improve the : performance. For most systems, particularly RDBMS, bottleneck is typically : on the DB. :
|
h******u 发帖数: 155 | 158 纯动态也可以改。JIT里面有一种技术叫 On-stack replacement (OSR),就是target 怎
么把在stack上面的method替换成新的,优化过的版本。并且很多research work 都可
以在GC的时候update class type,这样可以在heap reachability analysis把老class
的object替换掉。 反正总之,只要你愿意,没什么不能做的.
【在 x****u 的大作中提到】 : 你说的这种编译后改代码,VC6一样可以实现。 : 纯动态还是没戏的。
|
x****u 发帖数: 44466 | 159 组件级别的修改代码,这个是VC6的技术了。
Java做不到的是类似JavaScript那种可以现场构造代码的技术。
class
【在 h******u 的大作中提到】 : 纯动态也可以改。JIT里面有一种技术叫 On-stack replacement (OSR),就是target 怎 : 么把在stack上面的method替换成新的,优化过的版本。并且很多research work 都可 : 以在GC的时候update class type,这样可以在heap reachability analysis把老class : 的object替换掉。 反正总之,只要你愿意,没什么不能做的.
|
i******l 发帖数: 270 | 160 没有承载任何语意的优化,这和动态语言的动态完全不一样
class
【在 h******u 的大作中提到】 : 纯动态也可以改。JIT里面有一种技术叫 On-stack replacement (OSR),就是target 怎 : 么把在stack上面的method替换成新的,优化过的版本。并且很多research work 都可 : 以在GC的时候update class type,这样可以在heap reachability analysis把老class : 的object替换掉。 反正总之,只要你愿意,没什么不能做的.
|
|
|
h******u 发帖数: 155 | 161 是啊,这是相当老的技术阿。但是像Javascript这样的codegen,理论上只要你在JVM
里用interpretation-only mode,实现起来很容易。 关键是motivation是啥?有什么
usage scenario?
【在 x****u 的大作中提到】 : 组件级别的修改代码,这个是VC6的技术了。 : Java做不到的是类似JavaScript那种可以现场构造代码的技术。 : : class
|
g*****g 发帖数: 34805 | 162 我对DB processing的系统不了解。web service的系统,请求总是比较固定。很容易用
Object pool解决了。
java
management
region
【在 h******u 的大作中提到】 : 要看什么样的 application?不是什么程序都好fix的。并且,我前面主要在讲用java : 实现的 : data-processing system,例如hadoop,Giraph,Hyracks之类,不是简单query db的程序 : 。这些大程序往往需要在5G的memory上面处理500G的data stream,如果你看到所有的 : interface都需要object, 这个程序很难去大大的优化。object pooling是一个很ad- : hoc的pattern,并不能fundamentally解决object带来的 overhead。一个很关键的做法 : (现在很多系统都在用),就是不让系统里面object的数量随着数据量线形增长,否则 : 不可能scalable。怎么办,Hyracks用了这种做法:用buffer-based data management : 。创建大的buffer,把数据放在buffer里面,而不要create小objects。 类似于region : -based memory management。 只有data processor (比如hash function, sorter,
|
x****u 发帖数: 44466 | 163 设想如果JavaScript是静态语言。。。
JVM
【在 h******u 的大作中提到】 : 是啊,这是相当老的技术阿。但是像Javascript这样的codegen,理论上只要你在JVM : 里用interpretation-only mode,实现起来很容易。 关键是motivation是啥?有什么 : usage scenario?
|
g*****g 发帖数: 34805 | 164 JVM上可以跑动态和静态语言。Groovy,Clojure等等动态语言多得很。
JVM
【在 h******u 的大作中提到】 : 是啊,这是相当老的技术阿。但是像Javascript这样的codegen,理论上只要你在JVM : 里用interpretation-only mode,实现起来很容易。 关键是motivation是啥?有什么 : usage scenario?
|
x****u 发帖数: 44466 | 165 JVM等于是bytecode的执行环境了,理论上说可以跑任何东西。
【在 g*****g 的大作中提到】 : JVM上可以跑动态和静态语言。Groovy,Clojure等等动态语言多得很。 : : JVM
|
b***i 发帖数: 3043 | 166 所以说,Java把这些工作标准化到语言里面,解放生产力,你自己写代码不需要任何特
殊的代码就可以一边调试一边修改,VC6咋整?代码错了,就得关掉,改了再运行。
另外一个Java的好东西,就是,编辑器可以方便看到任何类在那里使用过,任何方法那
里用过。
【在 x****u 的大作中提到】 : 你说的这种编译后改代码,VC6一样可以实现。 : 纯动态还是没戏的。
|
x****u 发帖数: 44466 | 167 这些东西在1998年时实现的还是很土的。
【在 b***i 的大作中提到】 : 所以说,Java把这些工作标准化到语言里面,解放生产力,你自己写代码不需要任何特 : 殊的代码就可以一边调试一边修改,VC6咋整?代码错了,就得关掉,改了再运行。 : 另外一个Java的好东西,就是,编辑器可以方便看到任何类在那里使用过,任何方法那 : 里用过。
|
g*****g 发帖数: 34805 | 168 Java其实在这方面做得不好,hotswap只能用在很小的范围内。
有一家公司叫做JRebel,做了个plugin能基本上让hotswap在所
有情况下实现。Oracle收了它放进JVM就好了。
【在 b***i 的大作中提到】 : 所以说,Java把这些工作标准化到语言里面,解放生产力,你自己写代码不需要任何特 : 殊的代码就可以一边调试一边修改,VC6咋整?代码错了,就得关掉,改了再运行。 : 另外一个Java的好东西,就是,编辑器可以方便看到任何类在那里使用过,任何方法那 : 里用过。
|
b***i 发帖数: 3043 | 169 98年dotcom还没起来呢。我说10年前崛起,就是dotcom之后,java创始团队看到java还
能干这么多阿,赶快标准化各项功能,就这么着,Java崛起了。
再举一个方便的例子:别说VC6,就是VS2010 C++也不能找到一个类的某个方法用在哪里
了。注意,这不是字符串匹配的查找,那样找会很多不正确的结果。
【在 x****u 的大作中提到】 : 这些东西在1998年时实现的还是很土的。
|
x****u 发帖数: 44466 | 170 这个找类方法调用处的功能是IDE插件的功劳,我倒是从来没用过。
【在 b***i 的大作中提到】 : 98年dotcom还没起来呢。我说10年前崛起,就是dotcom之后,java创始团队看到java还 : 能干这么多阿,赶快标准化各项功能,就这么着,Java崛起了。 : 再举一个方便的例子:别说VC6,就是VS2010 C++也不能找到一个类的某个方法用在哪里 : 了。注意,这不是字符串匹配的查找,那样找会很多不正确的结果。
|
|
|
b***i 发帖数: 3043 | 171 这对记忆不好的老年工程师可是个重要的功能。
同样VS2012, C#就有这个功能,可见C++有些设计有问题。或者是C就有这些问题,不好
解决。
【在 x****u 的大作中提到】 : 这个找类方法调用处的功能是IDE插件的功劳,我倒是从来没用过。
|
x****u 发帖数: 44466 | 172 有人研究过,C++因为没有一个基于二进制的RunTime标准,所以做这个工作的代价是需
要rebuild整个系统。
【在 b***i 的大作中提到】 : 这对记忆不好的老年工程师可是个重要的功能。 : 同样VS2012, C#就有这个功能,可见C++有些设计有问题。或者是C就有这些问题,不好 : 解决。
|
b***i 发帖数: 3043 | 173 光从源代码上查找一个方法也需要二进制标准?微软用自己的不行?我
【在 x****u 的大作中提到】 : 有人研究过,C++因为没有一个基于二进制的RunTime标准,所以做这个工作的代价是需 : 要rebuild整个系统。
|
x****u 发帖数: 44466 | 174 Windows API那么有特色的长名字,直接search就行了。
【在 b***i 的大作中提到】 : 光从源代码上查找一个方法也需要二进制标准?微软用自己的不行?我
|
d**********x 发帖数: 4083 | 175 或者组件间接口全部用c接口,只传递POD,结构alignment都一致才行。。
【在 x****u 的大作中提到】 : 有人研究过,C++因为没有一个基于二进制的RunTime标准,所以做这个工作的代价是需 : 要rebuild整个系统。
|
x****u 发帖数: 44466 | 176 如果能强迫对象都继承自一个基类,这个问题能简单不少。
【在 d**********x 的大作中提到】 : 或者组件间接口全部用c接口,只传递POD,结构alignment都一致才行。。
|
s*****n 发帖数: 5488 | 177 居然没人回答map reduce?
【在 h******u 的大作中提到】 : 看你的數據處理量。像fb或者amazon這樣大的系統(如果他們用java implement的話) : ,你會有幾十上百Gb的data stream 在等著處理。就算内存在不斷增大,需要處理的數 : 據量絕對比内存增大的速度快。
|
s*****n 发帖数: 5488 | 178 C#实现,bytearray,然后marshal object.
【在 N******7 的大作中提到】 : 这个我觉得不太一样。我们的一个系统就是这样,实时大数据量,在C/C++里可以把读 : 来的数据往一大块内存里放,然后移动指针,另一个读指针,直接按structure读。内 : 存可以不需要不断alloc和free。但以前的design在Java里不得不一个一个object的 : create。然后这些object没时间被GC,都堆在memery里,一但Full GC,就freeze : whole world,然后timeout, socket close。本来考虑也用一大块memory的方式,但那 : 样没法用structure data了。 : 不知道这种时候你用java有什么好的design没有? : : objects死 : gc,
|
h********3 发帖数: 2075 | 179 对象分配几条指令是针对大部分情况。JVM在内存管理上大部分都是不回收的。这里并
不是所有情况下,都可以做到几条指令就分配一个对象。
“以肆无忌惮地创建对象,把一切对象化”当然不是从performance-wise来说了。这句
话的意思是从程序逻辑上考虑的。内存池或者对象池那种方式,为了从performance上
考虑,却把对象的生存周期和创建逻辑搞得很复杂,其实并不是很好的设计思想。我希
望最好的程序语言是让大家只关注业务逻辑,算法逻辑,而不是底层实现的
performance。而且从Apache web server和Tomcat的对比就可以看出来,即便是很优秀
的C/C++程序员,也不见得能够写出JVM里面那样完美的内存管理。
object
【在 h******u 的大作中提到】 : "大部分JAVA的对象分配通常都是几条机器指令"有點誇張,呵呵。目前最efficient也 : 就是thread-local bump-the-pointer allocation, 就算是fast path也需要平均 12 : instructions。C/C++的memory allocation也不是一定需要freelist-based,很多 : customized的allocator就用bump-the-pointer。並且allocation的efficiency不光光 : 是通過allocation幾條指令來衡量的,還有好多好多的因素,比如説cache locality, : 同一個processor的不同threads會不會經常access同一個cache line,還有 : fragmentation等等。各種原因在一起非常複雜。 : 另外performance-wise“可以肆无忌惮地创建对象,把一切对象化”不是一個good : idea :) 現在看到很多server applications的scalability已經被excessive object : creation所限制。我們study過不少的application, 本來設計時候可以支持幾百萬個
|
m*******l 发帖数: 12782 | 180 ft. Object 啊,你们java怎么学的
basic
【在 b***i 的大作中提到】 : VC得继承某个类,java不用,任何类都可以动态生成。 : 另外,我给你举个例子,我写一个程序,解释basic语言的代码,中间一个方法我写好 : 了,外面调用的我catch了exception,然后我可以一边调试我的一个basic语言的代码, : 一边修改,假设原来代码要么出错,要么throw exception,我再输入一边刚才的basic : 的代码。C++里面,必须把这个方法用extern "C"来调用,然后必须用动态库。java本 : 身所有都是等价于动态库。
|
|
|
b***i 发帖数: 3043 | 181 不是windwos api,就是自己项目定义的类。这不就是看出来项目大小了,超过几万行
,怎么看类哪里用了,方法哪里用了?
【在 x****u 的大作中提到】 : Windows API那么有特色的长名字,直接search就行了。
|
m*******l 发帖数: 12782 | 182 JVM里面的完美的内存管理难道不是C++程序员写的?
【在 h********3 的大作中提到】 : 对象分配几条指令是针对大部分情况。JVM在内存管理上大部分都是不回收的。这里并 : 不是所有情况下,都可以做到几条指令就分配一个对象。 : “以肆无忌惮地创建对象,把一切对象化”当然不是从performance-wise来说了。这句 : 话的意思是从程序逻辑上考虑的。内存池或者对象池那种方式,为了从performance上 : 考虑,却把对象的生存周期和创建逻辑搞得很复杂,其实并不是很好的设计思想。我希 : 望最好的程序语言是让大家只关注业务逻辑,算法逻辑,而不是底层实现的 : performance。而且从Apache web server和Tomcat的对比就可以看出来,即便是很优秀 : 的C/C++程序员,也不见得能够写出JVM里面那样完美的内存管理。 : : object
|
m*******l 发帖数: 12782 | 183 好贴,虽然道理大家都明白,但是说出来这样的,没有经验是不行的.
而且你的贴子其实就是说好的C++才能成为好的JAVA程序员
java
management
region
【在 h******u 的大作中提到】 : 要看什么样的 application?不是什么程序都好fix的。并且,我前面主要在讲用java : 实现的 : data-processing system,例如hadoop,Giraph,Hyracks之类,不是简单query db的程序 : 。这些大程序往往需要在5G的memory上面处理500G的data stream,如果你看到所有的 : interface都需要object, 这个程序很难去大大的优化。object pooling是一个很ad- : hoc的pattern,并不能fundamentally解决object带来的 overhead。一个很关键的做法 : (现在很多系统都在用),就是不让系统里面object的数量随着数据量线形增长,否则 : 不可能scalable。怎么办,Hyracks用了这种做法:用buffer-based data management : 。创建大的buffer,把数据放在buffer里面,而不要create小objects。 类似于region : -based memory management。 只有data processor (比如hash function, sorter,
|
m*******l 发帖数: 12782 | 184 VS 2010, VS2012的已经非常不错了
F12的反向已经非常不错了
【在 x****u 的大作中提到】 : 这个找类方法调用处的功能是IDE插件的功劳,我倒是从来没用过。
|
m*******l 发帖数: 12782 | 185 这个是managed的优势
【在 b***i 的大作中提到】 : 这对记忆不好的老年工程师可是个重要的功能。 : 同样VS2012, C#就有这个功能,可见C++有些设计有问题。或者是C就有这些问题,不好 : 解决。
|
d**********x 发帖数: 4083 | 186 软件有对各部分组件行为的先验知识啊。。。
【在 x****u 的大作中提到】 : 你软件怎么预测?
|
b***i 发帖数: 3043 | 187 所以说,完美后标准化,就不用管了。谁自己装配一辆车?直接买了就开了。
【在 m*******l 的大作中提到】 : JVM里面的完美的内存管理难道不是C++程序员写的?
|
h********3 发帖数: 2075 | 188 从Java 1.4之后,JVM里面的内存管理技术和优化技术,融入了很多前沿的研究成果。
很多成果还被专利保护起来。一般不是做优化这块的Researcher,根本写不出来。我们
不能说,只有做内存管理优化的Researcher才是优秀的C/C++程序员吧。
【在 m*******l 的大作中提到】 : JVM里面的完美的内存管理难道不是C++程序员写的?
|
g*****g 发帖数: 34805 | 189 术业有专攻,现代大型软件是层层抽象的结果。每个层都有难点。比如写JVM的C/C++程
序员
不用考虑整个cluster结点之间通信,failover这些东西。哪个更难,本来跟苹果跟桔
子哪个
更好吃差不多。
但是有人觉得我写得底层,所以我牛逼,见到写Java的鼻子朝天,见到写汇编的就不好
意思出来打招呼。
【在 h********3 的大作中提到】 : 从Java 1.4之后,JVM里面的内存管理技术和优化技术,融入了很多前沿的研究成果。 : 很多成果还被专利保护起来。一般不是做优化这块的Researcher,根本写不出来。我们 : 不能说,只有做内存管理优化的Researcher才是优秀的C/C++程序员吧。
|
z*******3 发帖数: 13709 | 190 而且貌似提升的幅度很大
Java 5 <=== 18% faster=== < Java 6 < ===46% faster===< Java 7
Read more:
http://geeknizer.com/java-7-whats-new-performance-benchmark-1-5
【在 h********3 的大作中提到】 : 从Java 1.4之后,JVM里面的内存管理技术和优化技术,融入了很多前沿的研究成果。 : 很多成果还被专利保护起来。一般不是做优化这块的Researcher,根本写不出来。我们 : 不能说,只有做内存管理优化的Researcher才是优秀的C/C++程序员吧。
|
|
|
b***i 发帖数: 3043 | 191 就是,工作在哪个领域,就说明社会需要哪个领域的人才。
我一个同学学计算机的,后来研究集成电路设计了,就看不起做软件的了。还有一次去
招聘会,看到AMD的招聘的人,跟他聊,他说他们那个组是“做半导体工艺的,那才是
真正的做芯片。”他就觉得连芯片设计的都没做正经事。
【在 g*****g 的大作中提到】 : 术业有专攻,现代大型软件是层层抽象的结果。每个层都有难点。比如写JVM的C/C++程 : 序员 : 不用考虑整个cluster结点之间通信,failover这些东西。哪个更难,本来跟苹果跟桔 : 子哪个 : 更好吃差不多。 : 但是有人觉得我写得底层,所以我牛逼,见到写Java的鼻子朝天,见到写汇编的就不好 : 意思出来打招呼。
|
c*********e 发帖数: 16335 | 192 都是混饭吃。
【在 b***i 的大作中提到】 : 就是,工作在哪个领域,就说明社会需要哪个领域的人才。 : 我一个同学学计算机的,后来研究集成电路设计了,就看不起做软件的了。还有一次去 : 招聘会,看到AMD的招聘的人,跟他聊,他说他们那个组是“做半导体工艺的,那才是 : 真正的做芯片。”他就觉得连芯片设计的都没做正经事。
|