Я удивлен тем, что вытекает из этого обсуждения (ну, на самом деле, но не риторически). Позвольте мне что-то добавить, даже если я опоздаю.
виртуальные машины (ВМ) и сбор мусора (GC) несколько десятилетий назад и два отдельных понятия. Собранные с мусором сборные языки, написанные на собственном коде, существуют даже в течение десятилетий (канонический пример: ANSI Common Lisp; ну, по крайней мере, декларативный язык compile-time garbage-collected, Меркурий - но, видимо, массы кричат на языках, подобных Прологу).
Неожиданно GCed байт на основе байт-байт - это панацея от всех болезней, связанных с ИКТ. Sandboxing of existing binaries (другие примеры here, here и here)? Principle of least authority (POLA)/capabilities-based security? Slim binaries (или его современный вариант SafeTSA)? Region inference? Нет, сэр: Microsoft & Солнце не разрешает нам даже думать о таких извращениях. Нет, лучше перепишите весь наш пакет программного обеспечения для этого замечательного (???) нового (???) языка§/API. Как говорит один из наших хозяев, это Fire and Motion сначала.
§ Не будьте глупыми: я знаю, что C# - не единственный язык, на который нацелены .Net/Mono, это hyperbole.
Edit: это особенно полезно посмотреть на comments to this answer по С. Лотт в свете альтернативных методов памяти мобильности управления/безопасности/кода, который я указал.
Я считаю, что нетехнические люди не должны беспокоиться о технических особенностях на этом уровне детализации.
На другом конце, если они впечатлены маркетингом Microsoft/Sun, необходимо объяснить им, что их обманывают - GCed базирующиеся на байте виртуальные машины не являются этой новинкой, поскольку они утверждают, что они не решают магически каждая проблема ИТ и альтернативы этим методам реализации существуют (некоторые из них лучше).
Редакция 2: Сбор мусора - это методика управления памятью, и, как следует понимать, каждая технология реализации должна использоваться правильно. Посмотрите, как на ITA Software, they bypass GC to obtain good perfomance:
4 - Потому что у нас есть около 2 гигабайтов статических данных нам нужен быстрый доступ к, мы используем C++ кода для памяти-карт огромных файлов, содержащих pointerless C Структуру (из полетов, тарифов и т. Д.), А затем получить доступ к ним из Common Lisp, используя доступ к данным за рубежом. В поле структуры доступ компилируется в две или три команды , поэтому нет никакого значения .штраф за доступ к C, а не к объектам Lisp. Делая это, мы держим лисповский мусор коллектора видеть данные (в Лисп, каждый указатель на объект C является только Fixnum, хотя мы часто временно обернуть эти указатели в Lisp объектов для улучшения отладка). Наши изображения Lisp - , поэтому только около 250 мегабайт «рабочие» структуры данных и код.
...
9 - Мы можем сделать 10 секунд Лиспа вычисления на коробке 800mhz и минусы менее 5k данных. Это связано с тем, что мы предварительно распределяем все структуры данных, мы нуждаемся и умираем по запросам, которые превышают . Это может привести к тому, что многие программисты Lisp съедят, но с изображением в 250 мегаватт и в режиме реального времени we не может позволить себе сгенерировать мусор. Для примера , вместо того, чтобы использовать минусы, мы используем «cons!», Который захватывает ячейки из массива из 10 000 000 ячеек, мы имеем prealocated и который получает сброс каждый запрос.
Edit 3: (во избежание недоразумений) является GC лучше, чем возиться непосредственно с указателями? В большинстве случаев, конечно, но есть альтернативы и. Нужно ли беспокоиться пользователей с этими подробностями? Я не вижу никаких доказательств того, что это так, кроме того, чтобы развеять маркетинговую рекламу, когда это необходимо.
«Не беспокойтесь, потому что он может уйти» ... Я хочу, чтобы мой босс принял это как ответ. – EBGreen 2008-10-30 22:48:08
@EBGreen: Посмотрите объявления о продукции MS. MS всегда создает и отбрасывает терминологию, чтобы объяснить какую-то проблему. Когда ваша компания переключится на Linux, вам все равно. – 2008-10-30 22:54:24
«Управляемый код» - это не термин, который объясняет проблему. Это термин, который они дали коду, который генерируется компилятором, ориентированным на .NET Framework (аналогично Java-байт-коду). – 2008-10-30 23:09:40