---
title: Monkey 的跨平台代码生成
date: '2011-03-15 10:35:18'
draft: false
summary: 跨平台这件事一直都有人做，但真正让人眼前一亮的往往不是“再造一个运行时”，而是尽量复用现有平台，把同一套抽象编译成多套目标代码。
slug: monkey-language-cross-platform-codegen
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/c8xVGT
tags:
- programming-language
- cross-platform
- codegen
- monkey
topics:
- software-engineering
type: post
---

当年看到 `Monkey` 这个语言时，我觉得它最有意思的点，不是“又来一个新语言”，而是它想做的事情很明确：直接把同一套代码生成到多个现有平台和运行时上。

它支持的目标当时就挺广，包括 `C++`、`C#`、`Java`、`JavaScript`、`ActionScript`，以及 `HTML5`、`Android`、`iOS`、`Flash`、`XNA` 这些平台。

这种思路的吸引力在于，它没有执着于先统一所有运行时，而是先承认现实世界已经很碎片化，然后尽量用一层语言抽象把这些平台接起来。

跨平台方案里，我一直觉得这类路线比“重新发明一整套封闭生态”更务实。它当然会带来大量语义映射和平台差异问题，但至少方向很清楚：不是让所有平台变成一个样子，而是让一套业务逻辑尽量能在多个平台上复用。
