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 |