Недавно я разговаривал с моим другом, который начал класс C++ пару месяцев назад (его первое знакомство с программированием). Мы вообще познакомились с темой C# и .NET, и он сказал мне, что он «обречен» на все распространенные проблемы (низкоскоростные, прерывистые байт-коды и т. Д.). Я согласился с ним по всем этим вопросам, но я сдержался, сказав, что это было обречено, только потому, что я чувствовал, что со временем такие языки, как C#, могли бы стать родным кодом (если бы Microsoft предпочла изменить реализацию .NET с байт-код, среда выполнения JIT для компиляции непосредственно на собственный код, такой как ваша программа на C++).Может ли управляемый код (особенно .NET) когда-либо стать «неуправляемым»?
Мой вопрос: я здесь на обед? Я имею в виду, что это может занять много работы (и может сломать слишком много вещей), но нет какого-то магического барьера, который не позволяет скомпилировать код C# изначально (если он захочет сделать это), правильно? Было время, когда C++ считался языком очень высокого уровня (который он по-прежнему есть, но не так сильно, как в прошлом), но теперь он является основой (наряду с C) для собственных API-интерфейсов Microsoft. Идея, что .NET в один прекрасный день может быть на том же уровне, что и C++ в этом отношении, кажется только вопросом времени и усилий для меня, а не фундаментальным недостатком в дизайне языка.
EDIT: Я должен добавить, что если возможна встроенная компиляция .NET, почему Microsoft не хочет идти по этому маршруту? Почему они выбрали путь к байт-коду JIT?
Я всегда получаю немного смешок от людей, которые не имеют понятия, насколько далеки друг от друга C# и Java. – Samuel
RE: второй абзац - хорошо сказано sir – annakata
Но почему я могу все еще бросать .NET-программы в .NET Reflector и получать из него исходный код? Точка, факт остается фактом, что декомпиляция остается риском. Да, C++ тоже декомпилябелен, но уровень сложности - это миры друг от друга, и я думаю, именно поэтому вы не увидите .NET Photoshop. – GRB