C++ 如何读取DartVM的源代码?

C++ 如何读取DartVM的源代码?,c++,dart,C++,Dart,我想学习更多关于Dart的知识,所以我想阅读Dart的来源。DART VM是用C++编写的,代码库很大。 我从 下面只是代码>运行时< /Cuff>包中的代码,可以看到它有超过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 (11

我想学习更多关于Dart的知识,所以我想阅读Dart的来源。DART VM是用C++编写的,代码库很大。 我从

下面只是代码>运行时< /Cuff>包中的代码,可以看到它有超过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
-------------------------------------------------------------------------------
我已经学习了一个月的DART,而且我有几年的java开发经验,但我不知道C++。有人能给我一些关于学习dart虚拟机的建议吗?我有一个学习dart虚拟机的长期计划

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

在我真正阅读DART VM的来源之前,我需要掌握C++吗?
  • 我需要读一些关于虚拟机设计的书吗?如果有的话
  • 是否有任何关于Dart VM的文档、书籍或博客我应该阅读
  • 还有其他建议吗

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

    根据我的经验,最好是集中精力在VM上做一些事情。选择一个特定的bug或增强,并尝试实现它。通过实际维护代码,而不仅仅是阅读代码,您将学到更多

    我提到“根据我的经验”。像你一样,我主要是爪哇/C开发人员,15年来一直没有真正的看C++。p> 在Dart虚拟机的早期,有一个bug阻止我做一些特定的事情(现在我不记得是什么)。我有一个堆栈跟踪来指引我正确的方向,通过阅读代码并尝试一些事情(使用Google检查我不确定的特定语法)。我能够修改虚拟机并解决我眼前的问题(该错误在稍后的提交中被其他人重构)。这里的要点是,有一个你可以坚持学习的目标是很好的

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

    • 准备您的机器:
    • 获取源代码:
    • 建筑:
    几年前我也在博客上写过提示:如果你是windows用户,使用Ubuntu虚拟机-这样可以节省时间

    来自Google I/O 2013的“”视频是一块很好的手表——它让Dart虚拟机的主要设计者谈论虚拟机。它可能会给你一点概述


    最后,值得一读,因为Dart虚拟机是规范的一个实现。

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

    我不太明白你在寻找什么样的答案。你真的问如何不知道C++的C++代码吗?你打算为DART做贡献还是想成为DART编程专家?我希望我能为飞镖做贡献,但现在看来我不可能。所以我现在想要的是成为dart编程专家,了解dart是如何创建的以及VM是如何工作的。@Juhana,我刚刚更新了我的问题,谢谢你如果你只是想学习dart本身,阅读dart规范可能更可行: