我正在尝试更多地了解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,什么样的知识更重要,我最好花点时间学习它:
答案 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相关书籍列表将是一个很好的问题,如果你确实得到一个列表,请重新发布它。