with open("test.txt", "a") as myfile:
myfile.write("appended text")
Исходный код - это код, чья память не «управляется», как и в, память не освобождена для вас (например, C ++ «delete» и «C»), нет подсчета ссылок, нет сбора мусора. Управляемый код, как вы догадались, это код, чья память свободна и выделена для вас, сборка мусора и другие лакомства.
Смешанный код - это когда вы управляете кодом, который вызывает неуправляемый уровень. Обычно, когда у вас есть чистая неуправляемая C ++ DLL, и вы вызываете ее из .NET с помощью P / invoke.
Код, который запускается под управлением среды выполнения общего языка (CLR), известен как управляемый код. Код, который не запускается в среде CLR, известен как собственный код.
Исходный код написан на «родном» языке машины на компьютере, на котором он запущен, и выполняется непосредственно процессором.
Управляемый код написан на специальном языке, который требует выполнения другой программы (т. е. управления). Эта другая программа часто называется интерпретатором, поскольку она интерпретирует специальный язык.
Программы C и C ++ являются родными.
Java и C # (и все языки .NET, если на то пошло) управляемый.
Managed C ++ - это специальная форма C ++, которая выполняется в интерпретаторе .NET.
Смешанная программа - это программа, которая использует код, который является как родным, так и управляемым.
Собственный код скомпилирован для работы непосредственно с ОС. Управляемый код, однако, предварительно скомпилирован (байт-код в Java-говорить), но затем обрабатывается компилятором Just In Time в собственный код во время выполнения. Управляемый код имеет интересный побочный эффект наличия возможности работы в разных операционных системах, поскольку машинный код не создается до тех пор, пока виртуальная виртуальная машина фактически не использует его. Таким образом, вы можете запускать .NET-приложения в Windows, а также запускать их на Linux или Mac, на которых установлена среда исполнения Mono. Переносимость в настоящее время не так чиста, как Java (из-за естественной закрытой архитектуры Microsoft), но концепция остается.
Если вы используете неуправляемое приложение, код был скомпилирован для запуска для указанной ОС / Аппаратное обеспечение. Любая переносимость к другому набору OS / команд теряется и должна быть перекомпилирована для выполнения.
/clr
и выводить как MSIL) для размещения собственных объектов в нативной куче (без сбора мусора). Кроме того, сборщик мусора (рабочий стол) .NET не использует подсчет ссылок (который имеет проблемы с циклами). – Ben Voigt 19 July 2012 в 23:33