免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
241 [报告]
发表于 2009-03-26 17:35 |只看该作者
原帖由 reiase 于 2009-3-26 16:09 发表

成员函数呢!!!


很好,三个感叹号,我喜欢。

谁告诉你C++写的类必须有类成员变量!!!谁告诉你C++写的类成员函数必须操作类成员变量!!!
我写一个类,目的只是为了将这一堆功能放在一个地方,又有何不可!!!

论坛徽章:
0
242 [报告]
发表于 2009-03-26 17:38 |只看该作者
原帖由 reiase 于 2009-3-26 16:10 发表


语义最符合人的思维习惯吧,OO才是抽象


哦,你说的是未来啊。我想有一天我自己没事写了本梦想中的武侠小说,拿给机器一读,就成了一个梦想中的网络游戏。

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
243 [报告]
发表于 2009-03-26 18:01 |只看该作者

回复 #243 yovn 的帖子

呵呵,别把 硬件 二字漏掉。尤其是用了JNI的时候,尤其是JNI的提供厂商不同的时候——用JNI来支持PPU,你我的实现肯定不能一样;将来JAVA自己推出支持模块了,肯定又和我们的实现有所不同。

有JNI硬件支持规范吗?微软已经闯过一次DLL地狱了,不知JAVA是否准备搞个新的JNI地狱?


另外,很多时候是不能容忍进程间通信的低效率的——能否用Java轻易编译出来一个.so文件,与C/C++生成的.o文件连接起来、并在C/C++中直接调用Java的方法?

语言好坏。比如编写游戏情节脚本,C/C++就是最差的(这么做的设计师肯定脑子里进了不少水);不过幸亏还有LUA,两者很简单就协作起来了——而在这点上,Java毫无疑问是最差的语言之一。


事实上,你多翻翻C/C++版的帖子,看看各位版主的shell脚本功底如何——这些脚本,很容易就能成为C/C++的一部分。这就是开放。

同样,Java可谓形势严峻——进,攻不下C++等传统编译型语言的地盘;退,不如传统强势脚本语言之便利;背后还有身手不凡的C#携.net之威虎视眈眈——但,你见过cpper出来说Java前途无光吗?见到cpper跑Java论坛踢馆子吗?

你看到我的哪一句话,是在毫无根据的“一味否定Java”?



封闭就容易导致傲慢和狭隘。

如果说,C/C++程序员的心智障碍是字斟句酌、锱铢必较、事事都要打破沙锅问到底的话,Java带给程序员的心智负担,或许就是封闭和狭隘。

论坛徽章:
0
244 [报告]
发表于 2009-03-26 18:03 |只看该作者
原帖由 shan_ghost 于 2009-3-26 17:16 发表
呵呵,没关系。争论嘛,擦枪走火很正常。那么多字,看错在所难免

opengl是一个开放标准,任何平台都可以实现——当然不一定有。

只要有opengl,理论上DX 3D可以提供的,open gl都可以 ...


话说这个也不能怪java封闭,它要跨平台(说平台无关也好,统一平台也好,我们暂且当成一个意思)就只能这么搞啊

关于多语言协作的事情,Sun没有搞,java社区有搞。

关于wpf的问题我不太了解,不过其实也是一样,java的目标限定了它能作的就得是所有平台都能作的--最大子集。现在某个平台上没有的,就只能用jni去作。让java去无中生有的基本是不可能了,貌似只有个多线程是特例。

其实我跟楼上的看法差不多,不想说java比什么什么强,只是看java被贬的厉害进来平反而已。貌似有套牢的迹象。。。。

反过来说微软,.net是成功的,不过话说微软有啥不成功的么?还真少。微软的市场策落现在其实很恶心:
牢牢把握稳固的桌面市场,利用桌面市场的巨大优势继续讨好最终用户,从而逼迫网站运营商们和其他小技术公司去使用微软的版权独享技术,还给颗甜枣--我公开为标准,只是标准噢!版权可还是我的!我没放弃。这样别人就不好说我垄断了。.net就很明显CLI是标准CLR是CLI的微软版实现。反正我d3d版权也在握其他要用到的版权也在握,不怕你弄到别的平台上去!就算现在有mono,有谁会用在实际项目中呢?最后还不是得回来我的CLR+windows?

