[C#공부] C#과 닷넷 프레임워크의 개념
2018. 1. 6. 14:42
# 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 : 동적메모리 할당 및 제거를 수행하는 컴포넌트.
'Programming > C#' 카테고리의 다른 글
[C#공부] 배열/Collection을 이용한 foreach문 사용 (0) | 2018.01.06 |
---|---|
[C#공부] as와 is 연산자 (0) | 2018.01.06 |
[C#공부] Boxing & Unboxing (0) | 2018.01.06 |
[C#공부] 캐스팅 및 타입 변환 (0) | 2018.01.06 |
[개발환경 구축] Visual Studio 2017 Community 설치하기 (0) | 2018.01.06 |