免费注册 查看新帖 |

Chinaunix

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

为什么有些语言有“运行时检查对象是否有某个方法”的功能,这个功能有必要么? [复制链接]

论坛徽章:
0
51 [报告]
发表于 2009-12-26 17:25 |只看该作者

真是无聊的问题

都是图灵机模型,能解决的问题都是一样多的
建议改成这么问:
什么语言有这个功能?
有这个功能对程序员或是软件有什么好处?
为此增加了多少性能开销?
blablabla

论坛徽章:
0
52 [报告]
发表于 2009-12-28 11:56 |只看该作者
原帖由 prolj 于 2009-12-25 08:55 发表
继续不正经回答问题,这算是什么问题?扯淡还是一代程序语言设计大师的思想?
学不会C++就在这里诋毁,什么玩意儿。
不过图铃测试的算法倒是很让我们感兴趣,咋弄的?这么多机器人,好高级啊,MIT的AI实验室出 ...


你在说老子么? 抹粉的小丑,他妈的这些日子把你得意的!半斤不到何谈八两,二三两的东西,咣当个啥,得瑟个JB,SB!

[ 本帖最后由 登楼望月 于 2009-12-28 11:57 编辑 ]

论坛徽章:
0
53 [报告]
发表于 2009-12-28 17:20 |只看该作者
原帖由 论坛热点 于 2009-12-22 17:20 发表
为什么有些语言有“运行时检查对象是否有某个方法”的功能,这个功能有必要么?什么时候需要这样的功能?


那要看使用该语言的人有没有需求。
基于组件的编程就需要,也就是你不能掌握代码里面的一切,例如你需要用到一些第三方的组件,这些组件只要2进制的包而你不知道是如何实现的。你拿来一个ActiveX控件,你可以通过方法调用知道它有什么函数,这样的话可以区别不同版本的ActiveX。Java的jdbc数据库驱动也是通过加载类的文件来调用数据库初始化程序。Javascript代码为了区分不同的浏览器也常常需要检查某个DOM对象是否支持某个方法。

对于普通的C/C++编程,你知道所有代码,那么“运行时检查对象是否有某个方法”就不是一个需求----所以C/C++编译以后,对象与方法的榜定消失了,你无法用一种通用的方法来查找可执行程序ABI是否有某个对象的某个方法。所有的类型信息,除了虚函数表的首地址以外,全都消失了,成了一堆地址跳转。

要做到"“运行时检查对象是否有某个方法”",必须保证2进制的可执行文件中保留了某种"元"信息。

论坛徽章:
1
狮子座
日期:2013-12-16 16:09:24
54 [报告]
发表于 2009-12-30 12:39 |只看该作者
mark
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP