最近的兴趣集中在 如何构建灵活、实时的编程环境, 为教育、创造和探索提供友好的支持
正在研究以下几个项目:
本文主要对 Lively 相关资料做一番梳理,做为备忘录。
Dan Ingalls是五代Smalltalk环境的主要架构师、设计师和实现者, 也是Alan Kay在施乐(Xerox Palo Alto)的老搭档。
Alan Kay在《The Early History Of Smalltalk》里提到:
我们所有人都同意,在Smalltalk的大部分开发中,Daniel是核心人物…Daniel不仅仅是一个出色的实现者,随着Smalltalk进入到现实世界,Daniel逐渐承担越来越多设计师的职责,不仅是语言设计师,还包括用户界面设计师。
Dan Ingalls的最新项目是Lively。
你可以通过这个PPT获得对Lively的直观感受.
PPT中提到的项目,你也可以亲手体验:
更多例子参考: projects
Lively是一种新的Web编程方法,使用MIT开源协议。目前该项目放在HPI软件构架小组下。它为Web应用程序提供了完整的平台,包括动态图形,网络访问和开发工具。
维基百科将其概括为:
Lively Kernel是一个JavaScript环境,该环境允许实时、交互式进行Web编程,或与Web浏览器内部的对象进行实时交互。
Lively Kernel是一个图形合成和集成编程环境,它使用标准的浏览器图形(W3C Canvas或SVG)完全以JavaScript编写。因此,兼容任何浏览器,在加载网页后便开始运行。它能够编辑自己的代码和图形,并且通过其内置的WebDAV支持,可以保存结果,甚至可以将其克隆到新的网页上。除了具有应用程序开发功能外,它还可以充当自己的集成开发环境(IDE),使整个系统能够自给自足,除了浏览器外没有其他依赖。
提升到Lively宇宙中,从而使Lively成为控制和混搭中心。我的兴趣主要在lively.next
逐一做些记录
lively.next主页 的自我介绍是:
一个个人编程工具包。它强调生动、直接和互动。
一个表达有力想法的平台,much in the tradition of original systems and tools that defined the meaning of “personal computing” –-这就是Lively项目的目的。
live.next系统构成了一个灵活的个人计算环境和构建工具包。我们希望这将是真正帮助我们思考、学习、做事和创造的媒介的垫脚石。
提升到实时编程领域。lively.next 是用 JavaScript 实现的,但也可以与其他语言和系统进行互操作。允许将其他应用程序混搭并“提升”到Lively编程领域。
包和模块,lively.next的主干。它包含类似于Smalltalk的元接口,该接口允许Lively(或使用Lively packages 的程序)具有允许检查和修改的 runtime。
JavaScript源码解析和转换工具。 这是为了对代码进行分析和 instrument,从而可以进行检查、评估和调试。 代码分析也被用于lively.next的IDE的各种工具中。
受控的代码执行,可以实现运行时系统的修改和扩展。lively.vm提供了一种方法,可以将作用域注入到正常的JS eval(求值) 和 instruments code中,以观察副作用和控制流程。
对HTTP和文件系统资源的高级访问,很容易扩展到其他后端。
浏览器和服务器端数据库,用于对象存储和版本管理。 基于CouchDB和PouchDB,提供同步和复制功能。
JavaScript object graphs 的序列化和反序列化,允许快照对象和 Lively 页面(世界)的状态。 wiki系统和PartsBin的基础。 提供插件系统,使其兼容库和其他数据源和对象类型。
共享和发布应用程序及其组件的对象库。
ps: PartsBin 正在迁移到 Master Components
可用于远程运行和控制Unix / Linux / Windows上的操作系统进程。 还提供了通过lively.2lively消息系统发起交互的集成。
基于node.js的服务器,围绕着与客户端lively.next相同的灵活概念构建。 提供一个插件系统,可以用来轻松扩展服务器端功能。
lively.next系统之间的远程点对点消息发送机制。 它是围绕着一个简单的接收者-选择者-参数(receiver-selector-argument)语义构建的,它允许lively.next系统以比普通的客户端-服务器(client-server)交互更灵活的方式交换信息。
用户认证和授权系统。 提供一个基于token的用户模型。 用户对象可供其他子系统使用,用于Wiki和PartsBin对象的授权。 可用于设计多用户交互系统
lively.morphic + lively.graphics
丰富的、交互式的、可组合的图形用户界面,以Self的Morphic UI为蓝本。 提供了一个高于HTML / SVG / Canvas的抽象,但可以与本地Web内容集成,以创建混搭和系统集成。 使用ObjectEditor,图形对象可以直接被脚本化,这降低了典型编程任务的抽象性。
lively.bindings 用于反应式数据绑定的数据流系统。与lively.morphic结合使用,它具有图形扩展,该图形扩展允许交互式连接对象,类似于可视数据流编程。
lively.ide 用于编程和调试JavaScript,HTML,CSS,shell的工具。也可以集成其他语言(请参见cloxp和LivelyR)
一个基于Web的探索性、自支持的开发环境
将Lively用做 Adapter 其中的一个前端。Lively提供了远超Scratch的灵活性,是绝佳的教育平台。

