惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - NeilChen

恢复 Windows 7 的“回到父目录”按钮 FireFox 脑残的安全设定 SQL Server 事务自动回滚 下载 infoq 网站视频 也做了一下腾讯前端面试题 Select prototyping tools Lisp in Small Parts 时隔3年,再做双倍超立方数的题目,这次用Lisp Racket, SICP stream learning Operation is not valid due to the current state of the object lisp 笔记 - 闭包 Common Lisp 在 Windows 上的开发环境比较 翻译英文技术文章是一件很可耻的事情吗? 写了个博客备份的 ruby 程序 体验 Clozure CL 试用 Portable Allegro Serve Windows XP, Emacs, CLisp, SLIME 关于 Business Rule Engine Irony - 一个 .NET 语言实现工具包 - NeilChen
TechTalk by Peter Seibel on Common Lisp
NeilChen · 2012-06-04 · via 博客园 - NeilChen

看了一个视频:http://video.google.com/videoplay?docid=448441135356213813

Peter Seibel (Pratical Common Lisp 的作者)做的关于 Common Lisp (CL) 的语言优势的一些介绍,比较有意思。

第一个例子中,首先他给出了 Java 中 Visitor 模式的一个典型的实现(C# 中也差不多),代码很多。而在 Lisp 中有了语言特性 generic method, 就能直接了当的解决这个问题,Visitor 模式在 Lisp 中就用不着了。

这里比较一针见血的就是他指出了其实 Visitor pattern 本质上是一种 double dispatch 机制。也就是说,如何遍历树节点,以及遍历不同种类的树节点,这是一种分派(dispatch)机制,同时,对于每种不同的节点,还可能存在多种访问方式,这又是另一个 level 的分派机制。也就是说,对于同一个树我们可以定义多种 Visitor, 用做不同的用途。比如负责打印树的内容的 Visitor, 或者负责解析并计算树节点含义的 Visitor, 等等。也就是说:

Java 中的类继承体系 是第一个 level 的 dispatch;

具体对于每种不同的类进行何种操作,又是第二个 level 的 dispatch.

CL 的优势在于:方法不属于类。

generic method (广义方法)可以针对其每一个实例参数的类型(以及其他特征)进行任意的特化!

这样来看,不光 double dispatch 了,其实可以实现任意的 multiple dispatch 机制。

相比而言,Java / C# 体系的单继承 OO 系统真的是太简单了。

有时候我们会发现在 Java / C# 中很难准确设计类之间的继承关系,其实跟语言的表达能力有限有直接的关系。

第二个重要的语言特征,讲到了 CL 中的 Condition System. 这个比一般语言里的 try..finally 异常处理的机制要强大很多。听其描述应该可以直接支持类似 AOP 这样的编程手段。不过我暂时还没有完全搞明白,这里先不说。

第三个就是介绍了宏,Lisp 的终极武器。其本质的强大性在于可以任意定义语法,参与编译器的编译步骤,从而方便的实现 DSL, 获得更强大的表达能力。