我想了解更多关于飞镖的知识,所以我想读一下飞镖的来源。dart vm是用c++编写的,代码库非常庞大。
我从边缘获得源代码
下面是runtime包中的代码,您可以看到它有超过180 K行的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++。有人能给我一些关于学习飞镖vm的建议吗?我有一个长期的计划来学习飞镖vm。
我的问题是,要学习飞镖vm,哪种知识更重要,我最好花点时间去学习它:
发布于 2013-08-13 14:26:22
这是我对它的看法。从源代码中学习结构和功能,仅仅通过读取源代码是很困难的,而且需要时间。如果有一些设计文件来指导你,那会更容易,但仍然是困难的。
会更好(以我的经验.因此,这可能不是一个好的堆栈溢出问题)集中精力处理VM。选择一个特定的bug或增强并尝试实现它。通过实际维护代码,而不仅仅是阅读代码,您将学到更多。
我提到“凭我的经验”。和您一样,我主要是一个Java / C#开发人员,已经有15年没有看过C++了。
在早期的Dart VM中,有一个bug阻止我做一些特定的事情(我现在不记得是什么了)。我有一个堆栈跟踪来指出正确的方向,通过阅读代码和尝试一些东西(使用Google来检查我不确定的特定语法)。我修改了VM并解决了眼前的问题(而且这个bug在以后的提交中被其他人重构了)。这里的重点是,有一个你可以坚持学习的目标是很好的。
为了完整起见,为了回答你问题中的“任何我应该读的东西”部分:
几年前,我也在博客上提到了设置Dart构建环境。提示:如果你是一个窗口用户,使用Ubuntu它将节省时间。
来自Google /O 2013的"快码总是流行的“视频是一款不错的手表--它让Dart VM的主要设计者谈论VM。它可能会给你一些概述。
最后,Dart语言规范值得一读,因为Dart VM是规范的实现。
发布于 2013-08-14 16:30:18
我会说,一种与dart vm保持亲密关系的功能方法(除了阅读源代码)是编写简单的扩展并使用调试器来遍历vm。这类任务将帮助您了解dartvm引导、加载库、解析省道代码、查找函数、创建隔离等等.我还发现阅读V8源代码可以很好地参考dart vm的布局,它在代码结构和样式上有一些相似之处。对于一些vm工程师来说,一个有影响力的vm相关书籍的列表将是一个很好的问题,如果你确实得到了一个清单,请转发它。
https://stackoverflow.com/questions/18210942
复制相似问题