Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart是静态编译的,还是在运行时解析并加载到VM时对代码进行解释?_Dart - Fatal编程技术网

Dart是静态编译的,还是在运行时解析并加载到VM时对代码进行解释?

Dart是静态编译的,还是在运行时解析并加载到VM时对代码进行解释?,dart,Dart,我试图理解为什么向Dart添加特征会导致内存中对象的形状发生变化,因此我很好奇它现在是如何加载到代码中的。Dart是一种动态类型的语言,它直接从源代码生成自己的机器语言等价物,而不需要中间字节码步骤。没有像JVM或llvm那样的通用字节码,而是直接编译成机器代码 我要补充的是,尽管直接编译为机器代码,但语言本身的设计方式并不允许C/C++风格的编译器有效地生成快速高效的代码。这是设计上的,因为Dart似乎试图填补JavaScript和Java之间的差距,而不是Java和C/C++之间的差距。Da

我试图理解为什么向Dart添加特征会导致内存中对象的形状发生变化,因此我很好奇它现在是如何加载到代码中的。

Dart是一种动态类型的语言,它直接从源代码生成自己的机器语言等价物,而不需要中间字节码步骤。没有像JVM或llvm那样的通用字节码,而是直接编译成机器代码

我要补充的是,尽管直接编译为机器代码,但语言本身的设计方式并不允许C/C++风格的编译器有效地生成快速高效的代码。这是设计上的,因为Dart似乎试图填补JavaScript和Java之间的差距,而不是Java和C/C++之间的差距。Dart解决了许多使JavaScript难以优化的问题,最重要的是数字变量的类型

在将Dart环境移植到Windows/Mac/Linux以外的各种平台上,已经做了一些努力,但我还没有看到一个真正的直接到机器语言的Dart编译器。这并不意味着它们不存在,我只是在Beagleboard和其他小型Linux发行版上看到了Linux Dart环境的端口

来自Dart常见问题解答

问:为什么谷歌没有建立一个字节码虚拟机,可以被多个用户锁定 包括Dart在内的语言?每种方法都有优点和局限性 缺点,但我们觉得在Dart的背景下,它是有意义的 要构建特定于语言的VM,原因如下:

谷歌已经在开发一种多语言字节码:LLVM位码 PNaCl

即使字节码VM专门用于Dart,语言VM也将是 更简单更快,因为它可以在更强大的假设下工作 实例,一个结构化的控制流。这些假设使得 实现更简洁,优化更容易

通用字节码VM会更大、更慢,因为 概括了假设,并添加了Dart已经过时的功能 代码:例如,使用共享堆进行多线程处理

没有字节码VM是真正通用的;他们都做假设 这是某种语言的特权。语言虚拟机留下了更多的空间 改进虚拟机并对虚拟机的优化进行深入的更改 语言一些Dart工程师写了一篇关于虚拟机的文章 更详细地提问


Dart是一种动态类型的语言,它直接从源代码生成自己的机器语言等价物,而无需中间字节码步骤。没有像JVM或llvm那样的通用字节码,而是直接编译成机器代码

我要补充的是,尽管直接编译为机器代码,但语言本身的设计方式并不允许C/C++风格的编译器有效地生成快速高效的代码。这是设计上的,因为Dart似乎试图填补JavaScript和Java之间的差距,而不是Java和C/C++之间的差距。Dart解决了许多使JavaScript难以优化的问题,最重要的是数字变量的类型

在将Dart环境移植到Windows/Mac/Linux以外的各种平台上,已经做了一些努力,但我还没有看到一个真正的直接到机器语言的Dart编译器。这并不意味着它们不存在,我只是在Beagleboard和其他小型Linux发行版上看到了Linux Dart环境的端口

来自Dart常见问题解答

问:为什么谷歌没有建立一个字节码虚拟机,可以被多个用户锁定 包括Dart在内的语言?每种方法都有优点和局限性 缺点,但我们觉得在Dart的背景下,它是有意义的 要构建特定于语言的VM,原因如下:

谷歌已经在开发一种多语言字节码:LLVM位码 PNaCl

即使字节码VM专门用于Dart,语言VM也将是 更简单更快,因为它可以在更强大的假设下工作 实例,一个结构化的控制流。这些假设使得 实现更简洁,优化更容易

通用字节码VM会更大、更慢,因为 概括了假设,并添加了Dart已经过时的功能 代码:例如,使用共享堆进行多线程处理

没有字节码VM是真正通用的;他们都做假设 这是某种语言的特权。语言虚拟机留下了更多的空间 改进虚拟机并对虚拟机的优化进行深入的更改 语言一些Dart工程师写了一篇关于虚拟机的文章 更详细地提问


关于它是如何实现的,一个非常好的演示是一个实现细节。你所说的任何一个选项,还有更多的选项都是可行的。您可以询问特定的实现在做什么,但这不太可能
解决你的实际问题。所以你应该直接描述一下:-你使用的术语让我有点困惑,但是。我想说,Dart通过了解对象的相对大小来提高速度,除非该对象是专门从Expando派生的,谢谢反馈。我能做些什么使我的问题更具体些吗?我想我真正想理解的是,如果VM运行的镖代码像C、C++、java等静态编译,或者如果它被解释成JavaScript、Ruby、Python,那么它是如何实现的,是一个实现细节。你所说的任何一个选项,还有更多的选项都是可行的。您可以询问特定的实现在做什么,但这不太可能解决您的实际问题。所以你应该直接描述一下:-你使用的术语让我有点困惑,但是。我想说,Dart通过了解对象的相对大小来提高速度,除非该对象是专门从Expando派生的,谢谢反馈。我能做些什么使我的问题更具体些吗?我想我真正想理解的是,如果VM运行的镖代码像C、C++、java等静态编译,或者它被解释成JavaScript、Ruby、Python。