BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

.NET下类似Smalltalk的语言SABLE

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 张逸 关注 9 他的粉丝 发布于 2009年4月25日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

Kuler软件工具的创始人Keith Robertson在.NET平台下编写了一门类似Smalltalk的语言,名为SABLE。该语言具有Smalltalk语法提供的高质量,同时又能运行在CLR上。

SABLE是一门通用而又必要的面向对象编程语言,它的语法与Smalltalk相似,但其对象与部署模型则与.NET关系更为紧密。SABLE程序运行在ECMA CLR上。SABLE有望成为Web开发中的Smalltalk,它保留了Smalltalk语言的可读性与类型安全,但类型信息却包含在程序集中,在进行Web应用程序部署时,可以输出短小的二进制文件。

Robertson声称,SABLE的最终目的是:

创建一个可变的、灵活的Smalltalk风格的开发环境,而一旦程序编写完成,应用程序则会被编译为普通的程序集……无需动态运行时,它却能给你深刻的动态编程体验。

SABLE的其中一个好处就是Smalltalk的消息传递语法,它允许组成消息链或级联消息。该语言会在编译时执行类型检查,甚至支持消息链的类型转换,而不仅仅是:

|typeDecl| := nodeStack pop.

nodeStack peek ~ {BLOCK_NODE} argumentNodes last~ {ARGUMENT_NODE} typeDeclNode: typeDecl.

该语言能够进行双向类型推断,从表达式类型中解析出变量或方法的类型(对外推断),或者从期望的类型中解析出表达式的类型(对内推断)。

SABLE使用方法、类和程序集的结构定义,但不同于Smalltalk的是,它的元数据仍然保留在程序集中。宏则总是内联方法。关于宏的一个有趣用法是扩充已有的封装好的库。

SABLE并没有预留关键字,但包含了许多预先定义的标识符。其余的重要特性包括:类扩展,契约,以及完全支持CLR的特性如泛型、嵌套类型、元数据特性等。

一个基本的“Hello World”例子如下所示:

sable

有用的链接包括:SABLE编译器(ZIP),SABLE语言的网站

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

CLR上的小语言越来越多了。 by zhang 3

好趋势。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT