产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

平台多样化:Gavin Grover 的 Groovy 之路

  • 2009-06-12
  • 本文字数:1770 字

    阅读完需:约 6 分钟

最近,Gavin Grover 将其开发的 Groovy-DLR 1.0 的 beta 04 版源码上传到了 codeflex 站点,该版本对以前的版本作出了一些改进,包括就地(in-place)注释 lex 定义。

众所周知,Groovy 是在借鉴了众多语言如 Perl、Python、Ruby 以及 Smalltalk 的基础上发展而来的,最初是在运行于 Java 平台的,而且其支持 Java 的大部分语法,与 Java 有着天然的集成性,被称为 Super Java。在 Grails 出现之后,极大地推动了 Groovy 的发展。

随着 Groovy 的发展,一些 Groovy 的爱好者开始琢磨着扩展 Groovy 的生存空间,Gavin Grover 就是其中一位,他开始考虑使 Groovy 语言在.NET 的 DLR 环境下运行。从 3 月份开始,Gavin Grover 陆续在 codeplex 上发布了 Groovy-DLR-1.0 的几个 beta 版本。他在其博客上是这样描述的:

最近,Gavin Grover 开始给微软的动态语言运行时(DLR)增加 Groovy 语言。他的主要精力投入到用 combinator parser 创建一个全功能的句法外衣,这是 (J)Groovy 所缺乏的。Groovy 的语法是下一代 C 语言语系,旨在给语言句法带来自称性 (self-referentiality)。 Groovy 未来的目标平台还包括 Parrot VM、Google GWT AST 以及 Python VM。

不过,Gavin Grover 似乎放弃了 Groovy/DLR 的后续发展:

……我正在把语言切回到 JVM、(J)Groovy AST、SCALA 上……

虽说 Groovy-DLR 还未成熟就面临夭折的可能,但无论如何,Gavin Grover 给我们提供了一种在.NET 平台上运行 Groovy 的尝试,也给希望使用 DLR 创建其他语言的人们提供了一个实例教材,Groovy-DLR 1.0 beta 04 的源代码可以从这里下载。

Gavin Grover 还在其博文 Groovy’s Groovier Roadmap 中提到了其 Groovy 路线图,说明了他已经实现及以后想要实现的 Groovy 特性:

就地 lex 定义(In-place lexing definitions)
Beta-4 提供了基本的就地注释 lex 定义。例如,源文件中的 addcomment "(?s:#{4}.*)"语句会给 whitespace lexer 增加这一注释定义,使其可以用于后续要解析的语句和文件。此处这一特例可以让我们在源文件加入####以表示到达了文件尾部(文件在此注释之后的内容无需再解析)。就地解析 hooks(In-place parsing hooks) 我们还将在 parser 中提供 hooks 以使 Groovy 程序员可以定义自己的基本表达式、路径元素(Path element)、操作符以及语句。我们将把后缀操作符(++ 和–)修改到路径元素中。操作符将有 4 层定义良好的组:从右向左运算(right-associative)的一元前缀、从左向右运算(left-associative)的二元操作、从右向左运算的三元操作以及从右向左运算的赋值(assignment)。

