Untitled

여러분의 PC를 보면 CPU가 있을 것이고 그 위에 운영체제가 설치 되어있을 것이다.

만일 여러분이 C/C++과 같은 언어로 프로그램을 작성한 다음 컴파일 하면 실행가능한 실행 파일. 즉, CPU가 이해하는 기계어 코드로 구성된 실행 파일이 나온다. 이런 실행 파일의 특징은 특정 CPU와 OS에서만 동작하는 실행파일이다.

C/C++로 작성된 프로그램의 문제점

특정 환경(예를 들어 인텔 CPU, Windows OS)에서만 작동한다.

다른 환경에서 사용하려면 다시 컴파일 하거나 소스 코드 자체를 다시 작성해야 한다.

C#의 경우에는 C# 컴파일러로 컴파일하고 나면 CPU와 OS에 독립적인 기계어 코드가 생성된다. 이것을 중간언어, IL(Intermedidate Language)이라고 한다. 옛날에는 MS에서 나온 IL이라고 MSIL고 많이 불렀는데 요즘은 Common Intermediate Language, CIL 이라고 한다.

Untitled

이 중간 언어는 CPU가 바로 해석 할 수 있는 것이 아니라 "가상 머신"이라는 것이 CPU가 이해 할 수 있도록 해석해준다. 이런 구조의 장점은 CPU와 OS에 독립적으로 프로그래밍 할 수 있다는 것이다. 우리가 플랫폼 독립적으로 개발한 프로그램을 각 플랫폼에 맞는 가상 머신, 예를 들어 윈도우용 가상머신, 리눅스용 가상머신을 사용하면 어디에서든지 실행이 가능하다는 것이다.

CPU와 OS에 독립적인 기계어 코드가 생성, 가상머신만 있다면 어떤 환경에서든 실행 가능

게다가 C#만 IL 코드를 만들 수 있는 것이 아니다., C++로 프로그램을 작성하더라도 일반 컴파일러가 아닌 .NET C++ 컴파일러를 이용하면 IL을 만들어 준다. 심지어 VB도 IL로 만들 수 있다.

여러분은 IL언어로 만들어진 프로그램을 만들기 위해서 굳이 C#만 사용할 필요가 없고 C++, VB등 컴파일러가 지원만 한다면 어떤 언어든 사용 할 수 있다.

이 가상머신의 이름을 "CLR(Common Language Runtime)"이라고 한다.