Как получается, что источники Mono в основном C #? - PullRequest
10 голосов
/ 07 ноября 2011

Я только что впервые посмотрел на источник Mono и подумал, что найду кучу кода на C или C ++, вместо этого я нашел 26 192 файла .cs и 7 файлов .cpp.

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

Как проект в конечном итоге пишется в «себе», какэто?

Была ли более старая версия моно более с / с ++?Или были начальные попытки создать какой-то машинно-кодированный компилятор ...

В чем здесь "хитрость"?

Ответы [ 3 ]

10 голосов
/ 07 ноября 2011

Компилятор Mono написан на C #. Вы можете прочитать о загрузчике компилятора .

2 голосов
/ 07 ноября 2011

Вы должны искать файлы .c, а не файлы .cpp: моно среда выполнения написана на C, а не на C ++.

0 голосов
/ 15 декабря 2013

Я думаю, что также важно помнить, что mono - это среда выполнения виртуальной машины (JIT-компилятор, сборщик мусора и т. Д.), А также коллекция библиотек классов, работающих на этой платформе (пространство имен System.Linq,парсеры XML и т. д.).

Большинство файлов .cs, которые вы видите, являются частью библиотек классов.В основном это код C #, который выполняется как ваш собственный код C # (за некоторыми исключениями, но в принципе не имеет смысла переизобретать и перераспределять колесо снова и снова, поэтому это «базовые» библиотеки классов C #),Вот почему вы можете загружать сложные монофонические программы, такие как файлы небольшого размера, если монофоническая программа уже установлена ​​на машине.

Для моно JIT, среда выполнения и сборщик мусора в основном написаны на C / C ++, как и следовало ожидать.Если вы когда-нибудь получите ошибку низкого уровня, вы часто будете видеть дампы отладочного инструмента GNU, как в C, только с большим количеством полезной информации.Платформа Mono очень хороша для взятия любого кода C # и преобразования его в код CIL, который может выполняться где угодно, и они используют любой набор инструментов, который лучше всего подходит для обеспечения того, чтобы код выполнялся где угодно (что в данном случае означало время выполнения компилятора C на linux).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...