# C#이란?

C#은 Microsoft에서 개발한 객체지향 언어의 일종이다.

개발자가 .Net Framework에서 실행되는 여러 응용 프로그램을 구축할 수 있도록 해주는 프로그래밍 언어이다.

흔히 C++, Java와 비교하여 설명하는데 이는 C#이 두 프로그래밍 언어와 많은 유사성을 지니고 있기 때문이다.

그러므로 두 언어를 공부한 경험이 있다면 보다 쉽게 C#을 공부할 수 있을 것이다.


# .Net Framework Platform Architecture

<출처> https://docs.microsoft.com


개발자가 C# 프로그램을 작성한 후 컴파일하면 C# 컴파일러에 의해 IL로 변환된다.

여기서 IL은 (Intermediate Language)로 말 그대로 중간언어이다.

(따라서 기계가 읽을 수 있는 기계어가 아닌 독자적인 문법을 가진 언어의 일종이다)

최종적으로 이 IL이 CLR(Common Language Runtime)에 의해 컴퓨터가 읽을 수 있는 기계어로 변환이 된다.


* 컴파일 과정 요약.

C# 프로그래밍 언어 -> IL -> 기계어 -> 실행.

# 핵심 컴포넌트 및 기능에 대한 추가 설명

1) IL(중간언어)가 꼭 필요한가?

컴파일 과정에서 C# 프로그램 언어가 IL을 거쳐서 기계어로 변환되는 것을 보았다.

여기서 'IL이 굳이 왜 있는거지?'라는 의문을 가질 수 있다.

위 그림을 보면 C#, VB.NET, J# 코드가 각각 독자적인 컴파일러에 의해 IL로 변환된다.
이처럼 CLI(Common Language Infrastructure)라는 규약을 통해 닷넷 프레임워크라는 범주안에서 여러 언어들의 호환을 가능하게 할 수 있다.

2) CLR은 무엇인가?
CLR(Common Language Runtime) 닷넷 프레임워크의 컴포너트 중 하나로 일종의 가상머신이다. 
CLR이 하는 역할은 크게 2가지로 나눌 수 있다.

첫째,  IL -> 기계어로 변환.
둘째, GC(Garbage Collector) 호출.

* GC : 동적메모리 할당 및 제거를 수행하는 컴포넌트.


BELATED ARTICLES

more