2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Colm 语言简介

  • 2011-05-30
  • 本文字数:849 字

    阅读完需:约 3 分钟

编程语言最近(再次)成为研究的主要题目,并且,这次人们仔细地关注它们的语义基础:

程序就是带有语义的结构化对象。结构让我们可以对程序做转换。而语义则为我们提供了比较程序以及推断转换有效性的方法。语义包括程序的外延和内涵行为。

程序转换(Program Transformation)也得益于这种新的研究浪潮,并且已经有公司成功发布了商业化的产品

程序转换是把一种程序转换为另一种的操作。而术语“程序转换”也被用于描述实现程序转换的算法。程序中被转换的语言和编写得到的程序所用的语言分别被叫做源语言和目标语言。

Adrian Thurston最近发布了 Colm(计算机语言处理)的第一个版本,这种语言被设计用来对计算机语言进行分析和转换。Adrian 是在皇后大学(ON,Canada)读博士期间开发了 Colm。他解释说:

一种转换语言会拥有基于正规语言的类型系统。它不会定义类或是数据结构,而是会定义语法。根据语法会自动构造解析器,而这个解析器会用于两种目的: 解析输入语言,并解析执行分析的程序中的结构模式。在这种设定中,基于语法的解析非常重要,因为它确保输入和结构化模式都从同样的类型系列解析为树状结构,从而让我们可以进行比较。

Colm 的主要贡献在于解析方法。

Colm 的解析引擎是广义上的,但是它也考虑到了对二进制全局数据结构的构建,那种结构可以在解析过程中查询。在其它广义的方法中,对全局数据的构建需要慎重的考虑,因为在解析方法中会存在固有的并发操作。这是一种非常巧妙的方法,经常可以在总体上避免问题的发生,并把问题延迟到对解析森林在解析之后的后续处理中。

使用 Colm,我们可以在对输入的第一次遍历过程中就获得正确的解析树,并确保某些回溯操作是可接受的。Colm 让我们不需要推断对全局数据的并发更新,也不需要获取很多可能的解析树,只是把错误的抛弃即可。

元编程(也叫做面向元模型的编程)取得了很大进展,这多亏有了对语言工作台和像Colm 这样强大的转换技术的开发。你可能会使用一种吗? 你已经使用一种了吗?你选择的是哪种呢?

查看英文原文: Introducing the Colm Programming Language

2011-05-30 09:073402
用户头像

发布了 340 篇内容, 共 138.2 次阅读, 收获喜欢 13 次。

关注

评论

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

软件测试 | 测试开发 | 接口测试实战 | Android 高版本无法抓取 HTTPS,怎么办?

测吧(北京)科技有限公司

https 测试 自动化测试

赋能企业敏捷开发的低代码平台

力软低代码开发平台

软件测试 | 测试开发 | 测试人生 | 双非院校、入职某知名电商公司薪资翻倍还有股票奖励,这个90后小姐姐也太飒了吧?

测吧(北京)科技有限公司

测试 面试题 软件测试面试题

软件测试 | 测试开发 | Jenkins job 机制该如何使用?

测吧(北京)科技有限公司

测试 测试工程师

软件测试 | 测试开发 | Uiautomator项目搭建与实现原理

测吧(北京)科技有限公司

软件测试 测试

软件测试 | 测试开发 | 高性能高维向量的KNN搜索方案

测吧(北京)科技有限公司

软件测试 测试

走向云原生数据库 - 使用 Babelfish 加速迁移 SQL Server 的代码实践

亚马逊云科技 (Amazon Web Services)

数据库 云原生

软件测试 | 测试开发 | 测试人生 | 双非院校跨城重新开始,薪资翻了2倍还多,这个90后小姐姐好飒

测吧(北京)科技有限公司

测试 测试工程师

软件测试 | 测试开发 | 测试人生 | 拿到多个 offer 从了一线互联网公司并涨薪70%,90后小哥哥免费分享面试经验~

测吧(北京)科技有限公司

软件测试 测试 offer

软件测试 | 测试开发 | 测试人生 | 双非学历,从外包到某大厂只用了1年时间,在2线城市年薪近30万,我柠檬了......

测吧(北京)科技有限公司

软件测试 | 测试开发 | 因服务器时间不同步引起的异常

测吧(北京)科技有限公司

软件测试 测试

英特尔将推出第四代至强可扩展服务器,为高性能计算、人工智能和网络提供全方位加速服务

科技之家

软件测试 | 测试开发 | Redis Zset Score精度问题

测吧(北京)科技有限公司

redis 软件测试 测试

MobLink Android端业务场景简单说明

MobTech袤博科技

android 开发者

软件测试 | 测试开发 | Hybird app开发入门之Native和H5页面交互原理

测吧(北京)科技有限公司

软件测试

软件测试 | 测试开发 | 使用Fastmonkey进行iosMonkey测试初探

测吧(北京)科技有限公司

测试 软件测试和开发

软件测试 | 测试开发 | Python数据驱动测试 unittest+ddt

测吧(北京)科技有限公司

Python 软件测试

软件测试 | 测试开发 | 测试人生 | 00后拿下了名企大厂 offer,这个后浪学习之路全公开

测吧(北京)科技有限公司

软件测试 测试

软件测试 | 测试开发 | 浅谈测试需求分析

测吧(北京)科技有限公司

测试 需求 用户需求分析

软件测试 | 测试开发 | 从跨专业手工测试转岗外包,再到 Python 测试开发,跳槽涨薪 85%!

测吧(北京)科技有限公司

软件测试 测试

普适性强的ERP/MES系统为什么难选?4种挑选方案教你避坑

优秀

MES系统 mes ERP系统

软件测试 | 测试开发 | Android 10 来袭

测吧(北京)科技有限公司

android Android开发

软件测试 | 测试开发 | ADBLib 在 android 中的使用

测吧(北京)科技有限公司

android 测试

软件测试 | 测试开发 | 多种框架小程序测试环境构建总结

测吧(北京)科技有限公司

软件测试 测试

软件测试 | 测试开发 | Linux下的Nginx内存泄露定位

测吧(北京)科技有限公司

nginx Liunx 测试开发

内存管理:程序是如何被优雅的装载到内存中

C++后台开发

内存管理 Linux内核 内核源码 内核开发 嵌入式开发

软件测试 | 测试开发 | 测试人生 | 从传统行业到名企大厂,薪资翻倍,我做到了

测吧(北京)科技有限公司

软件测试 测试

软件测试 | 测试开发 | MySQL锁机制总结

测吧(北京)科技有限公司

MySQL 测试

Meta公司内部项目-RaptorX:将Presto性能提升10倍

Alluxio

presto Alluxio #Facebook meta 9月月更

软件测试 | 测试开发 | 测试人生 | 毕业2年,拒绝独角兽入职名企大厂涨薪10万+,这个95后小姐姐好飒

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 测试人生 | 年薪50w+ 并入职名企大厂,这是双非学历小哥哥给自己30岁的礼物

测吧(北京)科技有限公司

软件测试 测试

Colm语言简介_架构_Jean-Jacques Dubray_InfoQ精选文章