Redian新闻
>
hci, Clojure有类似windows COM那种东西吗?
avatar
hci, Clojure有类似windows COM那种东西吗?# Programming - 葵花宝典
g*t
1
windows COM可能是C++最成功的组件技术了。
例如你写个matlab那样的程序。另外一个程序要调用其画图功能。
你又不要开放源代码。那么clojure或者FP有现成的机制吗?
我初步检查,emacs是没有的。外部进程无法调emacs 改动其
buffer内容。
avatar
h*i
2
没有

【在 g****t 的大作中提到】
: windows COM可能是C++最成功的组件技术了。
: 例如你写个matlab那样的程序。另外一个程序要调用其画图功能。
: 你又不要开放源代码。那么clojure或者FP有现成的机制吗?
: 我初步检查,emacs是没有的。外部进程无法调emacs 改动其
: buffer内容。

avatar
g*t
3
Finally I found a nice example for OO methodology.
haha

【在 h*i 的大作中提到】
: 没有
avatar
h*i
4
I doubt it has anything to do with OO methodology.
I don't even know what windows com is. I never programed windows. I was one
of the earliest Java people, jumped from Turbo C to Java directly.
When people were young, coolness is an important criteria for picking
technology. Windows programming was not considered cool for my generation.
People would think of VB, very uncool.
Java was cool back then, even perl was cool, so I did those.

【在 g****t 的大作中提到】
: Finally I found a nice example for OO methodology.
: haha

avatar
g*t
5
com就是有比较丰富接口的dll吧。我的理解不一定正确。
最早是用来动态产生component的,例如word里面放个excel表格.
例如下面代码,可以python控制outlook。
我在公司gmail没办法用自动发邮件。outlook可以绕过
防火墙自己发邮件备份每天的重要事情。
import win32com.client
s = win32com.client.Dispatch("Mapi.Session")
o = win32com.client.Dispatch("Outlook.Application")
s.Logon("Outlook2003")

Msg = o.CreateItem(0)
Msg.To = "[email protected]"

Msg.CC = "more email addresses here"
Msg.BCC = "more email addresses here"

Msg.Subject = "The subject of you mail"
Msg.Body = "The main body text of you mail"

attachment1 = "Path to attachment no. 1"
Msg.Attachments.Add(attachment1)
Msg.Send()

one

【在 h*i 的大作中提到】
: I doubt it has anything to do with OO methodology.
: I don't even know what windows com is. I never programed windows. I was one
: of the earliest Java people, jumped from Turbo C to Java directly.
: When people were young, coolness is an important criteria for picking
: technology. Windows programming was not considered cool for my generation.
: People would think of VB, very uncool.
: Java was cool back then, even perl was cool, so I did those.

avatar
h*i
6
Don't see anything uniquely OO methodology there.

【在 g****t 的大作中提到】
: com就是有比较丰富接口的dll吧。我的理解不一定正确。
: 最早是用来动态产生component的,例如word里面放个excel表格.
: 例如下面代码,可以python控制outlook。
: 我在公司gmail没办法用自动发邮件。outlook可以绕过
: 防火墙自己发邮件备份每天的重要事情。
: import win32com.client
: s = win32com.client.Dispatch("Mapi.Session")
: o = win32com.client.Dispatch("Outlook.Application")
: s.Logon("Outlook2003")
:

avatar
g*t
7
The Msg object is generated dynamically when you call the com server.
It is some executable code segment.
The name/Id "Msg" works well as a handler/pointer that you can link to other
things that you want to do.
Msg.Body ---- property of email body
Msg.Send() ---- send method

【在 h*i 的大作中提到】
: Don't see anything uniquely OO methodology there.
avatar
x*u
8
这个叫automation,就是idispatch接口实现的reflection包装
老实讲有无数c++轮子,但com是最流行的

【在 g****t 的大作中提到】
: com就是有比较丰富接口的dll吧。我的理解不一定正确。
: 最早是用来动态产生component的,例如word里面放个excel表格.
: 例如下面代码,可以python控制outlook。
: 我在公司gmail没办法用自动发邮件。outlook可以绕过
: 防火墙自己发邮件备份每天的重要事情。
: import win32com.client
: s = win32com.client.Dispatch("Mapi.Session")
: o = win32com.client.Dispatch("Outlook.Application")
: s.Logon("Outlook2003")
:

avatar
g*t
9
Idispatch Iunknown的设计还是很牛的。JVM上面有类似的东西吗?
browser? LLVM?

【在 x****u 的大作中提到】
: 这个叫automation,就是idispatch接口实现的reflection包装
: 老实讲有无数c++轮子,但com是最流行的

avatar
h*i
10
这就很牛了?这不还是dispath on type么?Lisp的multimethods能dispatch on
anything。
实在要dispatch on type, Clojure的Protocol能给任何类(包括别人写的类,JVM自
己的类,whatever)强加上任何interface,所以你想要干嘛就干嘛。

【在 g****t 的大作中提到】
: Idispatch Iunknown的设计还是很牛的。JVM上面有类似的东西吗?
: browser? LLVM?

avatar
g*t
11
这个要从编译器绕个弯进去。
重用的是动态生成的可执行代码。但是本身又没有包含一个编译器。
需要考虑编译器细节。
难度和解释语言不同。尽管原理最后都是查方法的lookup table什么的。

【在 h*i 的大作中提到】
: 这就很牛了?这不还是dispath on type么?Lisp的multimethods能dispatch on
: anything。
: 实在要dispatch on type, Clojure的Protocol能给任何类(包括别人写的类,JVM自
: 己的类,whatever)强加上任何interface,所以你想要干嘛就干嘛。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。