Lively 或许会颠覆整个网络生态,其原因在于
*nix(Unix-like)生态我将 Lively 视为:
*nix异构体系兼容性的 Smalltalk目前的思路是在Lively中运行 Python workspace(将Python提升到smalltalk)。
只要 lively 环境中存在 python repl,连接CodeLab Adapter 与 Lively就变得很简单,引入Adapter client即可。
在本地运行 lively.py。
之后在lively中打开python ide即可。

未来计划基于 lively.2lively 或者 EIM 协议构建新的 Python ide.
ide object 非常简单:

lively4和live-next都在积极推进中,目前存在不少bug,诸如:
PartsBin 正在迁移到 Master Components
目前建议从一些简单的项目开始探索,以下项目是非常好的起步方式。
另一个建议是,适应类Smalltalk环境的最好方式是: 在那个世界中与事物去交互(talk),不要太在意文本代码的细节。
最近的兴趣集中在 如何构建灵活、实时的编程环境, 为教育、创造和探索提供友好的支持
正在研究以下几个项目:
本文主要对 Lively 相关资料做一番梳理,做为备忘录。
Dan Ingalls是五代Smalltalk环境的主要架构师、设计师和实现者, 也是Alan Kay在施乐(Xerox Palo Alto)的老搭档。
Alan Kay在《The Early History Of Smalltalk》里提到:
我们所有人都同意,在Smalltalk的大部分开发中,Daniel是核心人物…Daniel不仅仅是一个出色的实现者,随着Smalltalk进入到现实世界,Daniel逐渐承担越来越多设计师的职责,不仅是语言设计师,还包括用户界面设计师。
Dan Ingalls的最新项目是Lively。
你可以通过这个PPT获得对Lively的直观感受.
PPT中提到的项目,你也可以亲手体验:
更多例子参考: projects
Lively是一种新的Web编程方法,使用MIT开源协议。目前该项目放在HPI软件构架小组下。它为Web应用程序提供了完整的平台,包括动态图形,网络访问和开发工具。
维基百科将其概括为:
Lively Kernel是一个JavaScript环境,该环境允许实时、交互式进行Web编程,或与Web浏览器内部的对象进行实时交互。
Lively Kernel是一个图形合成和集成编程环境,它使用标准的浏览器图形(W3C Canvas或SVG)完全以JavaScript编写。因此,兼容任何浏览器,在加载网页后便开始运行。它能够编辑自己的代码和图形,并且通过其内置的WebDAV支持,可以保存结果,甚至可以将其克隆到新的网页上。除了具有应用程序开发功能外,它还可以充当自己的集成开发环境(IDE),使整个系统能够自给自足,除了浏览器外没有其他依赖。
提升到Lively宇宙中,从而使Lively成为控制和混搭中心。我的兴趣主要在lively.next
逐一做些记录
lively.next主页 的自我介绍是:
一个个人编程工具包。它强调生动、直接和互动。
一个表达有力想法的平台,much in the tradition of original systems and tools that defined the meaning of “personal computing” –-这就是Lively项目的目的。
live.next系统构成了一个灵活的个人计算环境和构建工具包。我们希望这将是真正帮助我们思考、学习、做事和创造的媒介的垫脚石。
提升到实时编程领域。lively.next 是用 JavaScript 实现的,但也可以与其他语言和系统进行互操作。允许将其他应用程序混搭并“提升”到Lively编程领域。
包和模块,lively.next的主干。它包含类似于Smalltalk的元接口,该接口允许Lively(或使用Lively packages 的程序)具有允许检查和修改的 runtime。
JavaScript源码解析和转换工具。 这是为了对代码进行分析和 instrument,从而可以进行检查、评估和调试。 代码分析也被用于lively.next的IDE的各种工具中。
受控的代码执行,可以实现运行时系统的修改和扩展。lively.vm提供了一种方法,可以将作用域注入到正常的JS eval(求值) 和 instruments code中,以观察副作用和控制流程。
对HTTP和文件系统资源的高级访问,很容易扩展到其他后端。
浏览器和服务器端数据库,用于对象存储和版本管理。 基于CouchDB和PouchDB,提供同步和复制功能。
JavaScript object graphs 的序列化和反序列化,允许快照对象和 Lively 页面(世界)的状态。 wiki系统和PartsBin的基础。 提供插件系统,使其兼容库和其他数据源和对象类型。
共享和发布应用程序及其组件的对象库。
ps: PartsBin 正在迁移到 Master Components
可用于远程运行和控制Unix / Linux / Windows上的操作系统进程。 还提供了通过lively.2lively消息系统发起交互的集成。
基于node.js的服务器,围绕着与客户端lively.next相同的灵活概念构建。 提供一个插件系统,可以用来轻松扩展服务器端功能。
lively.next系统之间的远程点对点消息发送机制。 它是围绕着一个简单的接收者-选择者-参数(receiver-selector-argument)语义构建的,它允许lively.next系统以比普通的客户端-服务器(client-server)交互更灵活的方式交换信息。
用户认证和授权系统。 提供一个基于token的用户模型。 用户对象可供其他子系统使用,用于Wiki和PartsBin对象的授权。 可用于设计多用户交互系统
lively.morphic + lively.graphics
丰富的、交互式的、可组合的图形用户界面,以Self的Morphic UI为蓝本。 提供了一个高于HTML / SVG / Canvas的抽象,但可以与本地Web内容集成,以创建混搭和系统集成。 使用ObjectEditor,图形对象可以直接被脚本化,这降低了典型编程任务的抽象性。
lively.bindings 用于反应式数据绑定的数据流系统。与lively.morphic结合使用,它具有图形扩展,该图形扩展允许交互式连接对象,类似于可视数据流编程。
lively.ide 用于编程和调试JavaScript,HTML,CSS,shell的工具。也可以集成其他语言(请参见cloxp和LivelyR)
一个基于Web的探索性、自支持的开发环境
将Lively用做 Adapter 其中的一个前端。Lively提供了远超Scratch的灵活性,是绝佳的教育平台。

Lively 或许会颠覆整个网络生态,其原因在于
*nix(Unix-like)生态我将 Lively 视为:
*nix异构体系兼容性的 Smalltalk目前的思路是在Lively中运行 Python workspace(将Python提升到smalltalk)。
只要 lively 环境中存在 python repl,连接CodeLab Adapter 与 Lively就变得很简单,引入Adapter client即可。
在本地运行 lively.py。
之后在lively中打开python ide即可。

未来计划基于 lively.2lively 或者 EIM 协议构建新的 Python ide.
ide object 非常简单:

lively4和live-next都在积极推进中,目前存在不少bug,诸如:
PartsBin 正在迁移到 Master Components
目前建议从一些简单的项目开始探索,以下项目是非常好的起步方式。
另一个建议是,适应类Smalltalk环境的最好方式是: 在那个世界中与事物去交互(talk),不要太在意文本代码的细节。