多种语法形式 Python 使用了缩进吧语句组织成块(block),C 语法语言使用大括号。Groovy 将同时提供两种技术。在工作过程中,我们还将把该技术抽象到使用 (: 和 [: 的语法里的其他列表当中。Groovy 开发者将能够选择语法形式,甚至在同一部分代码中混用两种形式,就像在自然语言中一样。

别名 别名是最初在为 GrAST (Groovy AST) 编写另一个 lexer/parser 过程中最能引起我兴趣的。我很早以前就希望用中文字符作为英语名字和程序关键字的别名,这样可以让代码更短。我不喜欢这样写程序:

content.tokenize().groupBy{ it }. collect{ [‘key’:it.key, ‘value’:it.value.size()] }. findAll{ it.value > 1 }.sort{ it.value }.reverse(). each{ println “${it.key.padLeft( 12 )} : $it.value” }

我想这样写(注:国人看着可能有些别扭,领会其意图即可):

物. 割 (). 组{它}. 集{ [‘钥’: 它. 钥, ‘价’: 它. 价. 夵 ()] }. 都{它. 价 >1}. 分{它. 价}. 向 (). 每{打"${它. 钥. 左 (12)}: $ 它. 价"}

Groovy 将允许程序的关键子及名字使用别名词汇。即使从右向左阅读的语言也将能够实现。所有 Unicode 的词汇将与 Groovy 语言紧密集成在一起。

自定义方法编辑器 我认为在 Groovy 提供 CJK 字符支持之后,CJK 字符将快速流行起来,我还想提供一种输入方法,可以让向我这样的非中国人可以容易的学习和使用。为 CJK 字符通工程易用的 IME 这只是第一步;最终该 IME 将能够支持每一种 Unicode 字符。10 年内,开发者就可以用埃及文字进行编程了!你能想像那是怎样的情景么?

虽然还有很长的路要走,但是 Gavin Grover 的一些思路也给了我们无限遐想,尤其是编写中文的 Groovy 程序,那种感觉一定不错吧!

2009-06-12 00:021936
用户头像

发布了 150 篇内容, 共 45.7 次阅读, 收获喜欢 10 次。

关注

评论

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

【信创小知识】国产化和信创是一回事吗?怎么理解?

行云管家

信创 国产化

数据库国产替代涌入千军万马 亚信科技CEO高念书:非头部企业将难以生存

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库

面向状态机编程:复杂业务逻辑应对之道

京东科技开发者

接口 istio 灰度发布 状态机 企业号 3 月 PK 榜

坏了!面试官问我垃圾回收机制

做梦都在改BUG

Java JVM 垃圾回收

阿里三面被面试官狂问Redis,简历上再也不敢写"精通"了

做梦都在改BUG

Java 数据库 redis 缓存 面试

手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

华为云开发者联盟

物联网 华为云 华为云开发者联盟 企业号 3 月 PK 榜 4G

「 项目管理 」项目立项前需要思考的9个问题

小刘学编程

项目管理 pmp 项目经理

基于 Istio 的灰度发布架构方案实践之路

京东科技开发者

微服务 istio 灰度发布 企业号 3 月 PK 榜

软件测试/测试开发丨后端Web开发框架(Java)

测试人

软件测试 springboot 测试开发

【3.3-3.10】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

直播回顾|聚焦科技自立自强,Bonree ONE 助力国产办公自动化平稳替代

博睿数据

可观测性 智能运维 博睿数据 信创生态 直播回顾

两会聚焦|智能制造的“加速时刻”来了

硬科技星球

NebulaGraph:打造灵活弹性的云原生图数据库,与阿里云计算巢共同拥抱开放生态

云布道师

数据库 阿里云

GitHub险崩盘,竟是因网易大牛「Redis应用与深度实践笔记」泄露

做梦都在改BUG

Java 数据库 redis 缓存 面试

国家基础学科公共科学数据中心与和鲸科技共建数据社区

ModelWhale

数据 科学分析 社区 合作

高效基于scrum的项目管理工具分享

顿顿顿

Scrum 敏捷开发 项目管理工具 项目管理软件、 leangoo

脚本调用工具:FastScripts 直装版

真大的脸盆

Mac 脚本 Mac 软件 Mac 系统

BSN-DDC基础网络详解(五):接入DDC网络(1)

BSN研习社

怎样判断led显示屏防火性能的好坏

Dylan

行业 LED显示屏 市场

FinOps首次超越安全成为企业头等大事|云计算趋势报告

SEAL安全

云计算 云成本 FinOps 企业号 3 月 PK 榜

22年阿里高频Java面试题总结:分布式+中间件+高并发+算法+数据库

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

58个实例+2个项目,带你深入技术原理,彻底搞懂Spring Boot

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

金融交易行为监测方法——利用 CNN 模型实现行为识别

亚马逊云科技 (Amazon Web Services)

PCB焊盘设计应掌握哪些要素?

华秋电子

Spring Boot或Spring Cloud快速实现文件上传

做梦都在改BUG

Java Spring Cloud Spring Boot

又一个开源第一!飞桨联合百舸,Stable Diffusion推理速度遥遥领先

百度Geek说

人工智能 开源 PaddlePaddle 企业号 3 月 PK 榜

增强认证--MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 企业号 3 月 PK 榜 增强认证

浦发银行与易观千帆签约合作

易观分析

金融 银行 经济

技术创新,让企业拥有智能“伯乐”,实现精准识人

用友BIP

Spring源码分析-BeanFactoryPostProcessor

做梦都在改BUG

Java spring spring源码

买了等保安全设备就一定安全吗?就一定能抵御网络风险呢?

行云管家

网络安全 等保 等级保护

平台多样化:Gavin Grover的Groovy之路_Java_宋玮_InfoQ精选文章