QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

引入 JavaScript 虚拟机的语言:CoffeeScript 1.0、StratifiedJS、利用 C/C++ 的 Emscripten 和 Python

  • 2010-12-29
  • 本文字数:979 字

    阅读完需:约 3 分钟

JavaScript 虚拟机现在发展非常迅速,而且也不断变得普适化 - 这是语言设计者和实现者都喜闻乐见的事情。期望运行于 JVM 或者.NET 平台的语言也吸引了很多目光,但是最近一些新的语言还是主要围绕 JavaScript 做文章。

JavaScript 的主要缺点就是语言本身,所以开发者着手创建一种能够编译 JavaScript 的新语言

CoffeeScript 刚刚发布了 1.0 版,这门语言希冀于能够在整理 JavaScript 的基础上加入一些有用的特性。CoffeeScript 编译器是使用 CoffeeScript 语言本身编写,可以在编译的时候格式化 JavaScript 代码。

它是使用空格缩进而不是花括号来分隔代码段 - 这个功能引起了社区不小的争论,虽然其他语言,例如 CSS3 扩展 Sass Haml 等也是这样做的。

CoffeeScript 已经开发了近一年时间,但是直到最近才为一些项目所采用。 ArsTechnica 的 iPad 应用就是使用 HTML 和 CoffeeScript 编写,在 PhoneGap 的帮助下作为原生应用运行。37Signal 也发布了 Chalk ,这是一个运行在 iPad 上的白板应用,并且使用了例如 Cache Manifest 这样的 HTML5 特性来支持离线运行。它同样也使用了 CoffeeScript

StratifiedJS 是 JavaScript 的一个超集,它加入了一些并发相关的关键字来解决异步编程的冗长拖沓。可以阅读关于 StratifiedJS 以及浏览器实现 Apollo 背后的动机的采访来获取更多信息。

Emscripten 项目使用了另外一种方法。它尝试将使用 LLVM 编译器的语言引入到 JavaScript 虚拟机中。LLVM 可以将代码编译成比特码,然后 Emscripten 将其翻译成 JavaScript。它使用一个堆数组和一个自定义的 malloc 版本在某种程度上支持手动内存管理。

Emscripten 也可以翻译 C 和 C++ 代码,我们可以看到它的主页上已经有了一些已经翻译好的 C 和 C++ 库的 demo。不仅仅是这两种语言,在主页上我们也可以看到 Python Lua 也有一些已经翻译完毕的运行时 demo。

不只是这些新语言和运行时,已有语言仍然可以翻译成 JavaScript,例如 Haskell ,Steve Dekorte 的 lo 语言也可以在 Skulpt 项目的帮助下翻译成 Python。

仍然需要时间来证明哪种语言将会是最有用和最成功的。但是,有一件事情是肯定的,那就是:即便 Emscripten 这样的解决方案能够流行起来的话,JavaScript VM、JIT 和 GC 开发者仍然需要不断地改进性能。

查看英文原文: Languages Come to Javascript VMs: CoffeeScript 1.0, StratifiedJS, C/C++ with Emscripten, Python

2010-12-29 17:425498
用户头像

发布了 90 篇内容, 共 34.8 次阅读, 收获喜欢 5 次。

关注

评论

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

深入跨域 - 解决方案

京东科技开发者

pfinder实现原理揭秘

京东科技开发者

pump:做市机器人/市值机器人

区块链技术

win版SimLab Composer 11(三维场景制作软件) v12.0.34 特别版

iMac小白

100倍增长的背后:华为IPD实施20年

博文视点Broadview

XSKY星辰天合“一池多芯”助力测、勘行业国产化转型

XSKY星辰天合

拼多多面试:Netty如何解决粘包问题?

王磊

Java

软件测试学习笔记丨Flask操作数据库-数据库和表的管理

测试人

软件测试

面试官:说一说如何优雅的关闭线程池,我:shutdownNow,面试官:粗鲁!

不在线第一只蜗牛

面试 线程池

Mia for Gmail for Mac(邮件管理软件) v2.7.4版

Mac相关知识分享

Mac Mac软件 邮件管理工具

区块链+游戏:重塑虚拟世界的游戏规则

dappweb

区块链游戏

java中判断String类型为空和null的方法

快乐非自愿限量之名

Java null 开发语言

京东商品搜索API(jd.item_search)返回值全攻略

技术冰糖葫芦

API API boy API 安全

AI日报|下个月苹果Siri终于变智能了,语音控制所有App;OpenAI机器人团队即将重出江湖!

可信AI进展

#人工智能

企业未来展望:技术实现使命,转型应对障碍

智达方通

数字化转型 企业管理 企业转型 自动化技术

File Juicer for Mac(Mac文件数据提取工具) v4.99(1538)版

Mac相关知识分享

Mac Mac 软件

Valentina Studio Pro for Mac(专业的数据库管理软件) v14.0版

Mac相关知识分享

Mac Mac 软件

IPQ5322 vs. IPQ4019 Technical Comparison and Application Analysis

wallyslilly

ipq5322

TON DeFi 生态:探索创新与发展轨迹

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

ComfyUI 完全入门:ControlNet 使用教程

京东科技开发者

做了一年Java后端程序员,我想明白了这些

秃头小帅oi

机器学习模型评价、模型与算法选择(综述)

不在线第一只蜗牛

人工智能 机器学习

开发体育直播软件:VIP会员功能的优势及其对平台的积极影响

软件开发-梦幻运营部

Eudic欧路词典 for Mac(英语词典翻译查询工具) v4.6.5版

Mac相关知识分享

Mac 翻译软件 Mac 软件 翻译工具

数据保护技巧揭秘:为导出文件添加防护密码的实用指南

EquatorCoco

数据保护

软件测试学习笔记丨Flask框架-集成Swagger文档

测试人

flask 接口 软件测试 swagger

零基础写框架:从零设计一个模块化和自动服务注册框架

EquatorCoco

大数据 分布式

NFT 101:什么是 NFT 永续交易?

区块链开发团队DappNetWork

引入JavaScript虚拟机的语言:CoffeeScript 1.0、StratifiedJS、利用C/C++的Emscripten和Python_Java_Werner Schuster_InfoQ精选文章