50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:073617
用户头像

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

关注

评论

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

音视频理论(2)- 音视频传输协议之 RTMP

liuzhen007

签约计划第二季

音视频实战(3)- Mac 系统 MediaInfo 多实例媒体信息分析

liuzhen007

签约计划第二季

第1周作业提交

cqyanbo

实用机器学习笔记四:数据标注

打工人!

机器学习 学习笔记 12月日更 实用机器学习

JavaScript 数据结构之 Map

devpoint

set map ES6 内容合集 签约计划第二季

音视频实战(2)- 如何在网页端给视频添加硬水印

liuzhen007

签约计划第二季

Go error 的四种处理方式

Rayjun

Go Error

从一个乙方视角聊聊敏捷项目

Bruce Talk

Scrum 敏捷 随笔 Agile

什么是QA

homber

QA 测试开发 职场新人 签约计划第二季

关于研发效能推进提升的一点感受

homber

DevOps 研发效能 签约计划第二季

http协议

en

HTTP

从0到1普及前端知识 | 内容合集

你好bk

内容合集 签约计划第二季

JavaScript 数据结构之 Number

devpoint

ES6 math 内容合集 签约计划第二季

斯诺克

Tiger

28天写作

Go并不需要Java风格的GC

Robert Lu

Go 垃圾回收

JavaScript数据结构实用集

devpoint

JavaScript 数据结构 内容合集 签约计划第二季

架构实战营毕业总结

Geek_d18264

架构实战营

勿拖延

Nydia

搭建基本Jest测试框架,解读覆盖率实现原理

梁龙先森

签约计划第二季

JavaScript 数据结构之 Object

devpoint

ES6 Object 内容合集 签约计划第二季

4.《重学 JAVA》—基础语法

杨鹏Geek

Java 25 周年 28天写作 12月日更

架构实战营模块九作业

Geek_d18264

架构实战营

架构实战营,第一周作业

Jude

架构实战营

Prometheus Exporter (十七)JMX Exporter

耳东@Erdong

JMX Prometheus 28天写作 exporter 12月日更

idea-如何解决代码合并冲突?

Java个体户

IDEA

左耳听风,右手敲码

homber

成长 感悟 竞争力 签约计划第二季

Camtasia添加光标效果教程

淋雨

Camtasia

华为中国大学生ICT大赛2021实践赛网络赛道晋级赛试题解析(答案版)

小韩

华为 网络 ICT

如何通过Kubernetes事件来报告错误

Robert Lu

#Kubernetes#

netty系列之:手持framecodec神器,创建多路复用http2客户端

程序那些事

Netty HTTP 程序那些事 http2 12月日更

JavaScript 数据结构之 Set

devpoint

set ES6 内容合集 签约计划第二季

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