而从技术上说,.net的开放其实都是对微软自身技术的开放,语言都是标准的,你们爱用哪个我不管。但编译你得有VS运行你得有CLR平台还是windows。这样就垄断了开发界,开发界被垄断了用户还有别的选择么?先诸java 再灭克思 唯我微软 IT称王!

java这点就是干不过.net,Sun摇摇欲坠自顾不暇,就算搞的好的时候在桌面市场也照样撼动不了微软的地位。用户喜欢的玩意儿版权都在微软手上!它不开放别的平台就没,别的平台没java就没,java没就不讨好开发人员,开发人员不喜欢就转去微软。

虽然有些言过其实,但微软策略大抵于此。另外老兄你觉得C++能干过C#么?

我不喜欢C++是还在我很讨厌java的时候的就这样了,那时也根本不懂java只是觉得慢。虽然我其实挺喜欢C的

论坛徽章:
0
245 [报告]
发表于 2009-03-26 18:13 |只看该作者
原帖由 shan_ghost 于 2009-3-26 18:01 发表
呵呵,别把 硬件 二字漏掉。尤其是用了JNI的时候,尤其是JNI的提供厂商不同的时候——用JNI来支持PPU,你我的实现肯定不能一样;将来JAVA自己推出支持模块了,肯定又和我们的实现有所不同。

有JNI硬件支持规 ...


呵呵,Yovn说的不是你贬低java
不过跑到java版挑衅的cpper我确实见过。都是新手C功力都未必比的上我,C++我确实不灵

像这帖最后衍变成这样的貌似没有。

java近几个版本之内都根本没可能搞得定C/C++传统营地的。运行机制就决定了。
作底层不灵,作游戏不灵的。
这是我对java的定论

论坛徽章:
0
246 [报告]
发表于 2009-03-26 18:26 |只看该作者
原帖由 shan_ghost 于 2009-3-26 18:01 发表
呵呵,别把 硬件 二字漏掉。尤其是用了JNI的时候,尤其是JNI的提供厂商不同的时候——用JNI来支持PPU,你我的实现肯定不能一样;将来JAVA自己推出支持模块了,肯定又和我们的实现有所不同。

有JNI硬件支持规 ...


1.JNI实现的方式很灵活,可以是动态库的,也可以是静态库的,是虚拟机实现的标准,不是厂商要实现的标准,所以你的硬件兼容我不是很明白你指什么


2.
另外,很多时候是不能容忍进程间通信的低效率的——能否用Java轻易编译出来一个.so文件,与C/C++生成的.o文件连接起来、并在C/C++中直接调用Java的方法

这点我倒是可以肯定地告诉你,可以,而且我做过类似的。JNI有两部分,一部分是Java call Native method,一部分就是C/C++ 的Invocation API,C++创建私有的JVM,然后调用Java正常的需求。

3.
事实上,你多翻翻C/C++版的帖子,看看各位版主的shell脚本功底如何——这些脚本,很容易就能成为C/C++的一部分。这就是开放


同样也很容易成为Java的一部分,Java的脚本解释功能本就不弱,BeanShell,Javascript,Ruby,PHP,Pyhon等等都有对应的实现,另外从Java6开始有很标准的动态语言接口。


你看到我的哪一句话,是在毫无根据的“一味否定Java”?

至于这句,艾斯尼勒 老兄都知道我的意思了,不是针对你

论坛徽章:
0
247 [报告]
发表于 2009-03-26 19:02 |只看该作者
我觉得讨论到这个地步,其实无关乎语言的问题的了,语言只是工具,合理选择工具,合理随使用,这是我们程序员应该做的事情,不能因为不懂就互相贬低别的语言。
nutcracker 该用户已被删除
248 [报告]
发表于 2009-03-26 19:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
249 [报告]
发表于 2009-03-26 19:57 |只看该作者

回复 #6 OwnWaterloo 的帖子

看来这位的C++和Java水平已经达到了一定 境界了,ym

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
250 [报告]
发表于 2009-03-26 20:11 |只看该作者
呵呵,其实我是很欢迎Java或别的什么语言取代c/c++的,只要它有这实力。

