当前位置: 首页 > 科技观察

易于编译为JavaScript的流行工具

时间:2023-03-18 21:35:55 科技观察

有大量小型语言可以让您轻松地将代码移动到Web,而且几乎没有缺点。每个程序员都有一两种最喜欢的语言。JavaScript爱好者是当今最幸运的人,因为他们最喜欢的语言正在席卷互联网,而互联网正在席卷全球。然而,爱上其他编程语言的人却卡壳了。他们要么袖手旁观,咒骂铺天盖地的HTML、CSS、JavaScript和Node.js,要么想办法爱上它。幸运的是,还有第三种方法可以让您享受自己喜欢的语言,同时仍然将您编写的代码部署到不断增长的JavaScript领域:您只需转换代码,而且非常简单。性能可能会受到一点影响,但通常没有您想象的那么严重。然后您可以将您的代码发送到浏览器,放弃尝试让人们安装可执行文件。坚定的人可能会认为这是一种可鄙的投降,对某些人来说甚至是一种叛国行为,这种行为如此背信弃义,以至于你不想让你的同龄人知道这一点。其他人认为,事实并非如此简单。让代码工作是一回事,将各个部分组合在一起并构建用户界面需要大量额外的工作。不要为自己感到难过,但有充分的理由让这个想法更受欢迎。首先,JavaScript引擎的运行速度比以前快得多。其次,由于众多框架和充足的HTML/CSS设计人才,构建Web用户界面从未如此简单。第三,JavaScript已经成为一种通用语言。如果您可以将所有这些语言(数量惊人地多)转换为JavaScript,那么您也可以将它们全部连接起来。我们来这里是为了了解许多允许一些最好的编程语言编译成JavaScript的小型语言。以后的文章会介绍一些没落的语言遇到浏览器是如何重生的。没有理由可怜或恶心。这些技术可以让你在任何运行JavaScript的环境中运行时享受你最喜欢的语言。#p#Ruby有很多选项可以让你在JavaScript环境中运行时像Ruby程序员一样思考。例如,RubyJS是一个JavaScript库,它向JavaScript对象添加了许多原始数据类型。您编写的是严格的JavaScript,但特殊的Ruby对象在大多数情况下表现得像Ruby代码。字符串(String)、值(Number)、迭代器(Iterator)和计数器(Enumerator)等你来使用。如果编写像Ruby一样运行的JavaScript还不够,Opal可以将Ruby源代码直接翻译成JavaScript。它通常表现得像一个Ruby虚拟机,但有时又不是。例如,Ruby的可变字符串可以直接转换为JavaScript的不可变字符串,这对某些应用程序来说应该不是问题,但会把一些人逼疯。像这样的其他小效果可能会在边缘情况下导致大惊喜。对于那些想要更多功能的人来说,更全面的解决方案是HotRuby,它是一种动态处理Ruby操作码的JavaScript虚拟机。代码库有点陈旧,但它为真正的粉丝提供了另一种选择。Java很难知道是什么激发了Google开发GoogleWebToolkit,这是一种将Java转换为JavaScript的预处理器。也许管理层喜欢Java,不希望它消亡。也许管理层有多余的Java人才坐在那里等待运行网络。不管是什么原因,谷歌都有机会,经常将Java用于其最先进的网络产品。对于那些拥有大量Java代码但没有时间重写它们的人来说,Java是一份很棒的礼物。语言的价值在那里,但它缺少一些不太常用的类,如BigInteger;话虽如此,您通常可以找到添加它们的方法。用户界面框架基本上是借鉴了Swing,所以Swing开发者会觉得很熟悉。其他开发人员不会觉得它太难学。GoogleWebToolkit绝不是Java程序员的唯一选择。Java2Script与Eclipse完全集成,GrooScript可以转换与Java密切相关的Groovy。有几种工具可以与JavaScript一起运行Java虚拟机(JVM)字节码,这是一个巧妙的想法,即使您没有Java源代码也可以让您部署JAR文件。Doppio和Node-jvm等一些工具是解释器,其他工具如TeaVM或Dragome可以将字节码干净地转换为JavaScript。#p#ErlangErlang爱好者有几个选择。一种解决方案是使用Erjang,这是一种在JVM上运行Erlang的工具,然后用于通过上述Java选择之一运行Java字节码。觉得这听起来很简单?Shen是一个将Erlang及其“更接近的语言”(如Elixir、Joxa和Lol)转换为JavaScript的编译器。如果你想在Node.js中运行这段代码,还有包erlang-shen-js。第三种选择是使用LuvvieScript,它是Erlang的一个严格子集,它被赋予了访问所有DOM对象的钩子。您可以使用您最喜欢的Erlang结构将您的命令转换为DOM可以理解的命令。它不完全相同,但它有效。C许多人会惊讶地发现他们可以在JavaScript中使用C或类似C的语言。当然,基本的JavaScript语法与C非常相似,但本质不同。C让您可以直接访问内存,而JavaScript隐藏了所有这些细节。C让您处理指针,而JavaScript保护您免受危险函数的侵害。然而,只要有一点独创性,这些差异是可以克服的。将LLJS称为C版本可能不公平,但此版本的JavaScript提供静态类型变量,并且程序员可以控制内存——不是内存本身,而是JavaScript的版本。该文档承诺无暂停执行,因为没有垃圾收集机制。如果你想使用标准的C,Clue可以将C转换为JavaScript和其他各种脚本语言(例如Perl或Lua)。开发人员甚至声称,对于这些动态语言,某些代码实际上在JIT中的运行速度比编译为本机二进制文件时要快。秘诀在于JIT会在运行时注意到基本编辑器不会注意到的方面,因为他们会观察程序运行。也许最著名的是Emscripten,它是LLVM的一个修改版本,经过重新设计可以生成asm.js指令而不是机器代码。秘诀在于asm.js是JavaScript的一个狭窄子集,旨在通过SpiderMonkey等高级JavaScript引擎轻松优化。结果非常出色:一些最有力的证据来自游戏世界,Unity和Unreal两种引擎都能够在HTML5兼容的浏览器中运行游戏。#p#PythonPython是另一种流行的动态语言,可以轻松编译为JavaScript。许多内部函数是相似的,一些最大的不同在于语法。更简单的选项(例如RapydScript和PyvaScript)只是提供一种类似Python的语法,可以直接转换为JavaScript。他们做了一些转换,比如插入花括号以匹配空白缩进块——它在浏览器中有效。更复杂的版本(例如PYXC-PJ和Pyjs)积极地将Python转换为JavaScript,通常会产生非常易读的代码——或者至少与原始代码一样可读。Pyjs还附带了widget工具包,因此它与GoogleWebToolkit非常相似。不过,也许最有趣的是PyPy,它是软件技术的杰作。一旦Python进入,它就会在用RPython编写的Python解释器上运行,RPython是Python的一个子集,旨在轻松编译。这个RPython然后被编译成类C的代码,可以提供给Emscripten。开发人员声称,某些Python基准测试在SpiderMonkey中的运行速度比在CPython中快。如果他们可以用Python和C来完成,那么您也可以。JavaScript的另一面当然,即使涉及到JavaScript,您也有其他选择。毕竟,有些人喜欢标点符号,有些人则不喜欢。CoffeeScript适用于不喜欢标点符号的人。如果您需要用JavaScript编写程序,但又讨厌输入那么多分号或花括号,那么CoffeeScript非常适合您。CoffeeScript本质上与JavaScript相同,因为它不是真正的语言。它是一个添加分号和花括号的预处理器,因此您不必这样做。你可以输入一个像Ruby一样紧凑的程序,CoffeeScript可以将它转换成一个简化版本的JavaScript。这与使用其他语言编程不同,因为您定义的变量和函数仍然像JavaScript变量和函数一样工作。变量仍将是动态类型的,所有烦人的小问题仍将存在。算术运算符和加法运算符古怪、重载的行为仍然会让您烦恼,但是您可以节省一些输入代码的时间。CoffeeScript领域非常多样化。一旦全世界意识到它可以预处理代码,许多人就会加入。例如,IcedCoffeeScript就像普通的CoffeeScript,但有一些额外的构建块,使异步调用更清晰、更易于键入和阅读。至少有十几种“更接近的语言”可以简化您的特定编程风格。原文链接:http://www.infoworld.com/article/2906809/javascript/cool-tools-for-compiling-your-favorite-language-to-javascript.html