免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
211 [报告]
发表于 2009-03-26 12:53 |只看该作者
原帖由 prolj 于 2009-3-26 12:36 发表
能不能顺便把D语言也牵扯牵扯?


全看您老人家了,最近研究啥呢

论坛徽章:
0
212 [报告]
发表于 2009-03-26 12:54 |只看该作者
c++写cgi算不算网站? 另外WT就是一个C++的网站框架...

论坛徽章:
0
213 [报告]
发表于 2009-03-26 12:55 |只看该作者
原帖由 xWander 于 2009-3-26 12:54 发表
c++写cgi算不算网站? 另外WT就是一个C++的网站框架...


c自己写面向对象的程序,汇编写面向对象的程序,仰仗你的功力了

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

这个也是上面 艾斯尼勒 提到的, 是否设计本身有不恰当的地方?




java里面的OO设计, 可以原封不动的改写到C++中。
所以就OO设计来说, java并不强于C++。

如果你在C++中的设计, 会导致上面说的 ...


俺个人觉得,OO最终会从设计类回归到C风格的语义分析上来。类由代码生成器生成,而不是由人去直接设计。是不是那个叫AspectJ的玩意儿就是做这个的,听老师提过,没记清楚,AOP什么的

论坛徽章:
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
215 [报告]
发表于 2009-03-26 13:06 |只看该作者
安全剃刀是一种工具,它限制了裸露的刀片的锋芒,于是你可以很随意的用它来对付胡须——当然,它仍然可能伤到皮肤;但不可否认,它毕竟是比裸露的刀片安全便利许多。

所以,安全剃刀称得上是一项伟大的发明。


剃刀则是另一种工具。它仍然可以对付胡须,但不熟练时容易伤到自己;相比安全剃刀,它还能用来裁纸、削果皮,在旧时代做手术刀用,它还能做其他很多很多事——可怕的是,拿它来杀人也极其方便。



用安全剃刀的,自然不会去把剃刀灭绝,更不会劝说那些买了剃刀的家庭把那种“锋利的凶器”销毁。

同样,用剃刀的,也不会去批评用安全剃刀的胆小、娘娘腔。

在财力许可的情况下,同时选择两个,显然更为合算。


当然,我说的是C++和Java。

——————————————————

事实上,上面的比喻并不恰当。因为计算机的世界很大很大。


只是:
当一个人“沉迷”于简单web编程时,自然想不到Java的世界有多大——算法和数据结构还有所谓的编程模式?谁用得着它。


同样,用惯了Java,很多人就以为世界和Java一样大,进而以为其它一切‘牛鬼蛇神编程语言’都应该淘汰,都应该拜倒在Java的脚下。

由于jvm的隔离,Java取得了跨平台便利的同时,也导致其本身的封闭,以至于那些本该、且必须被利用的硬件被Java群体选择性无视——无视了GPU,无视了PPU,无视了far cry。

一个图像处理算法,利用了90年代老掉牙的MMX便可以直接提高8倍速率。
但是否开启MMX,是任何编译器所无能为力的。
因为,MMX本身就意味着精度损失(编译器敢自作主张替你选择近似算法吗),意味着使用不当将反而大幅度降低性能。

同时,一个必须在有MMX指令集的CPU和/或DX10显卡上才能跑的Java应用——有点不可想象吧?



所以说,为了抹平平台差距,Java必须付出很多很多;多到很多时候都根本无法承受。

更坏的是,Java绝不会宣传这一点。别人不提,众Javar自然也乐得无视。
——无视了GPU,无视了PPU,无视了far cry,无视了无数人投入大量资金添置的昂贵硬件。

一旦要支持这些——甚至仅仅是要和其他语言“协同作战”——不能说Java绝对做不到,但要说“基本上不值得做”恐怕也不能算太夸大。



——引用下某大牛的一句话: Java并非平台无关。JVM就是平台。
——而我要补充的是,JVM不仅是平台,它还是个很排外的平台。

这种排外不仅仅表现在对待那些不寻常硬件的支持上,也表现在和其他语言的协作上。
甚至于,这种排外,也表现在很多Java使用者的身上,他们令人反感甚至厌恶。

相比之下,C#虽然是微软的私有玩物;但至少它不会排斥其他语言(微软一贯都很重视托管和非托管代码间的交互)。


跳出JVM的小圈子,外面的天地很大。


此外,Java还是一个“纯种”的OO语言——但在技术界,纯种只意味着限制。
比如另一个著名的“纯种”的结构化程序设计语言Pascal:大量程序员在课堂上学习它,很少有程序员愿意在工程中使用它。

事实上,虽然拼命热炒,但OO并不成功。除了游戏以及一些特殊领域,使用它并没有明显好处,甚至可能是事倍功半。



当然,虽然有种种缺憾,但Java不愧为一种优秀的语言。这只要看它在种种限制下仍然能够达到现在这个高度便可以看出。


一句话: Java是一种好工具,但它不是整个计算机世界——远远不是。


当然,我的意思并不是说c/c++就是整个计算机世界。
只是,C/C++从不会像Java那样自我封闭——它下不排斥汇编甚至机器码;中不排斥诸如PRO*C、CUDA之类扩展;上不排斥Java、LUA、perl等等脚本语言。

