`
coderplay
  • 浏览: 577983 次
  • 性别: Icon_minigender_1
  • 来自: 广州杭州
社区版块
存档分类
最新评论

单分派与多分派,聊天记录

    博客分类:
  • misc
OOP 
阅读更多

2007-12-17 23:06:01 lct
The solution to these problems is to replace
dynamically-dispatched messages with one or more statically-bound procedure calls
wherever possible, to inline-expand the callee methods whenever the callee is small (a
common case given the presence of accessor methods, user-defined control structures, and
standard operations like addition implemented as methods), and to eliminate creations of
closures whenever no more references to the closures remain after inlining their bodies.
 

2007-12-17 23:06:08 lct
这什么意思

2007-12-17 23:06:16 lct
 inline-expand ???????

2007-12-17 23:06:32 coderplay
上下文是?
 

2007-12-17 23:07:08 lct
就是那篇的3 Language Implementation Research
 

2007-12-17 23:07:35 lct
profile????????大纲???

2007-12-17 23:07:46 coderplay
估计你是看不懂了.呵呵
 

2007-12-17 23:07:59 coderplay
profile是一个专业术语
 

2007-12-17 23:08:07 lct
[/流汗]赶紧帮我看看啊[/撇嘴]

2007-12-17 23:08:14 lct
明天还得上台讲呢

2007-12-17 23:08:23 lct
我都看不懂,

2007-12-17 23:08:23 coderplay
是用来观察程序哪里运行最耗时间,最占内存.
 

2007-12-17 23:08:44 lct
profile怎么翻译

2007-12-17 23:10:02 lct
剖面???可否?

2007-12-17 23:10:25 coderplay
就是profile, 没有翻译
 

2007-12-17 23:10:47 coderplay
剖析应该比较准确
 

2007-12-17 23:11:35 lct


2007-12-17 23:11:54 lct
看了,你对文章大意理解如何

2007-12-17 23:12:39 lct
The set of classes computed for each expression is different than the information available
from static type declarations. The set of classes is a specific list of concrete classes, with no
ambiguity or open-endedness. A static type declaration, on the other hand, specifies an
interface to an expression, but provides no information about what classes might implement
that interface.
 

2007-12-17 23:12:57 lct
ambiguity or open-endedness.?????????

2007-12-17 23:14:20 coderplay
也有不懂的地方,我得花时间...
 

2007-12-17 23:15:32 coderplay
这个论题很窄嘞
 

2007-12-17 23:15:46 lct
compile-time method lookup,
????????

2007-12-17 23:15:46 coderplay
涉及到的具体东西很多
 

2007-12-17 23:16:05 lct
太具体,太专业了

2007-12-17 23:16:23 coderplay
compile-time method lookup,编译期的方法查找
 

2007-12-17 23:16:32 lct
我觉得我完全没有那个背景知识,很难理解

2007-12-17 23:16:35 coderplay
对应的是 run-time method lookup
 

2007-12-17 23:16:42 lct


2007-12-17 23:17:12 coderplay
我要花一个半小时看完
 

2007-12-17 23:17:35 lct
perform method lookup     ?

2007-12-17 23:17:47 lct
我花了两三天

2007-12-17 23:18:00 coderplay
那你等下吧,不要先提.我现在才看第一段
 

2007-12-17 23:33:10 lct
When static class analysis cannot determine a tight bound on the set of possible classes of the
receiver of some message,
 

2007-12-17 23:37:43 coderplay
晕...
 

2007-12-17 23:37:49 coderplay
好像很难解释
 

2007-12-17 23:38:40 coderplay
你知道重载,重写的区别? 还有它们与多态的联系吗?
 

2007-12-17 23:39:01 lct
忘了

2007-12-17 23:39:13 coderplay
还有面向对象的消息传递
 

2007-12-17 23:39:18 coderplay
这好像很难说...
 

2007-12-17 23:39:24 coderplay
换一篇吧...
 

2007-12-17 23:39:40 lct
呵呵,哪来得及,明天早上8点

2007-12-17 23:39:51 lct
死马当活马医了

2007-12-17 23:40:03 coderplay
他开始说的是设计了一种叫cecil的语言
 

2007-12-17 23:40:38 lct


2007-12-17 23:40:52 coderplay
语言设计分两类, 一种是追求语言的表达能力, 还有一种是追求语言的运行性能
 

2007-12-17 23:41:28 lct
These results indicate that intraprocedural optimizations of messages speed Cecil programs
by at least a factor of two.

 

2007-12-17 23:41:29 coderplay
他设计的cecil语言能和c++一样高效,但比c++更规范,更灵活
 

2007-12-17 23:41:36 lct
a factor of two.?????

2007-12-17 23:42:00 coderplay
不要去钻哪个字的意思啊
 

2007-12-17 23:42:20 lct
a factor of two.?????

2007-12-17 23:42:29 lct
这是关键意思

2007-12-17 23:42:32 lct
关系理解

2007-12-17 23:43:42 lct
还有文章中的class,虽然我理解成“类”,但感觉怪怪的

2007-12-17 23:45:03 coderplay
你先说一遍意思吧
 

2007-12-17 23:45:09 coderplay
我还在看前面的
 

2007-12-17 23:45:42 lct
coderplay 23:45:03
你先说一遍意思吧



2007-12-17 23:48:11 coderplay
就是你先说说你的理解
 

2007-12-17 23:48:22 coderplay
通篇的
 

2007-12-17 23:50:06 lct
正在整理

2007-12-17 23:52:33 lct
如果说通篇内容,也就是introduction那部分的内容

2007-12-17 23:52:57 coderplay
你先打,我看着
 

2007-12-17 23:53:07 coderplay
具体的说说看
 

2007-12-17 23:53:52 coderplay
他是指语言的灵活性和程序性能是相冲突的,但他有办法解决
 

2007-12-17 23:54:26 lct
Multi-methods are treated as overloaded functions, where overload resolution is
determined by the dynamic classes of the arguments,
 

2007-12-17 23:54:34 lct
这关系到理解

2007-12-17 23:56:41 coderplay
这个是灵活性的部分了
 

2007-12-17 23:56:53 lct
怎么理解

2007-12-17 23:56:57 coderplay
看来搞不完嘞.边给你解释,边看
 

2007-12-17 23:57:16 lct
看懂字面,却理解不了

2007-12-17 23:57:24 coderplay
传统的OOP语言有重载与重写
 

2007-12-17 23:58:31 coderplay
重载是一个类里面有多个同名的方法比如

class A
{
   public void func_name(void);
   public void func_name(Object obj);
}
 

2007-12-17 23:58:36 coderplay
这是重载.
 

2007-12-17 23:59:02 coderplay
到底是调用func_name(void)还是调用func_name(Object).
 

2007-12-17 23:59:13 coderplay
这取决于你传给方法的参数的类型
 

2007-12-17 23:59:16 lct
There are no variables or
expressions where this subtype polymorphism is restricted, unlike C++
 

2007-12-18 00:00:01 lct
重载明白,重写呢?

2007-12-18 00:01:00 lct
overloaded是重写?

2007-12-18 00:01:28 coderplay
重写是和继承相关的

class A
{
  virtual fun_name()
}

class B inherite A
{
  func_name();
}

 
 

2007-12-18 00:01:42 coderplay
重载(overload) ,重写(override)
 

2007-12-18 00:02:26 lct
呵呵,好

2007-12-18 00:02:27 coderplay
然后有一个B的实例
B b = new B;
b.func_name(); // 这句不会调用A.fun_name
 

2007-12-18 00:03:02 coderplay
虽然参数都一样,这是为了消除继承的二义性
 

2007-12-18 00:03:25 coderplay
class Cat{
    public void eat(){
        System.out.println("cat eat");
    }
}
public class BlackCat extends Cat{
    public void eat(){
        System.out.println("black cat eat");
    }
    public static void main(String[] args){
        Cat cat = new BlackCat();
        cat.eat();
    }
}
 

2007-12-18 00:03:33 coderplay
这个时候的结果是:
black cat eat
 

2007-12-18 00:04:11 coderplay
如果
 Cat cat = new Cat();
 cat.eat();
结果则是cat eat
 
 

2007-12-18 00:04:32 lct
多方法可以看作重载函数,

2007-12-18 00:04:44 coderplay
no
 

2007-12-18 00:04:51 coderplay
有区别
 

2007-12-18 00:04:52 lct
好,你说的例子我明白,但遇到字面无法翻译

2007-12-18 00:05:07 lct
Multi-methods are treated as overloaded functions, where overload resolution is
determined by the dynamic classes of the arguments,

2007-12-18 00:05:17 lct
我要说出这个意思

2007-12-18 00:05:31 coderplay
重载是编译完成后,调用的方法是确定的
 

2007-12-18 00:05:54 lct


2007-12-18 00:05:54 coderplay
而重写,程序到底调用哪个方法是运时期决定的
 

2007-12-18 00:06:12 coderplay
而不是编译期
 

2007-12-18 00:07:10 coderplay
比如这个
class A
{
   public void func_name(void);
   public void func_name(Object obj);
}

编译后,两个函数分别是
func_name_void(A this)
func_name_Object(A this, Object o)
 

2007-12-18 00:07:24 coderplay
所以编译完成后,它们实际上是两个名称不相同的函数
 

2007-12-18 00:07:31 coderplay
而重写却不同
 

2007-12-18 00:07:40 coderplay
它们的函数名在编译完成后还是相同的
 

2007-12-18 00:08:15 lct


2007-12-18 00:08:19 lct
那Multi-methods are treated as overloaded functions, where overload resolution is
determined by the dynamic classes of the arguments,

2007-12-18 00:08:23 lct
????????

2007-12-18 00:08:25 coderplay
只是第一个参数this的类型不同
func_name_void (A this)
func_name_void (B this)
 

2007-12-18 00:09:07 coderplay
Multi-methods有点像重载函数
 

2007-12-18 00:09:57 coderplay
但CLOS的Multi-methods是多重分发(multiple dispatching)的
 

2007-12-18 00:10:18 lct
参数的动态类决定重载的,,

2007-12-18 00:10:36 coderplay
重载是编译期后就决定了的,是静态的
 

2007-12-18 00:10:51 coderplay
而Multi-methods是运态决定的,是动态的
 

2007-12-18 00:11:38 coderplay
它通过动态检测所有参数的类型来决定调用哪个函数
 

2007-12-18 00:11:56 coderplay
是动态意义上的函数重载
 

2007-12-18 00:12:00 lct
coderplay 00:09:07
Multi-methods有点像重载函数
coderplay 00:10:35
重载是编译期后就决定了的,是静态的
coderplay 00:10:52
而Multi-methods是运态决定的,是动态的

2007-12-18 00:12:03 lct
糊涂了

2007-12-18 00:13:48 coderplay
重载编译后,两个函数分别是
func_name_void(A this)
func_name_Object(A this, Object o)

当你调用时,实际上是调用两个不同的函数
func_name_void(A this)和
func_name_Object(A this, Object o)
仅管你的程序,看上去是调用同名的方法.但编译器已经帮你的函数的名称全部换了
 

2007-12-18 00:15:37 coderplay
编译前是
A::func_name(void)
A::func_name(Object o)
调用方法分别是
a.func_name()
b.func_name(obj)

编译后是
func_name_void(A this)
func_name_Object(A this, Object o)
调用方法分别是
func_name_void(a)
func_name_Object(a, obj)
 

2007-12-18 00:16:09 coderplay
运行时,两个方法根本没有任何联系
 

2007-12-18 00:16:12 coderplay
连名称都不一样
 

2007-12-18 00:16:22 coderplay
这是重载
 

2007-12-18 00:16:39 coderplay
而Multi-Methods编译后的名称是一样的
 

2007-12-18 00:16:58 coderplay
只是参数类型不一样  
 

2007-12-18 00:17:20 coderplay
程序到底调用哪个函数, 是通过所有参数的类型来决定的
 

2007-12-18 00:18:46 lct
在C++中也学过,你说了我也明白了,但是对那篇文章的理解还是不行

2007-12-18 00:19:07 coderplay
他的意思是说Multi-Methods兼俱重写的动态性, 和重载的灵活性
 

2007-12-18 00:19:36 coderplay
Multi-methods are treated as overloaded functions, where overload resolution is
determined by the dynamic classes of the arguments,
这句你应该明白了吧
 

2007-12-18 00:19:45 coderplay
这是CLOS的作法
 

2007-12-18 00:19:50 lct
怎么翻译

2007-12-18 00:19:57 coderplay
一定要翻译?
 

2007-12-18 00:20:03 lct
dynamic classes

2007-12-18 00:20:16 coderplay
动态类型
 

2007-12-18 00:20:31 lct
参数的动态类?or动态类型

2007-12-18 00:20:38 coderplay
类型
 

2007-12-18 00:20:55 lct
与type?

2007-12-18 00:21:03 coderplay
不要去抠字眼,这是因为英语和汉语的差别
 

2007-12-18 00:21:26 coderplay
你只是感觉类与类型的区别比class与type大
 

2007-12-18 00:21:34 lct
因为我一直把全文的class理解成类了,面向对象中的类

2007-12-18 00:21:35 coderplay
明白意思就okay
 

2007-12-18 00:21:49 coderplay
后面作者说他的语言
 

2007-12-18 00:21:51 lct
现在明白了

2007-12-18 00:21:57 coderplay
与CLOS不同
 

2007-12-18 00:22:05 coderplay
他的语言灵活性更强
 

2007-12-18 00:22:41 lct
class hierarchy analysis
这个应该是类层次分析吧?不会是类型了吧

2007-12-18 00:22:50 coderplay
In fact, the implementation of the
operation can evolve over time, with special cases added incrementally without revising
previous versions or client code. The choice of implementation strategy is properly hidden
from clients, and there are no restrictions on future incremental extension to the set of multi-
methods.
 

2007-12-18 00:23:00 coderplay
对头
 

2007-12-18 00:23:48 coderplay
复制错了.这句:
 The Cecil
approach to multi-methods differs from the CLOS approach by allowing each multi-method
to independently determine which subset of its arguments requires dynamic dispatching
(there is no °∞congruent lambda list°± rule as in CLOS) and by treating all argument positio
with equal priority (there is no left-to-right ordering of argument positions as in CLOS).
 

2007-12-18 00:24:29 coderplay
Cecil对multi-methods的方法与CLOS的方法不同
 

2007-12-18 00:24:52 coderplay
CLOS是要检查所有的参数的类型来决定调用哪个函数
 

2007-12-18 00:25:51 lct
这个明白

2007-12-18 00:26:29 coderplay
而Cecil可以自定义.
比如参数是 (A a, B b, C c)
CLOS要检查a,b,c的类型
而Cecil用户则可能只要检查一个子集b,c的类型.  
 

2007-12-18 00:27:21 coderplay
Cecil语言支持这种特性
 

2007-12-18 00:27:28 lct


2007-12-18 00:28:01 coderplay
lambda list是一个术语, 与丘奇的可计算模型相关
 

2007-12-18 00:28:52 lct
[/惊讶]太有才了

2007-12-18 00:28:56 coderplay
下面那段就是消息传递
 

2007-12-18 00:29:09 lct
谢谢周大叔

2007-12-18 00:29:23 coderplay
这两个特性会使程序的性能降低
 

2007-12-18 00:29:33 coderplay
因为它在执行的时候还要判断类型
 

2007-12-18 00:29:52 coderplay
然后第3节讲的是他的解决方案
 

2007-12-18 00:29:59 coderplay
不过我还刚看..
 
 

2007-12-18 00:30:08 lct
大意我也看过了,管它懂不懂,我们宿舍催睡觉了,明天哪里懂讲哪里

分享到:
评论

相关推荐

    基于muduo开发的集群聊天服务器c++源码+数据库+使用说明.zip

    - 使用 Nginx 的 TCP 负载均衡功能,将客户端请求分派到多个服务器上,以提高并发处理能力 - 基于发布-订阅的服务器中间件redis消息队列,解决跨服务器通信难题 - 封装 MySQL 接口,将用户数据储存到磁盘中,实现...

    在线客服系统源码

    2. **后端服务器**:处理前端发来的请求,如接收和存储聊天记录、分配客服人员、管理会话状态等。这部分通常采用Web框架实现,如Node.js的Express或Python的Django。 3. **数据库**:用于存储用户信息、聊天记录、...

    标准呼叫中心很详细的介绍

    3. 文字聊天:在线聊天功能允许客户实时提问,客服可以同时处理多个聊天会话,提高处理速度。 4. 社交媒体整合:监控和回应来自Facebook、Twitter等平台的客户咨询,拓宽服务渠道。 三、质量管理与绩效评估 1. ...

    PESCMS TICKET客服工单系统 1.2.10

    系统可以根据预设规则自动将工单分派给合适的客服人员,同时,工单的状态、处理进度以及历史记录都会实时更新,便于团队成员间的协作和管理层的监控。此外,系统还支持工单的优先级设置,确保紧急问题得到及时处理。...

    微信企业号,钉应用,微信OA,深度企业号

    5、任务协作:任务管理应用,轻松安排您与团队每一天的工作分派,实时掌握工作进度,有效提高您和团队的工作效率。 6、调研:实时收集来自团队的宝贵意见,数据分析直观明了,自动生成图形分析报表,有效提高您的...

    深度企业号,微信OA,微信企业号,钉应用

    5、任务协作:任务管理应用,轻松安排您与团队每一天的工作分派,实时掌握工作进度,有效提高您和团队的工作效率。 6、调研:实时收集来自团队的宝贵意见,数据分析直观明了,自动生成图形分析报表,有效提高您的...

    基于ASP的小区物业管理之业主服务子系统的设计与实现(源代码+论文+任务书+开题报告+文献综述).rar

    2. **服务申请**:业主可以在线提交维修、投诉、建议等服务请求,系统自动记录并分派处理。 3. **公告通知**:物业管理方可以发布小区公告,业主能实时查看和接收通知。 4. **费用缴纳**:包括物业费、水电费等费用...

    微信办公共OA v4.0.0

    提供外勤签到打卡、客户拜访汇报,随时微信上提交客户拜访信息(包括拜访内容、拜访对象、拜访地点),并发送给指定人随时创建外勤工单,向领导汇报或请示,领导可以向属下分派外勤任务。15、企业公告:企业发布公司...

    鱼骨 v1.5.8.8428版

    -任务协作:随时记录和跟进每一项工作,个人记录待办工作,快速分派工作给同事;-工作计划:按周、月或季度计划个人和团队的工作,适合周会、月会场景;同事支持目标设定和管理;-项目管理:替代project的协作项目...

    项目组内部守则

    项目管理采用按“日”分派任务的方式,每日例会成为沟通的重要平台,成员汇报进展,开发经理安排新任务,这种做法有利于实时监控项目状态,确保目标的实现。项目组还设计了一套基于任务完成率的绩效评估体系,对于...

    VS2010开发的图形化工作流OA

    任务分配 对下属用户分派工作任务,实时监控任务情况 下属日程 下属员工的日程安排信息 下属日志 下属员工的工作日志信息 下属计划 下属员工的工作计划信息 下属汇报 下属员工的工作汇报信息 下属邮件 下属员工的...

    新版协同办公平台OA(Vs2010,C#,Sql Server)

    任务分配 对下属用户分派工作任务,实时监控任务情况 下属日程 下属员工的日程安排信息 下属日志 下属员工的工作日志信息 下属计划 下属员工的工作计划信息 下属汇报 下属员工的工作汇报信息 下属邮件 ...

    微信OA,微信企业号,深度企业号,微信公众平台

    5、任务协作:任务管理应用,轻松安排您与团队每一天的工作分派,实时掌握工作进度,有效提高您和团队的工作效率。 6、调研:实时收集来自团队的宝贵意见,数据分析直观明了,自动生成图形分析报表,有效提高您的...

    微信OA,微信企业号,钉应用,深度企业号

    5、任务协作:任务管理应用,轻松安排您与团队每一天的工作分派,实时掌握工作进度,有效提高您和团队的工作效率。 6、调研:实时收集来自团队的宝贵意见,数据分析直观明了,自动生成图形分析报表,有效提高您的...

    钉应用,微信OA,微信企业号,深度企业号

    5、任务协作:任务管理应用,轻松安排您与团队每一天的工作分派,实时掌握工作进度,有效提高您和团队的工作效率。 6、调研:实时收集来自团队的宝贵意见,数据分析直观明了,自动生成图形分析报表,有效提高您的...

    网络游戏测试用例测试点.doc

    本测试用例是《开创世纪》游戏早期的测试用例,包含组队、交易、聊天、好友等系统,仅供大家参考。 测试目的 本次测试的主要目的是对《开创世纪》1.00 版本进行完整的集成测试(系统测试、验收测试),即对《开创...

    AOFAX旅游产业呼叫中心系统解决方案

    - **记录查询**:查询聊天记录,支持分级查询权限。 #### 三、系统价值与应用场景 AOFAX旅游产业呼叫中心系统凭借其强大的功能和灵活的配置选项,能够显著提升旅游企业的服务质量和运营效率。无论是用于客户服务...

    深入java servlet网络编程

    服务阶段,每当有请求到达,Servlet容器会调用Servlet的service()方法,根据请求类型分派到doGet()或doPost()等具体方法。最后,在Servlet不再需要时,销毁阶段会调用destroy()方法释放资源。 Servlet容器是运行...

    OA系统+手机版源码t源代码

    亮点三:工作流优化,方便新建任意格式审批单。 亮点四:功能授权于数据授权并用,可对多部门,多人员进行进行交叉授权。 亮点五:提供“智能窗体”向导,可任您快速且自由地制作多功能的网页办公系统。 亮点六:...

    计算机复试面试题目参考.doc

    非剥夺方式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的...

Global site tag (gtag.js) - Google Analytics