免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: art_codes
打印 上一主题 下一主题

[C++] 确认一下c++中不能使用interface(如java)那样的功能把 [复制链接]

论坛徽章:
0
191 [报告]
发表于 2009-03-26 10:22 |只看该作者
原帖由 OwnWaterloo 于 2009-3-26 09:57 发表


我提jvm是用c/c++写的, 确实不是一个充分论述 “java无法利用多核优势” 的论据。
java对并行操作的封装, 阻碍了理解。 这个没错吧?

阻碍了理解?我倒觉得你的理解很有问题
1.我们看看线程支持?Java本身就有原始线程的支持。(当然,除非操作系统本身不支持)
2.再看看现有的并行编程库,Intel的TBB库是给C++用的,号称很高效了吧,也是在原始线程上抽象出一个基于任务的并行库,拿它和Java的Fork/Join比较一下,没发现TBB有什么先进的思想,原理都是实现更细粒度的并行性。
3.synchronize 是Java提供的一种快捷方式,像你这么“爱思考”的人应该学会掌握Java的Concurrent Library.信号量,读-写锁等等应有尽有。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
192 [报告]
发表于 2009-03-26 10:25 |只看该作者
原帖由 aaronvox 于 2009-3-26 09:40 发表
HI 兄弟们,能否把.net C#也连带比较一下,毕竟他也是主流语言,接口实现的也不错。

原帖由 aaronvox 于 2009-3-26 09:40 发表
比较Python和Perl,会引起很多纷争


这里纷争够多了 ……  不该提perl和python……

C#我蛮喜欢的 ……  比对java有爱得多 ……
理由上面也说了, 他的设计者是在为开发人员着想,实实在在的提供便利,与表达思想的能力

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
193 [报告]
发表于 2009-03-26 10:31 |只看该作者
原帖由 yovn 于 2009-3-26 10:22 发表
3.synchronize 是Java提供的一种快捷方式,像你这么“爱思考”的人应该学会掌握Java的Concurrent Library.信号量,读-写锁等等应有尽有。



抓到我把柄立马反击 ……  哎 ……

嗯, 我确实不知道java有Concurrent Library, 还有信号量,读-写锁这些东西。

我再解释清楚一点。

学java的人, 即使知道上面那些高级货。
它们到底是如何运作起来的???

而学c/c++的人, 一开始就知道, 这是os提供的api实现的。(也就是你上面说的“除非os不支持”的原因)
如果他们想更进一步, 他们可以继续了解, os是如何利用cpu提供的机制来实现api的。(我坦白, 我还没到这一步。 但是, 我已经比你更清楚,不是os不支持, 而是cpu不支持)。

学java的, 也可以到这一步。 但是大多数时候不需要, 也没多少喜欢到这一步。

论坛徽章:
0
194 [报告]
发表于 2009-03-26 10:45 |只看该作者

回复 #195 OwnWaterloo 的帖子

你怎么还在坚持战斗,强悍 ^_^

现在倒真有点你马甲的味道,拿破仑和威灵顿在滑铁卢大战 ^_^

论坛徽章:
0
195 [报告]
发表于 2009-03-26 10:45 |只看该作者
原帖由 OwnWaterloo 于 2009-3-26 10:31 发表



抓到我把柄立马反击 ……  哎 ……

嗯, 我确实不知道java有Concurrent Library, 还有信号量,读-写锁这些东西。

我再解释清楚一点。

学java的人, 即使知道上面那些高级货。
它们到底是如何运 ...



确实是不想让你知道其所以然的,封装就是要的这个。JAVA是针对虚拟机的编程,理解虚拟机到底怎么工作的对于写java来说必要性并不是很大。徒增烦扰而已。
比方说,OS提供了线程,是如你所讲因为cpu提供了,那么cpu怎么提供线程机制的?是不是你也要去研究透中断、仲裁、时间片、RS触发器?程序员不是科学家,还干活不了?

好了,这个帖子我今天不再参与了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
196 [报告]
发表于 2009-03-26 10:49 |只看该作者
原帖由 艾斯尼勒 于 2009-3-26 10:45 发表



确实是不想让你知道其所以然的,封装就是要的这个。JAVA是针对虚拟机的编程,理解虚拟机到底怎么工作的对于写java来说必要性并不是很大。徒增烦扰而已。
比方说,OS提供了线程,是如你所讲因为cpu提供了 ...


但是要利用多核,  这是不得不去考虑的事啊。。。

论坛徽章:
0
197 [报告]
发表于 2009-03-26 10:50 |只看该作者
原帖由 OwnWaterloo 于 2009-3-26 10:31 发表



抓到我把柄立马反击 ……  哎 ……

嗯, 我确实不知道java有Concurrent Library, 还有信号量,读-写锁这些东西。

我再解释清楚一点。

学java的人, 即使知道上面那些高级货。
它们到底是如何运 ...

你如果坚持认为CPU不支持,那我就没什么好说的了

论坛徽章:
0
198 [报告]
发表于 2009-03-26 11:14 |只看该作者
JVM的线程能力从一开始就是比较强的,这一点python,perl,php等虚拟机至今都没能实现真正意义上的线程并行。
虚拟机是更高等级的抽象,让程序员很大程度上脱离了操作系统,大大方便了开发和移植。
java因为其深厚的积累和影响很长一段时间将保持主流,动态语言肯定会有更多的应用,C/C++进一步专业化。

论坛徽章:
0
199 [报告]
发表于 2009-03-26 11:43 |只看该作者
原帖由 nutcracker 于 2009-3-26 07:20 发表
这种帖都加精……中国的技术社区也就只有这种帖能热起来了,SY强身YY强国啊.

JAVA比C++易学?不见得吧?再说就算JAVA比C++简单又如何?一边用着现代的x86架构PC,还有各种各样的IDE或RAD,却又一边说代码工人如何如 ...


很可惜,我们用的机器并不全是x86架构。我承认我贪图方便,能用IDE就用IDE,但没有IDE你就给我一个Notepad,或者gEditor我一样开发。IDE是协助开发的,但并不是没了IDE就不能开发。RAD?商业另说,因为公司的规范对个人来说是不可抗力。但对个人而言,只有自己写着玩的小程序才会用RAD。

如果你要提OO的话,那请也提一下其他的。请不要让未明真相的围观者以为C++是OO的语言。C++支持OO,但他还支持别的:ADT、OP、GP,以及期望中的functional。
Java啊,那还是OO吧~~~

PS:你告知了围观的群众部分的事实(Java与C++的OO),但是你却对其它的事实(C++的GP、ADT、OP等)避而不谈,算不算是(下意识的)误导视听?只比Java擅长的,不比Java短缺的,任何一个物件的Fans都会以这样的方式来捍卫自己所喜爱的物件。

[ 本帖最后由 swxlion 于 2009-3-26 11:44 编辑 ]

论坛徽章:
0
200 [报告]
发表于 2009-03-26 11:48 |只看该作者
原帖由 OwnWaterloo 于 2009-3-26 08:57 发表


老弟老弟, 显然是老弟, 小菜鸟一个~~~
今天刚满23

嗯,  还差几个小时,  目前22。



哈哈,生日快乐~~~!:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP