1

这是一个两部分的问题。我并不懒惰,只是在 JS 中根本不够流利,无法在引用Dart 同义词页面时转换整个库。Dart:js文档解释了如何访问 JS 全局对象,如此片段所示,但如果我没记错的话,这不是我要找的。

Q1:在下面的示例片段中,它不会通过使用 Dart 来提高 Angular 的性能,对吗?

var angular = context(['angular']);
var myapp = angular.module('myApp', ['ngResource','ngRoute']);

如果我是对的,并且我确实需要转换 Dart 中不可用的库,那么 jsparserdart-synonym真的让我很难过——我找不到任何简单的文档,当我查看实际的 dart 时我迷路了。

当我尝试运行和构建jsparser时, Dart Editor出现错误:

未处理的异常:'file:///C:/Work Root/Dart/jsparser-ec65c9e7467f/jsparser.dart':格式错误:第 26 行第 27 行:未加载类型“选项”列表 args = new Options().arguments ;

所以我尝试了 dart-synonym;它运行并正确构建,但随后显示了Dart Synonyms 页面的克隆。

Q2: 如果实现自动转换甚至是可能的,我该如何使用其中的任何一个?

4

2 回答 2

2

Dart-synonym 不会自动将其他语言转换为 Dart,它只提供静态同义词引用以允许手动转换。

jsparser 旨在提供自动转换,但最后一次提交是一年多前的。从那以后发生了很多变化,我怀疑它不会在不对源代码进行重大调整的情况下运行。例如,Options 类被删除了一段时间,这就是您收到格式错误的类型错误的原因。

如果你想在 Dart 中使用 Angular,你可以使用谷歌自己的端口:AngularDart

于 2014-03-02T03:48:27.557 回答
2

可以使用与amber-lang类似的技术,特别是因为 Dart 本质上是具有 JS 语法的 Smalltalk,而 amber 是编译为 JS 的 Smalltalk。 Amber使用两个基础对象 - STObjectJSObject,允许 ST 代码调用 JS 代码,反之亦然。由于 amber-lang 使用Pharo Smalltalk作为其 RI,因此像SmaCC这样的库(Smalltalk 解析器构建器)可用于生成包装器解析代码。它已经为 Java、Python、C 和许多其他语言提供了此类支持。JS 的工作方式,你不能编写,当然也不能调试大型或复杂的应用程序。Dart 尝试像 ST 那样做,具有强大的类型系统和相当于解释语言的语义运行时,具有接近汇编程序的速度,但使用 JS 语法,因为 Google 有大量训练有素的 node.js 程序员员工.

创建一个 Smalltalk VM 比 JVM 之类的东西容易得多,因为它只包括基本对象、与 OS 库互操作的代码,并且它本身是用 Smalltalk 编写并转换为 C(或跨平台库到 F-Script MacOS)使用俚语(MacOS 上的 CLANG)。出于这个原因,IBM Research 做了一个 Squeak/Pharo VM,可以扩展到超过 1000 个内核(GitHub 上的 RoarVM)。用 JVM 做到这一点可能需要十年时间。

Smalltalk 很慢是一个过时的概念(由于不是基于堆栈的,这不再重要,而且 Sun 在 Java 的 JIT 上所做的工作,PoC 也在 Smalltalk 中 - 称为 Strongtalk。Pharo 的 cogit JIT 本质上是同样的方式 - 具有纯解释语义的汇编代码。由于 MSF4J 微服务的(缺乏)速度,我不得不离开 Java,这些微服务本身是 Java 中最快的,并且比 JS 中的任何东西都快。我可以运行 256 个微服务在 Pharo ST 中,与一个 express.js 微服务相比,它具有更快的启动时间、更少的内存使用、更好的吞吐量和监控/管理。

将 32 位 VM 移植到 64 位 UltraSparc 非常容易,并且产生的软件可以过滤和路由大量监控数据,速度明显快于 Cisco 的产品(运行在 Cisco ASR-9010 上的 IOS 程序)。Sun/Oracle T5220 的价格大约是 ASR 的 1/600,这是一个显着的优势。

喜欢Dart,但在某种程度上我不得不说它只是 YAPL,因为它没有做任何事情,因为它没有做任何与 PHaro 和 amber-lang 的组合不可能的事情。而且 Smalltalk 语法(Ruby 类似)比 JS(或 Java)更易读,也更简洁。GO 有一些好主意,但还不足以真正引起人们的兴趣。ST 已经发展了 36 年,没有什么全新的东西可以提供同等的工具或同等的运行时稳定性。

查看a4bp以获取 Pharo 中的数据分析和可视化示例。该网站也是使用来自 Smalltalk 的 Graphviz 用 Pharo 编写的。SmallTalkHub是 Pharo ST 和 amber-lang 的组合。Amber-lang 可以用来包装像 Angular 这样的库,直到为任何语言编写浏览器插件变得足够容易,并且我们不会被 JS 困住。

于 2016-08-21T05:24:56.190 回答