C#이란

- 마이크로소프트에서 개발된 객체 지향 프로그래밍 언어로써 Java나 C++와 비슷한 면들을 많이 가지고 있습니다.

C#을 이야기하자면 .NET프레임워크를 함께 이야기해야 할 정도로 C#은 .NET프레임워크를 이용하여 프로그래밍하는 대표적인 

언어입니다. C#은 윈도우 프로그래밍, 웹프로그래밍, 게임, 모바일 프로그래밍등 모든 영역에서 사용되는 범용 프로그래밍 언어입니다.


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

마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행환경입니다. 네트워크작업, 인터페이스등의 많은 작업을 캡슐화하였고, 

공통언어 런타임 CLR(Common Language Runtime)이라는 이름의 가상머신위에서 작동합니다. 

자바의 JVM(Java Virtual Machine)이라고 생각하면 쉽습니다.  

CLRJVM의 차이에 대해 간단히 설명하자면 JVM은 자바만을 지원하는데 비해,

CLR은 공통 언어 중개 CIL(Common Intermediate Language)로 표현될 수 있는 모든 언어를 지원한다는 차이가 있습니다.  

CLRJVM 또 다른 개념적 차이는 자바코드는 JVM이 설치된 여러 플랫폼에서 동작하지만, 

닷넷코드는 CLR이 설치된 윈도우 플랫폼에서만 동작한다는 점입니다.

C#이나 VB컴파일러등이 만들어 낸 실행 파일은 운영체제가 이해할 수 없는 코드로 되어 있기 때문에 바로 실행할 수 없습니다. 

이런 .NET이 제공하는 언어들이 컴파일되면 IL(Intermediate Language)라는 중간 언어로 작성된 파일을 만들어 냅니다. 

그리고 이 어플리케이션이 실행 될 때 CLR이 중간 언어를 읽어들여 JIT(Just In Time) 컴파일하여 네이티브 코드로 만들어 실행합니다. 

왜 처음부터 바로 Native코드를 만들지 않고 CLR을 거쳐 2번의 컴파일을 하는것일까? 

.NET이 여러가지 언어를 지원하는데, 이 언어들이 모두 플랫폼에 최적화된 코드가 되게 하기 위함입니다.

컴파일 비용이 좀 부담스럽긴 하지만, Target 기계에 최적화되어 최고의 성능을 낼 수 있습니다.

(무조건 Native로 변형하면, 컴파일의 부담은 적지만, 모든 기계에서 최적화된 성능을 내지는 못한다.)

CLR은 JVM과 같이 예외처리를 도와주고, 언어간의 상속을 지원하며, COM과의 상호운영성을 지원하고, 가비지컬렉션도 지원합니다. 


+ Recent posts