——事实上,其他传统语言彼此间也都不存在排斥现象;相反,几乎每一门传统语言都会提供与C交互的手段,起码也能生成标准格式的二进制静/动态库。

除了Java。

事实上,由于JVM平台的缘故,Java天生就是排他的、拒绝和其他语言协作的。
我不知道这是不是Javar喜欢攻击C/C++的原因(呵呵,开个玩笑^_^)




事实上,C/C++的强大,就在于它的开放性、包容性。

我亲眼见过有高人用Delphi写的一个底层图形库,可以自动根据CPU切换最优算法——Borland编译器编译出的二进制代码,绝不会比同时期的C++编译器差太多。
Delphi的失败,很大程度上就在于它是Borland的私有标准。这决定了它不可能像C/C++那样拥有“语言大师”——据说C/C++是世界上唯一有语言大师的编程语言。

没有真正开放的标准,是不会有人穷究语言的每个细节的;没有这样的大师,一门语言的潜力也就不可能被真正挖掘出来。

C语言很简单——32个关键字,48个运算符,如此而已。C++要复杂一些,但真正独有的东西并不多,很多特性还是从其他语言那里借鉴来的。

但只有C/C++可以充分发挥优秀程序员的全部实力。
无它,标准开放,可以无限制的深入研究下去,如此而已。


————————————————————
前面说了,Java是计算机世界的很小一部分;C/C++也远不是整个计算机世界。

那么,也许有人会问了,那什么是整个计算机世界?
C?
C++?
汇编?
机器码?
再加上Java?
再加上其他各种语言?
再加上操作系统?
再加上各种算法、理论?

都不是。
计算机世界比以上种种全部加起来,还要大上很多。


不信的话,请用google搜索下这个数字: 0x5f3759df

如果你以为这就是计算机世界的边界,那么不妨再去看看遗传算法——然后重新读一遍进化论。

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

刀子切到手, 你总不能怪它太锋利吧
怕锋利就用陶瓷剪刀呗。 就是很多东西切不动就是了。



绝妙!!

论坛徽章:
0
217 [报告]
发表于 2009-03-26 13:14 |只看该作者
原帖由 reiase 于 2009-3-26 12:57 发表


俺个人觉得,OO最终会从设计类回归到C风格的语义分析上来。类由代码生成器生成,而不是由人去直接设计。是不是那个叫AspectJ的玩意儿就是做这个的,听老师提过,没记清楚,AOP什么的


AOP思想目前比较流行的JAVA实现就是所谓的spring。AOP是“OO最终会从设计类回归到C风格的语义分析上来”的一个表象,个人觉得不谈不上。

“类由代码生成器生成,而不是由人去直接设计”,OO用来将业务世界映射到程序世界,代码生成器就是一个翻译器,没理由相信人们会使用一个与人类思维习惯不协调的模型,来生成一个与自我思维习惯更接近的模型。

论坛徽章:
0
218 [报告]
发表于 2009-03-26 13:16 |只看该作者
原帖由 shan_ghost 于 2009-3-26 13:06 发表
————————————————————
前面说了,Java是计算机世界的很小一部分;C/C++也远不是整个计算机世界。

那么,也许有人会问了,那什么是整个计算机世界?
C?
C++?
汇编?
机器码?
再加上Java?
再加上其他各种语言?
再加上操作系统?
再加上各种算法、理论?

都不是。
计算机世界比以上种种全部加起来,还要大上很多。


赞一个!我觉得shan_ghost 的比喻和评价是很中肯客观的。
事实上,由于JVM平台的缘故,Java天生就是排他的、拒绝和其他语言协作的。
我不知道这是不是Javar喜欢攻击C/C++的原因(呵呵,开个玩笑^_^)


没有人排c++,学计算机都会学习计算机原理,汇编,c,c++,一步一步来的,我看不怪的就是c++就是一切语言王,什么都能干了,高效,鄙视其他的,抛弃了设计者原来的包容的思想,不原意承认别的语言的优点,老拿自己的优点和别人的缺点比较的一部分c++人

[ 本帖最后由 everlasting_188 于 2009-3-26 13:25 编辑 ]

论坛徽章:
0
219 [报告]
发表于 2009-03-26 13:21 |只看该作者
原帖由 shan_ghost 于 2009-3-26 13:06 发表 [url=http://bbs2.chinaunix.net/redirect.php?goto=findpost&pid=10284287&ptid=1406918]——无视了GPU,无视了PPU,无视了far cry,无视了无数人投入大量资金添置的昂贵硬件。


你如果一定要在Java里面使用GPU,那你可以使用JGPU,JVM留下的JNI接口就是操作系统/硬件 跟Java之间的桥梁,你觉得少了什么东西完全可以自己加。
至于开放性,Java已经完全开源了,还有比这更开放么?

论坛徽章:
0
220 [报告]
发表于 2009-03-26 13:23 |只看该作者
原帖由 yovn 于 2009-3-26 13:21 发表


你如果一定要在Java里面使用GPU,那你可以使用JGPU,JVM留下的JNI接口就是操作系统/硬件 跟Java之间的桥梁,你觉得少了什么东西完全可以自己加。
至于开放性,Java已经完全开源了,还有比这更开放么?


个人觉得开源和开放是两个几乎扯不上边的概念。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP