Tag Archives: C#

뇌를 자극하는 C# 4.0 프로그래밍/ 처음 만드는 C# 프로그램

CLR에 대하여

  • C#은 CLR (Common Language Runtime) 위에서 실행된다.
    • CLR은 자바 가상 머신과 비슷한 역할을 한다.
    • CLR은 .NET 프레임워크와 함께 OS 위에 설치된다.
      • (추가) 정확히는 .NET 프레임워크가 CLR을 포함하는 관계이다.
      • CLR + managed libraries and tools = Microsoft .NET Framework
  • 네이티브 코드로 작성되어 있는 프로그램들은 –ex) Mac의 Objective-C 등– 운영체제가 직접 실행할 수 있지만, C# 컴파일러가 만들어낸 실행 파일은 운영체제가 이해할 수 없는 코드로 구성되어 있기 때문에 실행할 수 없기 때문에 다음과 같은 방식으로 컴파일이 이루어진다.
  • C# 코드의 실행 순서. 아래와 같은 방식을 JIT(Just In Time) 컴파일이라고 부른다.
    1. C# 컴파일러는 C#의 소스코드를 IL (Intermediate Language)이라는 중간 언어로 작성된 실행 파일을 만들어 낸다.
    2. 사용자가 이 파일을 실행시키면 CLR이 이 중간 코드를 읽어서 OS가 이해할 수 있는 네이티브 코드로 컴파일 한다.
  • 실행 코드를 2번에 걸쳐 번역하는 이와 같은 복잡한 과정을 사용하는 까닭은 CLR이 C# 뿐만 아니라 다른 언어도 지원하도록 설계되었기 때문.
    • 여러 언어들이 만나기 위한 지점이 IL이라는 중간 언어이고 CLR이 이 중간 언어로 쓰여진 코드를 다시 자신이 설치되어 있는 플랫폼에 최적화 시켜 컴파일 한다는 것.
  • CLR은 단순히 C#이나 기타 언어들을 동작시키는 환경 기능 외에도 프로그램의 오류를 처리하는 기능, 언어 간의 상속 지원, COM과의 상호 운영성 지원, 자동 메모리 관리(가비지 컬렉션) 등의 기능을 제공한다.

뇌를 자극하는 C# 4.0 프로그래밍

C#의 기초부터 시작해서 고급 기능까지를 두루 살피는 책. 단순히 언어의 문법과 사용법만이 이야기하는 것이 아니라 그 개념과 사용 이유에 대해서도 잘 설명하고 있어서 이해가 더욱 잘 된다.

개인적으로는 기초 없이 MSDN만 찾아보고 잘 이해 안 되던 개념들을 책을 통해 잘 이해할 수 있었던 점도 좋았고, 생각 없이 노가다로 구현한 것들에 대한 우아한 해법도 배울 수 있어서 좋았다. –람다 식이나 LINQ 등을 보면서 C#이 꽤나 근사한 언어라는 것을 깨닫게 됨– 부실했던 기초가 조금은 보강이 된 느낌.

후반부의 고급 기능들은 아직 경험해 본 바가 없어서 한 번에 잘 이해는 하지 못했는데, 꽤나 잘 정리된 것 같아서 앞으로 경험을 쌓으며 다시 훑으면 잘 이해할 수 있으리라 생각.