AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

引入 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:425722
用户头像

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

关注

评论

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

Hive查询的18种方式

编程江湖

大数据 hive

字典树之旅04.Patricia Trie(二)

极客志

Java 自然语言处理 数据结构 算法 字典树

Kotlin Maps:五个基本函数

坚果

kotlin 28天写作 12月日更

GaussDB(DWS)中共享消息队列实现的三大功能

华为云开发者联盟

线程 数据同步 GaussDB(DWS) 共享消息队列 共享消息

龙智第四次荣登“2021上海软件和信息技术服务业高成长百家”名单

龙智—DevSecOps解决方案

上海软件和信息技术服务业

读《思辨与立场》-07思维的标准

wood

28天写作 批判性思维 思辨与立场

【1分钟调研赢好礼】HarmonyOS Connect 视频课堂用户反馈问卷

HarmonyOS开发者

HarmonyOS

10个比较不错的 JavaScript 库

编程江湖

JavaScript 前端开发

前端开发之JS中filter()的使用

@零度

JavaScript 前端开发

实用机器学习笔记十九:模型验证

打工人!

人工智能 机器学习 深度学习 学习笔记 12月日更

Android 8.0 下载安装进入【安装未知应用】页面,两步简化一步

阿策小和尚

28天写作 Android 小菜鸟 12月日更

COG云原生优化遥感影像,瓦片切分的最佳实践

华为云开发者联盟

云原生 遥感影像 瓦片切分 云上遥感影像文件 华为云地理遥感平台

容器技术正在颠覆传统,重构整个软件世界

巨子嘉

容器 云原生

Java开发Excel数据导入mysql的实用小技巧

@零度

Java MySQL

Redisson:这么强大的实现分布式锁框架,你还没有?

华为云开发者联盟

redis 分布式 分布式锁 可重入锁 Redisson框架

以 Vuex 为引,一窥状态管理全貌

杨成功

JavaScript Vue 大前端 vuex

netty系列之:netty对SOCKS协议的支持

程序那些事

Java Netty 程序那些事 SOCKS 12月日更

龙智宣布与ConnectALL成为合作伙伴 进一步提升DevOps解决方案水平

龙智—DevSecOps解决方案

DevOps ConnectALL 价值流 价值流管理

19《重学JAVA》--集合(一)

杨鹏Geek

Java25周年 28天写作 12月日更

建木持续集成平台v2.1.0发布

Jianmu

DevOps CI/CD 开源社区

【LeetCode】在 D 天内送达包裹的能力Java题解

Albert

算法 LeetCode 12月日更

从 WAN 到 SD-WAN 边缘设备的网络架构

devpoint

TLS ssl SD-WAN 12月日更

Go语言逆向技术:常量字符串

华为云开发者联盟

字符串 go语言 字符 逆向技术 常量字符串

对话龙智专家,共探DevSecOps实践难点

龙智—DevSecOps解决方案

DevOps DevSecOps

签名验证反爬,反反爬第二篇博客,Python爬虫120例

梦想橡皮擦

12月日更

Kubernetes 集群无损升级实践

vivo互联网技术

容器 云原生 服务器集群 Kubernetes 集群

书单 | “实战派”系列,每一本都是学好用好一门技术的“航空母舰”

博文视点Broadview

React进阶(十):React 项目启动原理详解

No Silver Bullet

React 12月日更

Prometheus Exporter (三十二)Varnish Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Varnish

跟着动画学Go数据结构之选择排序

宇宙之一粟

golang 数据结构 选择排序 12月日更

被灵魂问倒:这个BUG为什么没测出来?

华为云开发者联盟

测试 bug 文档 测试用例 测试工程师

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