如何阅读DartVM的来源?

时间:2013-08-13 13:49:57

标签: c++ dart

我正在尝试更多地了解Dart,所以我想阅读飞镖的来源。 dart vm是用c ++编写的,代码库很大。

我从https://github.com/dart-lang/bleeding_edge

获取源代码

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

➜  runtime git:(master) ✗ cloc .
     752 text files.
     746 unique files.
      47 files ignored.

http://cloc.sourceforge.net v 1.58  T=6.0 s (117.7 files/s, 52169.5 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C++                            375          32722          21436         180070
C/C++ Header                   238          10936           8753          36452
Dart                            76           2785           1340          16661
Python                          13            254            211           1113
C                                2             28             28            107
Bourne Shell                     1             16             11             85
Assembly                         1              1              3              5
-------------------------------------------------------------------------------
SUM:                           706          46742          31782         234493
-------------------------------------------------------------------------------

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

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

  1. 在真正阅读dart vm的来源之前,我是否需要掌握c ++?
  2. 我是否需要阅读一些有关VM设计的书籍?如果有吗?
  3. 我应该阅读有关Dart VM的文档,书籍或博客吗?
  4. 以及任何其他建议

2 个答案:

答案 0 :(得分:3)

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

更好(根据我的经验......所以这可能不是一个好的stackoverflow问题)来集中你的努力与VM做一些事情。选择一个特定的bug或增强功能并尝试实现它。通过实际尝试维护代码而不仅仅是阅读代码,您将学到更多东西。

我提到“根据我的经验”。和你一样,我主要是一个Java / C#开发人员,并且15年来一直没有真正关注C ++。

早在Dart VM的早期,有一个错误阻止我做一些特定的事情(我现在不记得了)。我有一个堆栈跟踪指向我正确的方向,并通过阅读代码并尝试一些事情(使用谷歌检查我不确定的具体语法)。我能够修改VM并解决我的直接问题(并且该错误在以后的其他人的提交中被重构)。这里的重点是,有一个目的,你可以挂起你的学习。

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

几年前我也写过关于setting up a Dart build environment的博客。 提示:如果您是Windows用户,请使用Ubuntu VM - 它可以节省数小时。

来自Google I / O 2013的“Fast Code is Always in Fashion”视频非常棒 - 它让Dart VM的主要设计人员谈论VM。它可能会给你一些概述。

最后,Dart Language Specification值得一读,因为Dart VM是规范的实现。

答案 1 :(得分:1)

我想说一个与dart vm密切相关的功能方法(除了阅读源代码之外)将编写简单的扩展并使用调试器来移动虚拟机。这样的任务将帮助你了解dartvm如何提升,加载库,解析dart代码,查找函数,创建隔离等等...我还发现阅读V8源代码作为dart vm布局的一个很好的参考,它在代码结构和风格上有一些相似之处。对于一些vm工程师来说,有影响力的vm相关书籍列表将是一个很好的问题,如果你确实得到一个列表,请重新发布它。