Действительно ли нужен управляемый код

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

Переносимость: C# / Jave должен иметь виртуальную реализацию для каждой платформы, C++ должен иметь компилятор

сборщик мусора: у нас может быть поток в C++, который проверяет выделение памяти / десалок

рефлексия: может быть, у нас может быть похожий механизм с нативным кодом (???)

Сегодня управляемый код приобретает большую популярность, однако нативный код имеет преимущество в том, что в целом он более эффективен и легче: нет виртуальной машины на целевой платформе. С другой стороны, по моему мнению, преимущество заключается в том, что управляемый код не очень большой, я не прав? Является ли управляемый код хорошим способом следовать большинству приложений?

2 ответа

Ваше заявление о переносимости:

C# / Jave должен иметь реализацию VM для каждой формы пластины, C++ должен иметь компилятор

Это не совсем верно или явно верно - C#, VB.NET, Java и т. Д. Необходимо скомпилировать один раз в IL, байт-код и т. Д., Но C++ необходимо скомпилировать в разные версии для каждой платформы, что также может потребовать изменений в DLL используются (если есть) или методы для управления памятью.

Что касается сборки мусора, я не знаю много о том, как сделать это в потоке в C++; но в управляемом коде вам не нужно выполнять какую-либо работу, чтобы иметь сборщик мусора. Это уже там. Кроме того, в управляемых языках вы, как правило, пишете гораздо меньше кода, чтобы делать то, что вам нужно, и это имеет огромное преимущество в ясности. (Я считаю, что это особенно верно при разработке пользовательского интерфейса приложения.) Кроме того, оптимизация может быть выполнена в режиме реального времени с использованием выполнения управляемого кода, и могут быть сделаны обновления для механизма, чтобы сделать его лучше.

Есть несколько преимуществ как для управляемого, так и для неуправляемого кода, и, в конце концов, это зависит от того, что вы делаете. Я думаю, что большие проекты больше подходят для управляемого кода, а части, требующие скорости, могут быть выполнены с помощью неуправляемого кода. В конце концов, неуправляемые библиотеки могут использоваться в управляемом коде и наоборот.

Так что, на мой взгляд, да, вы не правы. Хотя это немного субъективный вопрос.

Управляемый код - лучший путь для большинства приложений. Причина в том, что это будет быстрее для вас, проще для модульного тестирования и проще в обслуживании.

Есть, конечно, приложения, где это не так. Приложения, которые должны быть быстрыми, или приложения, которым требуется специальный доступ к оборудованию, должны, вероятно, быть нативными. Да, вы можете повторно реализовать службы, предоставляемые вам, в управляемых приложениях с использованием собственного кода, но зачем вам это?

Другие вопросы по тегам