1222 단어
6 분
C, C#, C++의 차이
2024-10-20

작성중#

먼저 표로 한눈에 이해한 다음에 설명을 하도록 하겠습니다.

항목CC++C#
개발 연도1972년1985년2000년
개발자데니스 리치비야네 스트롭스트룹마이크로소프트
언어 유형절차적 언어객체지향/절차적 혼합 언어객체지향 언어
플랫폼플랫폼 독립적 (C 컴파일러 필요)플랫폼 독립적 (C++ 컴파일러 필요)주로 .NET 플랫폼 (크로스 플랫폼도 가능)
메모리 관리수동 메모리 관리수동 메모리 관리가비지 컬렉션 (자동 메모리 관리)
포인터 사용포인터 사용 가능포인터 사용 가능제한된 포인터 사용 (주로 비권장)
객체지향 지원미지원지원 (절차적+객체지향 혼합)완전한 객체지향 프로그래밍 지원
언어 복잡도단순함중간 복잡도복잡함 (많은 라이브러리와 기능)
성능매우 빠름빠름상대적으로 느림 (가비지 컬렉션 때문)
메모리 접근저수준 메모리 접근 가능저수준 메모리 접근 가능고수준 메모리 접근, 제한적 저수준 접근
주요 용도시스템/임베디드 프로그래밍시스템, 게임, 애플리케이션 개발비즈니스 애플리케이션, 웹, 게임 등
다중 상속미지원지원미지원 (인터페이스 다중 구현만 가능)
예외 처리미지원지원지원
문법적 특징단순하고 직관적C 기반 + 객체지향 문법 추가C++, 자바의 문법 혼합, 더 직관적

C#

먼저 C언어부터 알아보도록 하겠습니다. 왜냐하면 3가지 중 가장 오래되고 가장 널리 사용되었기 때문입니다. 데니스 리치라는 사람이 1972년에 C언어를 개발하였고 1978년에 발표하였습니다.

  • 역사: 가장 오래된 언어로 1972년에 개발됨. 유닉스 운영체제를 개발할 때 사용되었음.
  • 특징:
    • 절차지향적 언어로 설계되어 모든 것이 함수로 이루어짐.
    • 저수준 메모리 접근이 가능하여 시스템 프로그래밍, 임베디드 시스템 등에 적합.
    • 포인터를 사용하여 메모리 관리를 직접 할 수 있음.
    • 다소 단순한 구조로 매우 빠른 성능을 제공하지만, 메모리 관리 및 버퍼 오버플로우와 같은 문제가 발생할 수 있음.

C++#

  • 역사: C 언어에 객체지향 개념을 추가하여 1985년에 개발됨.
  • 특징:
    • C의 모든 기능을 상속받았으며, 객체지향 프로그래밍(OOP)을 지원하여 더 복잡한 애플리케이션을 쉽게 개발할 수 있음.
    • 다중 상속을 지원하여 하나의 클래스가 여러 부모 클래스를 상속받을 수 있음.
    • 여전히 포인터와 저수준 메모리 관리를 제공하지만, C보다 더 많은 고수준 기능이 추가됨 (예: STL, 클래스).
    • 템플릿 기능으로 코드 재사용성을 높이고 제네릭 프로그래밍을 지원함.
    • 게임 개발, 시스템 소프트웨어, 성능이 중요한 애플리케이션에서 주로 사용됨.

C##

  • 역사: 마이크로소프트가 2000년에 .NET 플랫폼을 위해 개발한 언어.
  • 특징:
    • C++와 자바의 장점을 혼합한 객체지향 언어로 설계됨.
    • 메모리 관리를 자동으로 해주는 가비지 컬렉터가 있어 개발자가 수동으로 메모리를 관리하지 않아도 됨.
    • 포인터 사용이 제한적이며, 보통은 메모리 관리를 개발자가 직접 할 필요가 없음.
    • LINQ와 같은 고급 기능을 제공하여 데이터를 처리하는 작업이 매우 간결함.
    • 주로 .NET 환경에서 웹 애플리케이션, 윈도우 애플리케이션, 게임(Unity 사용) 개발에 사용됨.
    • 크로스 플랫폼을 지원하는 .NET Core를 통해 윈도우뿐만 아니라 리눅스와 맥에서도 실행 가능.

주요 차이점 요약#

  • C 는 매우 기본적이고 빠른 언어로, 시스템 프로그래밍과 같은 저수준 작업에 적합.
  • C++ 는 C의 확장으로, 객체지향 프로그래밍과 제네릭 프로그래밍을 통해 더 복잡한 애플리케이션을 개발할 수 있음.
  • C# 은 자동 메모리 관리, .NET 통합, 더 직관적인 문법을 제공하며, 고수준 애플리케이션 개발에 많이 사용됨.