甚至可以说,Java刚推出那时候,整个c/c++社区几乎是万众一心,等待它取代C++的。

可惜,它没做到。
不光没做到,还变得热衷于耍嘴皮子了,喜欢到处吹嘘自己比c++快什么的,好像它就是当之无愧的王者一样。



事实上,关于JVM的封闭性问题(这个问题也是近年才有所好转),以及.net等问题,我其实一向也是懒的关心——倒是对JIT很感兴趣,认为那是将来的必然趋势。


所谓WPF,其实是微软的下一代GUI接口(当然,写游戏还是不能用这个,效率问题仍然没解决);最近热炒的、要取代flash的silver light就是它的一个子集——GUI接口的子集都有叫板flash的实力,由此也可见这个GUI接口的设计是如何的强大和成功。


互联网的出现,导致对软件跨平台能力的需求变得急迫起来;而web页面很容易就能流行开,进而成为事实上的工业标准。Java就是抓到这个空子发展起来的——不是因为这门语言设计得有多成功,而是这门语言依托的那个中间语言+JIT的设计太成功了。


事实上,操作系统也有个posix标准。记得WIN NT就有个posix子系统,号称可以兼容符合posix标准的unix代码,但似乎并没有被人接受——这或许就是微软的跨平台尝试。

但他走错了路。unix并不仅仅是一些API标准,它还包括大量的脚本以及其他配套程序——包括那个很无厘头的yes。这和Windows平台的设计风格格格不入。


微软确实狠。sliver light如何?很轻量级,而且仅仅是个基于xml的标准。很容易就能扩充出支持,但——没有3D。

借助IE的垄断地位,其他系统无论如何也得支持sliver light。这就是第一步。


至于C#能否取代C/C++,至少在微软目前的架构里是不可能,也没有这种迹象——即便有操作系统的支持,有的和硬件关系密切的东西也不是虚拟机所能搞定的。

事实上,和Java不同,微软根本没有消灭C/C++的必要(sun也没打算消灭C/C++)。

因为Java是一套独立的平台——而且在初期它显然是想吃独食的,所以即便c/c++以及其他语言都可以编译成JVM中间语言,sun也不允许这样做。甚至就连Java标准他都要紧紧捏在手中。
如果不是这样,而是从一开始就允许C/C++以及其他语言编译成JVM中间字节码的话,恐怕JVM早成事实上的工业标准了。
当然,如果这样做了,那么sun也就失去了靠卖Java以及相关库、解决方案等等大把捞钱的机会。
所以,尽量多吃掉包括C/C++在内的其他所有编程语言的市场,对sun来说是最优策略。
——显然,sun也根本就没打算消灭C/C++,他只想尽量扩大市场份额,如此而已。

对微软来说,他担心的是自己在操作系统方面的垄断地位受到挑战——所以他不担心Java,只担心虚拟机;他不担心程序员不喜欢C#,只担心程序员喜欢Linux或其他什么。
所以,只要有人愿意用他的CLI,不管是用什么语言,他就很满足了。
毕竟,vc也是他的拳头产品。


事实上,C/C++的市场份额虽然降低不少,但它的实际影响力丝毫未减。这从Java初期号称C++--,微软的C#也沿用C/C++风格(甚至就连名字都要刻意和“已经日薄西山的C/C++”扯上关系)就看得出来。

事实上,不管吹得有多厉害,不管是微软还是sun,都明明白白知道,C/C++的地位是不可撼动的——这么多年了,Java的定位有所改变吗?微软新设计的C#的定位又如何?

说白了,微软和sun这么做,都不过是为了拉那些学了些C/C++、但没必要(或没能力)用它们的那帮人过去——看吧,很像C++吧?而且没有吓人的指针!
——微软和sun都不傻,他们从来没有向那些必需C/C++的领域里伸过哪怕一根手指头;但有些人被他们忽悠傻了。就这么简单。


所以,争吵语言的优劣确实毫无意义,尤其是很肤浅的纠结于几个公说公有理、婆说婆有理的特性上面的时候(甚至是拿JIT出来吓唬cpper的时候 )。

但另一方面,正确认识一门语言确实有必要——不光要知道其利,还要知道其弊,最终还要找到适用范围。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP