“Upravljani kod” je izraz koji je stvorio Microsoft® Coproration. Ovaj se izraz odnosi na programski kod koji zahtijeva korištenje virtualnog stroja Common Language Runtime (CLR) kako bi se mogao koristiti. Izraz “neupravljani kod” koristi se za označavanje programskog koda koji ne zahtijeva ovaj virtualni stroj.
Common Language Runtime je razvijen u pokušaju da se programima omogući izvođenje na raznim računalima i operativnim sustavima bez potrebe za ikakvim promjenama u programskom kodu. Da bi se to postiglo, računalni programski kod se pretvara u bajt-kod virtualnog stroja. Ovaj bajt kod se zatim interpretira od strane CLR virtualnog stroja i pretvara u bajt kod za određeno računalo na kojem se izvodi.
Upravljani kod može se izvoditi na bilo kojem računalu koje je opremljeno CLR virtualnim strojem. Ovaj visoki stupanj prenosivosti daje mu definitivnu prednost u odnosu na neupravljani kod. Neupravljani kod zahtijeva da programeri mijenjaju programski kod za korištenje na različitim strojevima. Ovaj proces ne samo da može biti spor, već može dovesti i do mnogih pogrešaka u aplikaciji.
Još jedna prednost koju ima upravljani kod je njegova poboljšana sigurnost. Sigurnost programa napravljenog s neupravljanim kodom uvelike se oslanja na implementaciju koju su izradili programeri. Korištenje CLR virtualnog stroja pomaže da se veliki dio sigurnosnih problema skine s ramena programera. Većina sigurnosnih problema koji se mogu pojaviti izravno su centrirani unutar samog virtualnog stroja. To samo po sebi pomaže u centraliziranju problema, čineći mnogo bržom implementaciju sigurnosnih zakrpa.
Pitanje je li određeni skup koda upravljani ili neupravljani kod iznimno je važno za računalne programere. Upravljani kod ima veći stupanj prenosivosti, ali ta prenosivost zahtijeva da se Common Language Runtime instalira na ciljno računalo. Neupravljani kod, s druge strane, može se izvoditi bez dodavanja CLR-a.
Postoje mnoge prednosti korištenja upravljanog koda, ali postoji i nekoliko nedostataka. Primarni nedostatak su dodatni troškovi koje zahtijeva korištenje CLR virtualnog stroja. Razlika između brzine izvođenja upravljanog koda u odnosu na brzinu neupravljanog koda često je zanemariva, ali u nekim slučajevima stvara vrlo primjetnu razliku u vremenu odgovora aplikacije. Kao rezultat toga, neupravljani kod igra ključnu ulogu u većini aplikacija koje zahtijevaju visok stupanj brzine u odnosu na prenosivost.