一点领悟吧,关于消息传递与lambda算子

昨天在读到《Programming Erlang》第8章,开篇点出Erlang是一门纯粹的消息传递风格语言(message passing),我才算是领悟了消息传递。为了这个问题,我还冒昧地去问javaeye上的T1,对这个问题的兴趣是因为SICP第二章以及《失踪的链环》上的介绍。T1给我解答如下:智能能对象只是消息传递的一种具体应用.消息传递说的更为清晰一些就是一种映射关系或者说映射规则.f:a->b;这个规则可以是任意的。我一直将procedural representations of data,也就是sicp中声称intelligent data objects (智能对象)等价于消息传递, 而其实智能对象仅仅是消息传递的一种具体应用罢了。
消息传递机制通俗地来讲就是类似于马路上到处投递小广告的投递者,它采取的是Send and Pray策略,既不关心消息是否能精确的传送到真正需要消息的接收者,而是以广播的方式把消息发送给所有人,然后通过回馈来确定消息接收者的类型(引自《失踪的链环》)。因此,动态语言的duct typing是消息传递风格,智能对象是消息传递风格,显然,Erlang的process间的通信机制同样是消息传递风格(Process之间完全通过send message来进行控制和指示,不确定接收方是否具有处理消息的能力 ,异步的,接收的确认也要等待reply)。
    再来说说lambda算子理论,推荐下g9老大的lambda算子系列文章,这是开篇《lambda算子简介1.a》,以及另外一篇《康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)》。lambda算子理论是函数式编程的理论基础,通过9条公理就可以推到出一个图灵完备的形式系统,其中的Y combinator的推导简直是魔法(为了表示递归),再次领略了计算理论的魅力。另外,最近读sicp第三章《模块化、对象和状态》,也理解了最初的面向对象思想来自何处,在引入了内部状态模拟时间变化之后,对象的最初思想也产生了,同时也带来了赋值导致的Side-Effect,而其实这正是动态OO语言中的对象的理念,通过消息来决定对象的type(ducktyping)。可现代的静态OO语言,在type和clas
之间画上了等号,java里面说一切都是object,其实他想表达的却是一切都是class,通过type以及函数签名等来决定消息的分派(message dispatch),导致更多的代码集中在消息分派,而不是真正的计算任务上,可以说静态OO已经偏离原始的对象模型很远。
 文章转自庄周梦蝶  ,原文发布时间2007-08-03

时间: 2024-09-18 22:26:06

一点领悟吧,关于消息传递与lambda算子的相关文章

J2EE探索者:用JMS进行企业消息传递[Z]

j2ee 在本期的J2EE探索者( J2EE pathfinder)中,Java 开发者和咨询顾问Kyle Gabhart 解释了为什么消息服务对于企业的体系结构来说是至关重要的,您的解决方案必须克服什么类型的障碍,以及 除了Java消息服务(Java Message Service ,JMS)之外,还有哪些替代的解决方案.在本文的结尾,他分析了三种可用的解决方案(简单JMS客户机(Simple JMS Client).结合JMS使用的会话bean, 以及消息驱动bean),并且提供了一些特定的

Linq之Lambda进阶

目录 写在前面 系列文章 带有标准查询运算符的Lambda Lambda中类型推断 Lambda表达式中变量作用域 异步Lambda 总结 写在前面 上篇文章介绍了Lambda的基本概念以及匿名方法,本篇继续介绍Lambda的一些内容,既然学了,就要总结的全面一点. 系列文章 Linq之Lambda表达式初步认识 带有标准查询运算符的Lambda 什么事标准查询运算符? "标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法. 大多数这些方法都在序列上运行,其中的序列是一个对象

从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势

在上一篇文章中我们简单探讨了.NET 1.x和.NET 2.0中委托表现形式的变化,以及.NET 2.0中匿名方法的优势.目的及注意事项.那么现在我们来谈一下.NET 3.5(C# 3.0)中,委托的表现形式又演变成了什么样子,还有什么特点和作用. .NET 3.5中委托的写法(Lambda表达式) Lambda表达式在C#中的写法是"arg-list => expr-body","=>"符号左边为表达式的参数列表,右边则是表达式体(body).参数列表

一起谈.NET技术,从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势

在上一篇文章中我们简单探讨了.NET 1.x和.NET 2.0中委托表现形式的变化,以及.NET 2.0中匿名方法的优势.目的及注意事项.那么现在我们来谈一下.NET 3.5(C# 3.0)中,委托的表现形式又演变成了什么样子,还有什么特点和作用. .NET 3.5中委托的写法(Lambda表达式) Lambda表达式在C#中的写法是"arg-list => expr-body","=>"符号左边为表达式的参数列表,右边则是表达式体(body).参数列表

周思博趣谈软件——给计算机系学生的建议

原文地址:http://chinese.joelonsoftware.com/Articles/AdviceforComputerScienceC.html 简介:周思博?看名字还以为是中国人呢,其实是一个老美:) 英文名是Jole,创建的公司倒不怎么出名,但看过他写的一些文章,觉得挺有趣的,文笔幽默,而且看得出来都是实践得来的经验,没有长篇大论,但提出的观点和意见等都很独到,看过后收益匪浅,因此推荐给大家!                                            

肆无忌惮:seo文章的秘密和有效的学习方法

以我的亲身经历来说,我认为seo理论学习的主要途径是看文章,看一些高手老手的文章,总之是看一些别人总结的建议和经验.像chiaz,admin5等就是非常不错的平台,无论新手还是老手都能学到很多东西.更为主要的是很多seo业内的高手们也都喜欢在这里发很多原创的文章,这些都是很有价值的东西. 我刚开始学习seo网站优化推广的时候,我的一个朋友就推荐我来这些个地方看东西,学习别人的东西,并且好像在seo领域流传着这样一句话:你想学会seo吗?先看200篇文章吧!当然看完200篇文章你也不一定就能学会s

Python中的函数式编程

虽然人们总把Python当作过程化的,面向对象的语言,但是他实际上包含了函数化编程中,你需要的任何东西.这篇文章主要讨论函数化编程的一般概念,并说明用Python来函数化编程的技术. 我们最好从艰难的问题开始出发:"到底什么是函数化编程呢?"其中一个答案可能是这样的,函数化编程就是你在使用Lisp这样的语言时所做的(还有Scheme,Haskell,ML,OCAML,Mercury,Erlang和其他一些语言).这是一个保险的回答,但是它解释得并不清晰.不幸的是对于什么是函数化编程,很

用python解决project euler中的题目

寒假期间学习了python,现在基本上就能上手使用它来解决project euler里面的题目了,用python真的是没得说的,一个字"赞".在C++中需要用一大堆代码实现的算法,在python中,只需要那么短短几行.而且还有惊艳的运行速度.借用<可爱的python>里面的一句话:"人生苦短,我用python". [project euler 055] 求经过一系列规则不能得到回文数的数的个数.题目在此: If we take 47, reverse a

比较不错的函数式JavaScript编程指南教程_javascript技巧

你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性. 要求:你应当已经对JavaScript和DOM有了一个基本的了解. 写这篇指南的目的是因为关于JavaScript编程的资料太多了但是极少的资料提到了JavaScript的函数式特性.在本指南中,我只会讲解这些基本知识而不会深入其它的函数式语言或这是Lambda算子. 你可以点击所有的例子然后你所看到的代码就会被执行,这样就可以令指南变得具有交互性.你也可以使用这个沙箱来尝试. 第