„Kod zarządzany” to termin stworzony przez Korporację Microsoft®. Termin ten odnosi się do kodu programu, który wymaga użycia maszyny wirtualnej Common Language Runtime (CLR). Termin „kod niezarządzany” jest używany w odniesieniu do kodu programu, który nie wymaga tej maszyny wirtualnej.
Środowisko uruchomieniowe języka wspólnego zostało opracowane w celu umożliwienia uruchamiania programów na różnych komputerach i systemach operacyjnych bez konieczności wprowadzania jakichkolwiek zmian w kodzie programu. W tym celu kod programu komputerowego jest konwertowany na kod bajtowy maszyny wirtualnej. Ten kod bajtowy jest następnie interpretowany przez maszynę wirtualną CLR i konwertowany na kod bajtowy dla określonego komputera, na którym jest uruchomiony.
Kod zarządzany można uruchomić na dowolnym komputerze wyposażonym w maszynę wirtualną CLR. Ten wysoki stopień przenośności daje mu definitywną przewagę nad kodem niezarządzanym. Kod niezarządzany wymaga, aby programiści zmienili kod programu do użytku na różnych komputerach. Ten proces może być nie tylko powolny, ale może również prowadzić do wielu błędów aplikacji.
Kolejną zaletą kodu zarządzanego jest zwiększone bezpieczeństwo. Bezpieczeństwo programu utworzonego przy użyciu kodu niezarządzanego w dużej mierze zależy od implementacji dokonanej przez programistów. Wykorzystanie maszyny wirtualnej CLR pomaga zdjąć dużą część problemów bezpieczeństwa z barków programistów. Większość problemów związanych z bezpieczeństwem, które mogą się pojawić, koncentruje się bezpośrednio na samej maszynie wirtualnej. To samo w sobie pomaga scentralizować problemy, co znacznie przyspiesza wdrażanie poprawek bezpieczeństwa.
Kwestia, czy określony zestaw kodu jest kodem zarządzanym, czy niezarządzanym, jest niezwykle ważna dla programistów komputerowych. Kod zarządzany ma wyższy stopień przenośności, ale ta przenośność wymaga zainstalowania środowiska uruchomieniowego języka wspólnego na komputerze docelowym. Z drugiej strony kod niezarządzany można uruchomić bez dodawania środowiska CLR.
Korzystanie z kodu zarządzanego ma wiele zalet, ale ma też kilka wad. Podstawową wadą jest obciążenie wymagane przez użycie maszyny wirtualnej CLR. Różnica między szybkością działania kodu zarządzanego a szybkością kodu niezarządzanego jest często nieistotna, ale w niektórych przypadkach tworzy bardzo zauważalną różnicę w czasie odpowiedzi aplikacji. W rezultacie kod niezarządzany odgrywa kluczową rolę w większości aplikacji, które wymagają większej szybkości niż przenośności.