C#

Возможно ли, чтобы у C# убрали виртуальную машину и сборку мусора в будущем?

Компиляция в машинный код уже есть, но она не универсальна. Ищи IL2CPP и NET Native.
Убрать сборку мусора нельзя, это нарушит совместимость. Но поскольку в C# есть обычные указатели, в принципе возможно самому выделять и освобождать память.
Александр Комков
Александр Комков
58 065
Лучший ответ
Куаныш Узакбаев ты так говоришь, как будто бы кроме сборки мусора есть только ручной аллок и все.
открою секрет: существует язык, и не один, где компилятор, увидев }, способен сам очистить все переменные, которые были после последней {.
грубо говоря - та же сборка мусора - но заложенная этапе компиляции.
Виртуальную машину - реально ( достаточно сконструировать процессор, который будет выполнять "команды" .NET )
Конечно!
Чтобы это случилось, нужны революционные изменения в архитектуре компьютерного железа и операционных систем.
Разве что, такие изменения пока никому не нужны =)
Alexandr Америка
Alexandr Америка
5 779
Куаныш Узакбаев можно же просто скомпилировать код в натив... включая все библиотеки... System.Reflection реализовать через автоматический добавлятель метаданных в компиляторе... (к слову, некоторые компиляторы от любителей опенсорса и так добавляют имена классов, функций в выходной код)... а что еще придется сделать?
и слабо ли написать код на C#, который таким образом точно не переделать?
вопрос не простой.
ведь механизм, аналогичный сборке мусора, есть в C++ и в чистом Си. он работает не в реальном времени, а на этапе компиляции, жестко добавляя очистку памяти в определенные места. просто, блджад, надо нормально разобраться с языком, а не тыкать везде ручной аллок, истекая случайно забытой памятью, как студентота тупая.

значит, слегка подпилить C++ и это уже будет похоже.
я например не возьмусь написать код на C#, который точно не получится скомпилировать подобным образом, и не получится допилить C++ под него.
а уж System.Reflection, DllImport и прочие мелочи вообще не проблема добавить в C++, так чтобы компилятор автоматически генерировал нужную метадату (или не мета-) по коду.
такие вещи можно добавить в LLVM SDK, причем не влезая глубоко.

гораздо очевиднее другая сторона: то, что C# тупо устарел (как и винда, потесненная мобайлом и вебом) и слишком вяло развивается, чтобы кто-то настолько заморочился с нативом или чем-то еще.
Александр Комков Что ты мелешь? В Си нет ничего похожего на сборку мусора.