JSchemeMin:又一个JVM平台上的Scheme语言实现

JSchemeMin 0.0.1 发布了: https://github.com/chungkwong/JSchemeMin/releases/tag/0.0.1

“作为Scheme最新(2013年)标准R7RS的实现,JSchemeMin支持Scheme的所有标准特性,包括头等公民地位的过程、尾递归优化、继续、用户定义记录、库(包括R7RS附录A中全部语法和过程,不只base)、异常和健康宏展开。

作为基于JVM的实现,JSchemeMin 让Scheme程序可以调用Java平台的API,也让Java程序运行Scheme代码,这使Scheme可作为Java(以至别的JVM语言)程序的一种扩展语言,类似Nashorn之于JavaScript。

目前,JSchemeMin 只提供解释器而非编译器。基本的性能监视机制已经存在。调试器和覆盖率工具也已经提供。

性能并非JSchemeMin的主要设计目标,大部分情况下用明显的实现方式,不为性能牺牲实现的简单性,但相信足以满足预期的需要。

JSchemeMin为自由软件: 你可以在自由软件基金会的GNU通用公共许可,版本3或按你的意愿更新的版本,的条款下再分发它和/或修改它。”

作为一个仅用不到300小时开发、时间跨度3个月的软件,JScheme只有约7500行有有效产品代码(约6900行Java和600行Scheme),1800行有效测试代码,当然不能抱太大期望。同类软件GNU Kawa可是约15万行有有效产品代码,1.5万行测试精心打造的。“代码写得越急,运行起来越慢”这倒不错。

由于作者相当不负责任,每个版本均可能是最后一个,错误处理与业界标准有一定距离,目前不建议把JSchemeMin用于重要的用途。然而,作者还是有一点点良心的,除了一个外也没发布过别的纯垃圾软件。

不过,在实现过程中还是有一些收获的。不得不说,Scheme真的是我见过最优美的语言,语法太容易解析了,语义相当一致(当然以性能为代价我还可以把它删得更清晰)。我曾以为继续和尾递归优化不好实现,但最后却相当干净地被实现了。如果说看SICP第五章还有隔岸观火的感觉,自已实现就更踏实了。

加入性能监视机制仅需几行Scheme(然后我才理解《编程珠玑续》的一句,什么修改defun的),加入调试器只用百来行Java在一个侧面说明了这个架构是良好(原来设计时根本没考虑过它们)。看来以后不仅可以当程序员还可以当个架构师。

回想高中时两千行的解释循环,而现在平均每个文件不到百行。从更明确的命名、更短的方法、更多的不可变数据结构到Java 8 Lambda与流的广泛应用,从细节中可看到这些年来检起来过的东西的影子,进步还是有的。

实现了Prolog和Scheme后,过程式、对象式、函数式、逻辑式语言都实现过了,再去实现Javascript、Python、Ruby、Perl意义已经不大(无疑烦但不难)。是时候向自然语言和人机交互进军了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值