C# 그리고 .NET

2024. 12. 17. 17:28개발/C#

이 글은 박상현 님의 '이것이 C#이다 개정판'을 참고하여 공부한 내용입니다.


 

C와 C++ 그리고 C#

C#은 스스로 C++을 계승하는 언어로 자명하며, C++의 ++증감연사자를 아래에 한번 더 쓰면서 C#이라는 이름으로 개발되었습니다. C++ 또한 C를 계승하여 C에 ++증감연산자를 붙여 나왔으니 C#은 같은 C 언어가문의 계승자로 보입니다. 하지만 C와 C++은 1970-1980년도 AT&T가 모기업으로 있을 당시 벨 연구소에서 개발되었고 C#은 2000년 마이크로소프트에서 .NET 프레임워크와 같이 개발된 언어입니다. 이렇듯 이름은 비슷하지만 서로 다른 언어라는 것을 알 수 있습니다.

 

각각의 언어의 다른 목적으로 개발되었습니다. C는 B언어를 계승하며, 1970년대 PDP-11 컴퓨터의 기능을 온전히 모두 사용하기 위한 새로운 운영체제 유닉스를 위해 개발되었습니다. C++은 벨 연구소의 비야네 스트로스트럽 교수의 "C with Classes" 프로젝트를 통해 개발된 언어입니다. "C with Classes"는 C++ 이 C와 호환되며 클래스를 통해 코드의 추론, 유지관리의 도움이 될 수 있도록 설계하였습니다. 마지막으로 C#은 마이크로소프트의 .NET을 효율적으로 사용하기 위해 개발되었습니다.

 

언어의 차이점

  C C++ C#
개발사 AT&T 벨 연구소 AT&T 벨 연구소 마이크로소프트
패러다임 절차 객체 객체/컴포넌트
목적 유닉스 개발 C 호환 객체 지향 .NET의 언어

 

C#은 목적으로 인해, C, C++와 달리 .NET에 강한 의존성을 가지게 됩니다. 하지만 반대로 Java의 자바가상머신과 비슷하게 플랫폼에 상관없이 .NET이 구동된다면 C#을 사용할 수 있다는 의미도 됩니다. 

 

.NET

마이크로소프트의 .NET은 프레임 워크이자 "앞으로의 개발 될 인터넷 서비스는 모든 종류의 기기에서 사용할 수 있게 해야한다"는 비전입니다. 그래서 .NET의 클래스 라이브러리는 콘솔, 데스크톱, 웹, 모바일 등에서 개발할 수 있는 기능을 제공합니다. 그리고 .NET은 자바가상머신과 비슷한 CLR 스택 위에서 동작하게 됩니다. 이 CLR을 통해 다양한 플랫폼에서 코드를 작동시킬 수 있게 됩니다.

 

프레임워크 스택

WinForms ASP.NET ADO.NET
Framework Class Library
Common Language Runtime
운영체제
하드웨어

 

.NET은 적시 컴파일이라는 방식을 통해 소스코드를 컴파일합니다. 우선 각각의 컴파일러들이 소스코드를 IL 중간언어를 사용하여 실행파일로 컴파일합니다. 이후  IL파일을 실행하면 IL 코드를 CLR이 최종적으로 현재 플랫폼에 최적화시켜 컴파일한 뒤 실행합니다. 이렇게 적시 컴파일 방식을 통해 .NET은 다양한 플랫폼에서 코드를 작동시키게 됩니다.

'개발 > C#' 카테고리의 다른 글

C# 프로퍼티  (0) 2025.02.12
C# 종료자, Finalize, IDisposable  (0) 2025.02.12
C# 참조에 의한 매개변수 전달  (0) 2025.02.11
C#의 데이터 타입  (1) 2024.12.20
Static 그리고 Main  (0) 2024.12.18