Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#과 .NET 에코시스템 핵심 개요: 개발자가 알아야 할 필수 개념

C#은 객체 지향적이고 타입에 안전하며 범용으로 활용할 수 있는 프로그래밍 언어로, 개발자의 생산성 향상에 중점을 두고 설계되었습니다. 풍부한 표현력, 간결한 문법, 그리고 뛰어난 성능이라는 세 가지 요소를 통해 생산성을 실현하며, Windows, macOS, Linux 등 다양한 플랫폼에서 동작합니다.

타입 안전성(Type Safety)

C#은 정적 타입 언어입니다. 즉, 프로그램을 컴파일하는 시점에 모든 타입이 검증되기 때문에, 프로그램이 실행되기 전에 상당수의 오류를 사전에 잡아낼 수 있습니다. 이는 런타임 오류를 줄이고 코드의 신뢰성을 높이는 데 큰 도움이 됩니다.

가비지 컬렉션(Garbage Collection)

자동 메모리 관리는 C#의 핵심 기능 중 하나입니다. 프로그램과 함께 실행되는 가비지 컬렉터가 더 이상 사용되지 않는 메모리를 자동으로 회수해 주기 때문에, 개발자가 명시적으로 메모리를 해제할 필요가 없습니다. 덕분에 메모리 누수와 같은 흔한 실수를 크게 줄일 수 있습니다.

.NET 에코시스템은 공용 언어 런타임(CLR)과 기본 클래스 라이브러리(BCL)를 통해 C# 프로그램을 지원합니다. 또한 데스크톱, 모바일, 웹 애플리케이션을 구축하는 데 필요한 다양한 라이브러리를 제공하는 애플리케이션 계층도 함께 포함하고 있습니다.

C#과 .NET 에코시스템 핵심 개요: 개발자가 알아야 할 필수 개념

공용 언어 런타임(CLR)

'공용(Common)'이라는 이름이 의미하듯, CLR은 C#뿐만 아니라 Visual Basic, F#, 관리형 C++ 등 .NET 생태계의 여러 언어가 함께 공유하는 런타임입니다. CLR은 가비지 컬렉션과 예외 처리 같은 핵심 서비스를 제공합니다.

C# 컴파일러는 소스 코드를 중간 언어(IL, Intermediate Language)로 변환합니다. 이는 Java의 바이트코드와 유사한 개념입니다. 이후 CLR은 코드가 실행되기 직전에 이 IL을 X-64나 X-86처럼 해당 머신의 네이티브 코드로 변환하는데, 이 방식을 JIT(Just-In-Time) 컴파일이라고 부릅니다.

중간 언어를 담는 컨테이너를 어셈블리(Assembly)라고 합니다. 어셈블리에는 IL 코드와 함께 타입 정보가 담겨 있으며, 하나의 어셈블리가 다른 어셈블리를 참조할 수도 있습니다. 아울러 C#은 리플렉션(Reflection)을 활용해 이러한 메타데이터를 조회할 수 있습니다.

기본 클래스 라이브러리(BCL)

CLR에는 기본 클래스 라이브러리(BCL)라고 불리는 어셈블리 집합이 포함되어 있습니다. BCL은 대부분의 프로그램에 반드시 필요한 기능들을 제공하는데, 대표적으로 입출력(I/O), 파일 및 텍스트 처리, 네트워킹 등이 있습니다.

뿐만 아니라 언어 자체에 필요한 타입들, 예를 들어 컬렉션(Collection), LINQ, 비동기(async) 프로그래밍 관련 타입들도 포함되어 있으며, 가비지 컬렉션과 리플렉션 같은 CLR의 강력한 기능에도 손쉽게 접근할 수 있도록 지원합니다.