写点什么

.NET 下类似 Smalltalk 的语言 SABLE

  • 2009-04-24
  • 本文字数:724 字

    阅读完需:约 2 分钟

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

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

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

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

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

<p>|typeDecl| := nodeStack pop.</p><p>nodeStack peek ~ {BLOCK_NODE} argumentNodes last~ {ARGUMENT_NODE} typeDeclNode: typeDecl.</p>该语言能够进行双向类型推断,从表达式类型中解析出变量或方法的类型(对外推断),或者从期望的类型中解析出表达式的类型(对内推断)。

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

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

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

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

2009-04-24 08:521671
用户头像

发布了 109 篇内容, 共 45.9 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

新运动步数换购小程序

微擎应用市场

ERNIE-4.5-VL:技术解密+应用实战,解锁多模态新场景!

百度Geek说

从 VMware 迁移后,我们IT预算为何反而更宽裕了?

智驱前线

OpenAI 的 Kafka 架构:实现 20 倍增长与五个 9 可靠性,为何评论中却反复提及 Apache Pulsar?

AscentStream

kafka openai

小程序热更新赋能App动态引擎无缝迭代

xuyinyin

如何基于 SpringBoot 快速构建 Apache Pulsar 实时应用

AscentStream

springboot pulsar

开源赋能,智控能耗:MyEMS 能源管理系统的革新之路与深远价值

开源能源管理系统

开源 开源能源管理系统

YashanDB数据库开发者必备:API与二次开发指南

数据库砖家

使用 MSE 流量防护轻松面对运行态流量不确定风险的最佳实践

阿里巴巴云原生

阿里云 云原生 MSE

区块链RWA系统资产标准化的费用

北京木奇移动技术有限公司

区块链开发 软件外包公司 RWA开发

某供应链金融公司多场景敏感数据安全保护实践

原点安全

数据安全 金融行业 供应链金融

如何提升达人投放ROI?5大关键策略揭晓!

Wolink

跨境电商 海外推广 沃链Wolink

安势信息亮相openkylin开发者大会,以“白银捐赠人”身份,共同推动开源安全与合规生态健康持续发展

安势信息

开源 安势信息 白银捐赠人 openkylin开发者大会 开源安全与合规

可扩展系统设计的黄金法则与Go语言实践|得物技术

得物技术

Go 后端

YashanDB数据库开发与测试效率提升指南

数据库砖家

MyEMS 开源能源管理系统:跨领域能效优化的技术实践与价值落地

开源能源管理系统

开源 开源能源管理系统

向日葵、ToDesk、TeamViewer,谁才是远程控制领域的“全能选手”?

申公豹

小红书笔记详情API数据解析(附代码)

tbapi

小红书API 小红书数据采集 小红书笔记详情api 小红书商品详情API

网络ping不通到底有多少原因?一文搞明白!

JackJiang

网络编程 即时通讯 IM

MyEMS:开源力量驱动能源管理数字化转型

开源能源管理系统

开源 开源能源管理系统

小红书笔记列表API开发指南

tbapi

小红书API 小红书笔记数据采集 小红书笔记列表接口 小红书笔记数据 小红书笔记数据分析

Playwright教程基础篇 | 元素定位策略大全

测试人

人工智能 软件测试 自动化测试 测试开发

YashanDB数据库开发环境的搭建与配置技巧

数据库砖家

区块链RWA系统的资产数字化

北京木奇移动技术有限公司

区块链开发 软件外包公司 RWA开发

什么是低代码?低代码云MES主要解决哪些行业痛点

万界星空科技

低代码 制造业 mes 低代码云MES AI低代码MES

基于 Apache Pulsar 构建统一消息流 PaaS 平台

AscentStream

pulsar

AI 全栈开发实战营毕业总结

grandocean

Playwright基础入门篇 | 环境搭建与首个自动化脚本

测试人

JVM对空指针的优化

陈德伟

Java JVM 空指针 jvm优化 NullPo

一年只订阅一份的行业研究,为何是它?《DevData 2025 研发效能基准报告》给你答案

思码逸研发效能

研发效能 研发效能管理 思码逸 AI 编程

高并发写入、毫秒级查询——盘古信息携手 TDengine 时序数据库解决六大技术挑战

TDengine

tdengine 时序数据库 国产时序数据库

.NET下类似Smalltalk的语言SABLE_.NET_Abel Avram_InfoQ精选文章