写点什么

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

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

关注

评论

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

2022-09-10:以下go语言代码输出什么?A:编译错误;B:49.0;C:49。 package main import ( “fmt“ ) func main() { ch

福大大架构师每日一题

golang 福大大 选择题

一张图告诉你出海服务商怎么选:中国互联网出海服务商生态图谱

易观分析

报告 出海服务商

LeetCode-861. 翻转矩阵后的得分(Java)

bug菌

9月日更 9月月更

【云原生 | 从零开始学Docker】二、Docker的常用指令学习以及使用

泡泡

Docker 云计算 云原生 9月月更

HTML标准解读第一章:HTML、XML、XHTML、SGML究竟有什么区别?

水鱼兄

html 前端 HTML标准

【JavaWeb】Servlet系列——session会话机制

胖虎不秃头

Web java; 9月月更

哪些应用适合Docker化改造

阿泽🧸

Docker 9月月更

【C语言深度剖析】深入理解C语言中函数的递归算法

Albert Edison

递归 C语言 函数 9月月更

高性能使用索引

急需上岸的小谢

9月月更

创立一年就估值5亿美金,这个项目是怎么做到的?

One Block Community

区块链 创业 融资 defi

如何用Python代码绘制赏月美景?

芯动大师

中秋节

IntelliJ IDEA远程调试Elasticsearch6.1.2

程序员欣宸

elasticsearch 9月月更

FreeRTOS记录(五、FreeRTOS任务通知)

矜辰所致

FreeRTOS 9月月更 任务通知

InnoSetup制作补丁包替换文件操作

中国好公民st

c++ qt 9月月更

跟我以前学mybatis

楠羽

mybatis 笔记 9月月更

计算机网络——OSI参考模型

StackOverflow

编程 计算机网络 9月月更

融云 Flutter SDK,跨平台开发的真香之选

融云 RongCloud

flutter 跨平台开发 SDK 教程

【好一朵美丽的玫瑰花】(C++代码实现+EasyX图形化界面)

Fire_Shield

计算机视觉 9月月更 EasyX

值得收藏|三种经典的指标监控模型

穿过生命散发芬芳

9月月更 监控指标

力扣260 - 只出现一次的数字||| 【哈希映射、异或位运算+分治思想】

Fire_Shield

位运算 哈希表 9月月更

Web3.0 会长什么样?

掘金安东尼

前端 Web3.0 9月月更

【C语言】字符函数&字符串函数&内存函数(上)[进阶篇_复习专用]

Dream-Y.ocean

c c++ 9月月更

【JavaWeb】JSP系列——关于JSP、JSP的基础语法、利用Servlet+JSP改造项目、JSP指令、JSP九大内置对象

胖虎不秃头

Web java; 9月月更

【JavaWeb】Servlet系列——Cookie机制、乱码问题总结

胖虎不秃头

Web java; 9月月更

架构师的十八般武艺:高并发架构

agnostic

高并发

【编程实践】一步步带你从二叉树到实现哈夫曼编码

迷彩

算法 二叉树 9月月更 哈夫曼编码 哈夫曼树

C++ 学习 ------cmath 头文件的源码学习 03

桑榆

c++ 源码阅读 9月月更

图解Kafka的服务端的网络通信模型

石臻臻的杂货铺

kafka Kafka实战 9月月更

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