如何阅读DartVM的源码?

Fre*_*ind 4 c++ dart

我想了解更多关于 Dart 的知识,所以我想阅读 dart 的源码。dart vm是用c++编写的,代码库庞大。

\n\n

我从https://github.com/dart-lang/bleeding_edge获取源代码

\n\n

以下只是包内的代码runtime,可以看到它有超过 180K 行的 C++ 代码。

\n\n
\xe2\x9e\x9c  runtime git:(master) \xe2\x9c\x97 cloc .\n     752 text files.\n     746 unique files.\n      47 files ignored.\n\nhttp://cloc.sourceforge.net v 1.58  T=6.0 s (117.7 files/s, 52169.5 lines/s)\n-------------------------------------------------------------------------------\nLanguage                     files          blank        comment           code\n-------------------------------------------------------------------------------\nC++                            375          32722          21436         180070\nC/C++ Header                   238          10936           8753          36452\nDart                            76           2785           1340          16661\nPython                          13            254            211           1113\nC                                2             28             28            107\nBourne Shell                     1             16             11             85\nAssembly                         1              1              3              5\n-------------------------------------------------------------------------------\nSUM:                           706          46742          31782         234493\n-------------------------------------------------------------------------------\n
Run Code Online (Sandbox Code Playgroud)\n\n

我学了一个月的dart,有几年Java开发经验,但是不懂c++。有人可以给我一些关于学习 dart vm 的建议吗?我有一个学习 dart vm 的长期计划。

\n\n

我的问题是,要学习dart vm,什么样的知识更重要,我最好花一些时间来学习它:

\n\n
    \n
  1. 我需要掌握 C++ 才能真正阅读 dart vm 的源码吗?
  2. \n
  3. 我需要阅读一些有关VM设计的书籍吗?如果有的话?
  4. \n
  5. 我应该阅读有关 Dart VM 的任何文档、书籍或博客吗?
  6. \n
  7. 以及任何其他建议
  8. \n
\n

Chr*_*ett 5

这是我的看法。从源代码中学习结构和功能,仅仅通过阅读源代码是很困难的,并且需要时间。如果有一些设计文档来指导你,那会更容易,但仍然会很困难。

最好(根据我的经验......所以也许这不是一个好的 stackoverflow 问题)将精力集中在使用虚拟机做一些事情上。选择一个特定的错误或增强功能并尝试实施它。通过实际尝试维护代码而不是仅仅阅读代码,您将学到更多东西。

我提到“根据我的经验”。和您一样,我主要是一名 Java/C# 开发人员,并且已经有 15 年没有真正研究过 C++ 了。

早在 Dart VM 的早期,有一个错误阻止我做一些特定的事情(我现在不记得是什么了)。我有一个堆栈跟踪来为我指明正确的方向,并通过阅读代码并尝试一些事情(使用 Google 检查我不确定的特定语法)。我能够修改虚拟机并解决我眼前的问题(无论如何,这个错误在后来的提交中被其他人重构了)。这里的要点是,有一个可以让你坚持学习的目标是件好事。

为了完整起见,回答您问题的“我应该阅读的任何内容”部分:

几年前 我还在博客中介绍了如何设置 Dart 构建环境。提示: 如果您是 Windows 用户,请使用 Ubuntu VM - 这将节省时间。

Google I/O 2013 的“快速代码始终流行”视频非常值得一看 - 它让 Dart VM 的主要设计者谈论了 VM。它可能会给您一些概览。

最后,Dart 语言规范值得一读,因为 Dart VM 是该规范的实现。