비주얼 스튜디오에서 빈 프로젝트를 만들려고 보니, C#은 저렇게 (.NET Framework)가 뒤에 붙어있는 것이 보인다. C++에는 .NET Framework가 붙어있지 않은 것을 보면 C#은 C++과 달리 .NET Framework 라는 것과 긴밀한 연관이 있다는 것을 알 수 있다.

 

그렇다면, .NET Framework는 무엇이고, C#은 .NET Framework 와 무슨 관련이 있을까?

 

.NET Framework (닷넷 프레임워크)

닷넷 프레임워크는 마이크로 소프트에서 제작한 개발 및 실행 환경이다. 프로그래머는 닷넷 프레임워크가 제공해주는 틀 위에서 자유롭게 프로그래밍을 할 수 있으며, 닷넷 프레임워크 위에서 작동하는 대표적인 언어가 C#인 것이다.

 

닷넷 프레임워크는 단일 언어를 지원하는 것이 아니라 비주얼 베이직, J#등 여러 언어를 지원한다. 즉, 여러 언어에 대해 동일하게 작동하기 위해서 닷넷 프레임워크는 특수한 방식으로 동작한다. 동작 원리를 먼저 간단하게 보면, 아래와 같다.

 

1. 프로그래머에 의해 작성된 코드가 컴파일러에 의해 IL(intermediate Language)로 번역된다.

2.  IL로 번역된 코드와 라이브러리와 링크되어 exe파일, dll파일로 저장된다.

3. exe파일을 실행하게 되면, CLR(common Language Runtime)에 의해 실시간으로 IL이 기계어로 번역되며 실행된다. 

 

아래 그림은 위의 과정을 그림으로 표현한 것이다. 

출처 : https://wikidocs.net/227163

 

 

닷넷 프레임워크 위에서 작성된 코드는 컴파일러에 의해 CIL(IL) 이라는 공용 언어로 번역된다.

이 공용 언어는 CLR이라는 프로그램에 의해 기계어로 번역된다.

 

그렇다면, 왜 이러한 과정을 거칠까?

 

먼저, CIL이란 닷넷 프레임워크에서 사용하는 언어이다. OS가 아닌 프로그램에서 위에서 사용되는 언어이기 때문에 OS에  의존적이지 않다. (OS가 달라도 닷넷 프레임워크가 설치되어 있다면 작동한다는 뜻)

 

하지만, 닷넷 프레임워크 위에서 동작하는 코드도 결국엔 기계어로 번역이 되어야 운영체제가 이를 이해하고 하드웨어에 연산을 요청할 수 있다. 그렇기 때문에 CIL은 CLR이라는 것에 의해 실행 환경에 맞는 기계어로 번역이 된다.

(실제로는 JIT라는 컴파일러가 번역을 수행하고, CLR은 이를 요청하는 것)

 

이 과정을 통해, 닷넷 프레임워크 위에서 작성된 여러 언어들이 통일성있게 실행될 수 있으며, 닷넷 프레임워크만 설치되어 있다면 개발, 실행 환경이 달라지더라도 문제없이 프로그램을 실행할 수 있게 된다.

'C# > C#' 카테고리의 다른 글

C# - const, readonly  (0) 2024.08.10
C# - is, as 연산자  (0) 2024.08.07
C# - 클래스, 접근 제한 지정자, 프로퍼티  (0) 2024.07.27
C# - C#의 자료형  (0) 2024.07.24
C# - 클래스와 콘솔 출력  (2) 2024.07.24

+ Recent posts