一点领悟吧,关于消息传递与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
目录
相关文章
|
8天前
|
机器学习/深度学习 存储 缓存
ATB概念之:算子tiling
算子 tiling 是一种优化技术,用于提高大规模张量运算的计算效率。它通过将大任务分解为小块,优化内存使用、支持并行计算,并防止内存溢出。在ATB中,tiling data指kernel的分片参数,用于指导计算。ATB提供了三种 tiling data 搬移策略:整体搬移、多stream搬移及随kernel下发搬移,旨在优化内存拷贝任务,提高计算效率。
|
6月前
|
存储 人工智能 安全
经验大分享:Storm概念学习系列之Blot消息处理者
经验大分享:Storm概念学习系列之Blot消息处理者
38 0
|
7月前
|
分布式计算 Hadoop 分布式数据库
RDD编程
RDD编程
38 2
|
7月前
|
前端开发 JavaScript 数据安全/隐私保护
第十一章 使用高阶函数和非高阶函数对组件进行优化
第十一章 使用高阶函数和非高阶函数对组件进行优化
10 个 Reduce 常用“奇技淫巧”
10 个 Reduce 常用“奇技淫巧”
|
存储 缓存 分布式计算
深入 RDD 问题-分解和容错 | 学习笔记
快速学习 深入 RDD 问题-分解和容错
165 0
深入 RDD 问题-分解和容错 | 学习笔记
|
存储 JavaScript 前端开发
前端基石:高阶函数之柯里化、组合函数、惰性思想
本文主要讲高阶函数之柯里化、组合函数、惰性思想
261 0
|
并行计算 程序员
《并行计算的编程模型》一3.7.4 广播
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.7.4节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2400 0