2013-08-13 2 views
2

Я пытаюсь узнать больше о Дарте, поэтому я хочу прочитать источник дротика. Дарт vm написан на C++, а база кода огромна.Как читать источник DartVM?

я получить исходный код из 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++. Может ли кто-нибудь дать мне несколько советов об изучении дарт vm? У меня есть долгосрочный план изучения дротика vm.

Мой вопрос, чтобы узнать дротика виртуальную машину, какое знание является более важным, что я бы лучше заплатить некоторое время, чтобы узнать его:

  1. мне нужно освоить C++, прежде чем я действительно могу прочитать Do источник дартс vm?
  2. Нужно ли читать некоторые книги о дизайне VM? Если есть?
  3. Есть ли какие-либо документы или книги или блоги о Dart VM, которые я должен прочитать?
  4. и любые другие советы
+1

Я не совсем понимаю, какие ответы вы ищете. Вы действительно спрашиваете, как читать код на C++, не зная C++? – JJJ

+0

Вы планируете внести свой вклад в дарт или хотите стать экспертом в программировании дартс? – Pradheep

+0

Надеюсь, я могу внести свой вклад в дарт, но теперь это кажется невозможным. Итак, теперь я хочу стать экспертом в программировании дротиков и узнать, как создается дротик и как работает виртуальная машина. – Freewind

ответ

3

Вот мой взгляд на него. Изучение структуры и функции из исходного кода, просто читая исходный код, затруднено и требует времени. Если бы вам были какие-то проектные документы, это было бы проще, но все равно было бы тяжело.

Было бы лучше (по моему опыту ... поэтому, возможно, это не очень хороший вопрос о стеке), чтобы сосредоточить свои усилия на том, чтобы что-то делать с виртуальной машиной. Выберите конкретную ошибку или усовершенствование и попробуйте ее реализовать. Вы узнаете гораздо больше, фактически пытаясь сохранить код, а не просто его читать.

Я упомянул «в своем опыте». Как и вы, я в первую очередь Java/C# dev, и на самом деле не смотрел на C++ уже 15 лет.

Еще в ранние дни Дартс-ВМ была ошибка, которая мешала мне делать что-то конкретное (я не помню, что сейчас). У меня была трассировка стека, чтобы указать мне в правильном направлении, и прочитав код и попробовав несколько вещей (используя Google, чтобы проверить конкретный синтаксис, где я не был уверен). Я смог модифицировать виртуальную машину и решить мою ближайшую проблему (и ошибка была реорганизована позже в результате коммита кем-то другим). Дело здесь в том, что хорошо иметь цель, с которой вы можете повесить свое обучение.

Для полноты в ответ на "все, что я должен прочитать" часть вашего вопроса:

Я также писал о setting up a Dart build environment пару лет назад. Совет: Если вы пользователь Windows, используйте Ubuntu VM - это сэкономит часы.

Видео «Fast Code is Always in Fashion» от Google I/O 2013 - это хорошие часы - у него есть основные дизайнеры Дарт-ВМ, говорящие о виртуальной машине. Это может дать вам немного обзора.

И, наконец, Dart Language Specification стоит прочитать, поскольку Dart VM является реализацией спецификации.

+0

Надеюсь, я могу дать вам больше голосов :) – Freewind

1

Я бы сказал, что функциональный способ получить интимную связь с дротиком vm (помимо простого чтения источника) будет писать простые расширения и использовать отладчик для перемещения vm. Эта задача поможет вам узнать о том, как dartvm boostraps, загружает библиотеки, анализирует дротик-код, ищет функции, создает изоляты и т. Д. Я также нашел, что прочитал источник V8 как хорошую ссылку на макет дротика vm , он имел некоторое сходство в структуре кода и стиле. Список влиятельных книг, связанных с VM, станет отличным вопросом для некоторых инженеров vm, если вы получите список, пожалуйста, отправьте его.

Смежные вопросы