Programming Language/C#

[C# 기초] C#을 이루는 기본 구조 및 용어들 - 1

진과사전 2023. 3. 10. 15:05

개인적인 C# 공부를 위한 정리 노트이다. 

 

 

 

 

.NET 이란 

.NET은 모든 운영 체제에서 기본적으로 실행할 수 있는 데스크톱, 웹 및 모바일 애플리케이션 빌드를 위한 오픈 소스 플랫폼이다. 

 

.NET 플랫폼은 다음과 같은 기능을 한다. 

 

  • .NET 프로그래밍 언어 코드를 컴퓨팅 디바이스가 처리할 수 있는 명령으로 변환 
  • 효율적인 소프트웨어 개발을 위한 유틸리티를 제공 

 

 

 

 

.NET Framework

Microsoft가 제공하는 Windows Desktop 프로그램 개발 및 실행환경이다. 더 자세히 말하면 Microsoft가 CLR 이라는 가상머신과 여러 가지 구성 요소를 함께 만들어 이를 하나의 패키지로 묶어 배포한 것이다. 

 

즉 .NET Framework = CLR + 부가 구성 요소  라고 볼 수 있다. 

 

 

 

CLR Common Language Runtime

공용 언어 런타임이라 불리며 일종의 가상머신이다. 

CLI 사양을 따르는 가장 대표적인 VM으로 Microsoft가 개발해 윈도우 운영체제용으로만 배포하고 있다. 

 

CLR의 역할은 다음과 같다. 

 

  • 중간 언어 IL을 기계어로 변환시킨다. 
  • Garbage Collector를 제공해 동적 메모리 할당 및 회수를 지원한다. 

 

 

 

CLI Common Language Infrastructure

Microsoft에서 ECMA 표준으로 제출한 공개 규약이다. 중간 언어에 대한 코드 정의, 메타 데이터와 그것을 포함하는 이진 파일의 구조까지 표준 사양으로 기술하고 있다. 

 

CLI 규격을 Microsoft에서 구현한 실체가 CLR이다. 

 

 

 

CIL Common Intermediate Language

공통 중간 언어라 불리며 줄여서 IL코드 또는 MSIL 코드라 한다. 

모든 닷넷 호환 언어는 소스코드를 IL 코드로 컴파일하고 CLR이 실행될 때 IL코드를 CPU의 기계어로 번역한다. 

 

 

 

 

그래서 이들의 역할을 종합한 결과는 아래의 이미지와 같다. 

 

 

C# 코드가 기계어로 변환되는 과정  (출처: 위키피디아)

 

 

 

 

 

 

C# 의 특성 

  • .NET Core 또는 .Net Framework 환경을 지원하는 언어 
  • 사건 기반 Event Driven 프로그래밍이다. 
  • Microsoft가 개발한 객체 지향 프로그래밍 언어
  • 비주얼 프로그래밍 언어 
  • 언어간 상호 운용성 => 다른 프로그래밍 언어와 호환 가능
  • 가비지 컬렉션 Garbage Collection 

 

 

 

 

정리 

정리하자면 C#의 소스 코드는 중간 언어인 IL로 컴파일된 후 이 것이 CLR에 로드된다. 그러면 CLR이 IL 중간언어를 기계어로 변환하여 컴퓨터가 이를 해석하고 실행시키는 것이다. 

 

 

 

 

 

 

 

 

References

  • 학교 수업 자료 
  • 시작하세요! C# 10 프로그래밍 기본 문법부터 실전 예제까지 

https://learn.microsoft.com/en-us/

 

Microsoft Learn: Build skills that open doors in your career

Gain technical skills through documentation and training, earn certifications and connect with the community

learn.microsoft.com

 

https://aws.amazon.com/ko/what-is/net/

 

.Net?이란 무엇인가요? - 닷넷 설명 - AWS

개발 용이성 .NET은 개발자 작업을 용이하게 하는 많은 도구를 포함하기 때문에 개발자들이 선호합니다. 예를 들어, 개발자는 Visual Studio 제품군을 사용하여 코드를 더 빠르게 작성하고, 효율적으

aws.amazon.com