免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
181 [报告]
发表于 2009-03-26 09:54 |只看该作者
原帖由 reiase 于 2009-3-25 22:19 发表
1. Java是很高效的语言,这个问题在本版讨论过
http://bbs.chinaunix.net/viewthread.php?tid=1291900


高效?  搞笑吧??

我看了你给的那个链接, 但是页面中的链接就没再去看了。
这种噱头都看腻了。 希望你不要被那些商家所蒙蔽

曾经还有人得出c++效率不如一门什么脚本语言来着。
他用cygwin编译出的东西跑。  你觉得这能说明什么?
那些链接里是否也是这样?



你提到局部性原理。 那么很简单的道理。

vector< int >和 vecotr< int* > 谁得局部性更好??

确实, java的堆分配策略, 也许可以使得 Integer 是连续排放的。 但是 sizeof(Integer) 必然比 sizeof(int) 大得多。

再看
f() {
  vector< int > v;
}


f() {
  vector< int* > *pv;
}
谁得局部性更好???


如果要说jit运行时根据cpu优化, c/c++同样可以根据特定的cpu编译。
c和c++的效率要看代码质量, 可以说是不相上下的。 同时c++有更好的抽象性。
如果要在c中实现 动态范型数组, 效率显然是在vector< int >之下。

java和clr 和c/c++比效率就是没前途了。

[ 本帖最后由 OwnWaterloo 于 2009-3-26 10:19 编辑 ]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
182 [报告]
发表于 2009-03-26 09:57 |只看该作者
原帖由 reiase 于 2009-3-25 22:19 发表
2. ”jvm是拿C/C++写的“是一个无敌论点,C/C++还是拿asm写的呢


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

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
183 [报告]
发表于 2009-03-26 09:59 |只看该作者
原帖由 reiase 于 2009-3-25 22:19 发表
3. 有一句话“稀缺性早就高价格”,作为技术人员,我希望我的技术是稀缺的技术。但是,以稀缺证明自身价值是可悲的。一旦稀缺性被打破,你岂不摔得很惨


在那之前, 不掌握稀缺技术的人, 会更加惨, 不是么?

所以, 真正要掌握的不是稀缺技术, 而是思想。
这也正是我反复说java不好的地方,  因为通过它能学到的思想太少。

论坛徽章:
0
184 [报告]
发表于 2009-03-26 10:00 |只看该作者
原帖由 aaronvox 于 2009-3-26 09:40 发表
HI 兄弟们,能否把.net C#也连带比较一下,毕竟他也是主流语言,接口实现的也不错。


不是很了解,只大概看了一点点。命名风格我很不喜欢alias我不太能接受,刚接触的时候感觉很像java。我只能说这些

OWL喜欢,让他多说点吧

虽说有mono,但在cu讨论.net还是有些奇怪吧

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


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


他提倡的就是你不用去理解,能用就好。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
186 [报告]
发表于 2009-03-26 10:05 |只看该作者
原帖由 reiase 于 2009-3-25 22:19 发表
4. Java是一门设计来用的语言,C++是一门能有啥特性就往里塞什么特性的语言,听说最近C++也开始玩functional了


c++玩functional不是最近的事
打c++之父把 调用操作符 加入c++之时,  c++就已经部分支持functional了。

algorithm中的一半函数模板, 全是high-oder-function。
functional中的函数模板, 也全是high-oder-function。
每一个functor, 也是一个closure。
std:: bind1st std:: bind2nd boost::bind 也就是partial application。
boost还有lambda库。

c++0x将直接支持lambda表达式。这个才是最近的事。 其他是早有的事。


cplusplus is a general purpose programming langauge。
同时, c++坚持对不使用的特性, 尽可能保持零代价
特性多是好是坏, 见智见仁了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
187 [报告]
发表于 2009-03-26 10:07 |只看该作者
原帖由 reiase 于 2009-3-25 22:19 发表
5. D语言还全面超越C++呢


有理论, 或者实际根据么?  D语言我不了解。  想去了解一下。
据说开源了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
188 [报告]
发表于 2009-03-26 10:14 |只看该作者
原帖由 reiase 于 2009-3-25 22:19 发表
如果用C++写,经常发现,一个类设计错误,一堆类都要修改。

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


原帖由 reiase 于 2009-3-25 22:19 发表
Java里边的一些特性能过减小类设计的难度,


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

如果你在C++中的设计, 会导致上面说的, “一个类设计错误,一堆类都要修改”。
那么 :
1. 在java中, 也是同样。
2. 你没学会如何用c++做设计。

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


只是C++学OO设计,要比java难学, 一点。
关键在教育, c++很多书都脱离了大众

[ 本帖最后由 OwnWaterloo 于 2009-3-26 10:16 编辑 ]

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
189 [报告]
发表于 2009-03-26 10:15 |只看该作者
      嗯,  肯定马上有人要说, java也有了, .net也有了。
想想吧, 写java和c#的时候,使用jni和p/invoke的几率, 与c++使用c的几率。
再想想java和c#有多少人勇于使用jni和p/invoke, 而c++使用c代码是一开始就有的事情。
许多c++教材的第一个程序就是
#include < stdio.h >
int main() { printf("hello world\n"; }

有教材用jni和p/invoke写这个吗?


java 调用本地代码的机制确实麻烦,虽然 C++/CLI 没有被标准接受,但是 C++/CLI 调用本地代码的机制确实好用,这点 java 应该学学。

以前也有一个牛人说, 他想设计一种能 “自己把自己双脚跟提起来” 的语言, 可以自举的语言。


编译器的确可以自举,大学的教材里讲过。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
190 [报告]
发表于 2009-03-26 10:21 |只看该作者
原帖由 zhujiang73 于 2009-3-26 10:15 发表
编译器的确可以自举,大学的教材里讲过。


编译原理是吧??   我们学校学了考考试就算学过这门课程了 …………
现在几乎忘得干干净净 ……

好像还是编译原理那本书的最前面1,2章就提到过如何无中生有的情况。
你一说又有点印象了 ……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP