写点什么

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

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

关注

评论

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

千万级学生管理系统考试试卷存储方案

面向对象的猫

数字化加速碳基文明向硅基文明的演进

小鲸数据

数字化 数字孪生 碳基文明 硅基文明

【Flutter 专题】74 图解基本 DropdownButton 下拉选项框按钮

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

架构实战营 - 模块四作业

Julian Chu

架构实战营

oeasy教您玩转vim - 10 - # 插入新行

o

08-消息队列备选架构选择和细化

Lane

kubernetes/k8s CRI分析-kubelet创建pod分析

良凯尔

Kubernetes 源码分析 Kubernetes Plugin #Kubernetes# cri-o

业务架构图的定位:表达业务层级和关系

arctec

在线身份证号码提取生日工具

入门小站

工具

Go并发之同步异步、异步回调

Regan Yue

高并发 协程 Go 语言 8月日更

07-数据库存储架构

Lane

Flutter Android 端 Activity/Fragment 流程源码分析

工匠若水

flutter android 0 基础学习 Flutter 8月日更

三十多岁跳槽无路,晋升无门,濒临绝望之际受贵人指点,成功上岸阿里(Java 岗)

Java 编程 程序员 架构 计算机

Tensorflow随笔(二)

毛显新

人工智能 深度学习 tensorflow keras

架构设计能力提升

arctec

每个人都可以说不

escray

学习 极客时间 朱赟的技术管理课 8月日更

期末设计

Geek_9cf7b5

Linux之crontab命令

入门小站

Linux

毕业设计

Chris Cheng

我能行我能行!字节三面 + 微信四面 +PayPal 四面, 大厂面经分享

Java 编程 程序员 架构 IT

架构师实战营模块四作业

袁小芬

趁着课余时间学点Python(六)终止循环,阻断循环

ベ布小禅

8月日更

【LeetCode】用两个栈实现队列Java题解

Albert

算法 LeetCode 8月日更

一款非常简单的基于WebRTC的视频预览播放器(具有贴图、视频特效)

liuzhen007

8月日更

【设计模式】组合模式

Andy阿辉

C# 后端 设计模式 8月日更

iOS开发:实现点击常用控件弹出地区选择框(万能方法)

三掌柜

8月日更 8月

电商秒杀系统

Presley

前端之数据结构(四)

Augus

数据结构 8月日更

毕业设计电商秒杀系统

梦寐凯旋

#架构实战营

毕业总结

Chris Cheng

架构训练营

总结

wade

#架构实战营

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