C
C 언어는 이 세가지 언어 중 가장 기본이 되는 언어이다.
가장 오래되고, 가장 널리 사용되며, 운영체제나 언어 처리계 등의 시스템 기술에
적합한 프로그래밍 언어.
가장 오래된 만큼 C언어는 리소스가 거의 부족한 기계에서 작동할 때 유용하다는 특성이 있음.
즉, 메모리에 대한 기본 수준의 엑세스를 제공, 런타임 지원이 거의 필요없어
효율적으로 작동하는 프로그래밍 언어. (적은 공간을 소모하면서 빠름)
C++
덴마크의 컴퓨터 과학자인 Bjarne Stroustrup이 개발하여 출시됨.
운영체제 개발에서 C언어와 함께 사용되며, 고수준의 서버 및 PC 소프트웨어에서도 사용
C언어의 확장판이라고도 한다.
하위 수준인 C언어를 기반으로 하나, 속도나 효율성 저하 없이 C언어를 개선함과
동시에 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 기능을 추가하였다.
이말은 즉슨, C언어에는 객체 지향 프로그래밍(OOP)과 같은 컨셉을 지원하지 않음을 의미한다.
C#
C#은 마이크로소프트사가 닷넷(.Net) 프레임워크를 기반으로 개발한 프로그래밍 언어이다.
일반적으로 상용 소프트웨어가 아닌, 내부용 또는 기업용 애플리케이션으로 사용됨.
C#은 C++를 기반으로, 비주얼베이직의 편의석을 결합해 만든 객체지향 프로그래밍 언어이다.
하지만 이 언어는 C, C++,보다는 JAVA언어와 유사하다는 특징이 있다.
정리하자면, 비주얼 언어가 가진 사용자 친화성, C++의 객체 지향성, 자바의 분산환경 처리에
적합한 다중성 등을 모두 지닌다는 특징이 있다.
C vs C++
절차 지향 VS 객체 지향
C언어는 기본적으로 순서에 따라 절차대로 함수를 만들어 프로그래밍하는 절차 지향 프로그래밍 언어이다.
하지만 절차대로 프로그래밍하게 되면 코드의 양이 방대해지고, 프로그램이 거대해져
관리가 어렵게 된다는 단점이 있다.
따라서 이를 보완하고자 C언어에 객체 지향이라는 개념을 도입하여
더 나은 확장 버전으로 탄생한 것이 C++ 언어이다.
즉, 핵심은 C언어는 객체 지향이 아니며, 이것이 둘의 가장 큰 차이점이다.
구체적으로, C언어와 C++의 주요 차이점은 다음과 같다.
- 객체 사용 여부 - C언어는 입력과 출력에 함수를 사용하고 C++은 입출력에 객체를 사용한다.
- 코드 실행 - C++은 C의 확장자로 구축되었기 때문에 대부분의 C코드를 실행할 수 있다.
그러나 C는 C++ 코드를 실행하지 못한다. - 객체 지향의 특성 - C++은 객체 지향 프로그래밍 언어이므로 객체 지향의 특성인
캡슐화, 상속, 다형성을 가지고 있다. 하지만 C언어는 이러한 특성을 지원하지 않는다. - 자유 개체 - C언어에서 데이터와 함수는 "자유 개체" 이므로 외부 코드를 사용하여 조작할 수 있다.
하지만 C++는 데이터와 함수를 단일 객체로 캡슐화 하기에 이러한 데이터 구조와 연산자는 외부 코드에
숨겨진다. - 네임 스페이스(namespace) - 코드 베이스에 라이브러리가 여러 개 포함된 경우, 이름 충돌이 발생할 수 있다.
C++는 네임스페이스를 사용하여(using namespace std) 코드를 논리 그룹으로 정리하고 이름 충돌을 방지하지만,
C는 이를 사용하지 않는다.
C++ vs C#
객체와 컴포넌트
이 둘의 차이점은 C++와 C# 모두 객체 지향 언어이지만, C#은 모든 것을 객체로 취급하기에
컴포넌트 지향 프로그래밍 언어라고도 한다.
객체 지향 프로그래밍(OOP)은 큰 바이너리 실행 파일로 결합된 '클래스 간의 연관성'에 초점을 맞추지만
컴포넌트 지향 프로그래밍은 자체적으로 작동하는 '교환 가능한 코드 모듈'을 사용한다는 점에서 다르다.
또한 사용자는 이러한 코드 모듈을 사용하기 위해 내부 작업(세부 사항)을 알 필요가 없다.
그 밖에도 다음과 같은 차이점이 존재한다.
- C++는 본래 유닉스 기반 시스템을 위해 설계되었지만 모든 플랫폼에서 사용이 가능하다
반면 C#은 표준화되었지만, Windows 환경 이외에서는 거의 사용하지 않는다.
(.Net은 Windows 환경에서만 설치가 가능해 다른 운영체제에서는 사용이 불가하다.) - C++는 컴파일 되어 기계 코드로 직접 변환한다. 하지만 C#은 중간 언어,
즉, ASP.NET에서 해석되는 CLR(공용 언어 런타임)로 컴파일 된다. - C++에서는 메모리를 수동으로 처리해야 하는 반면, C#은 메모리 관리를 자동으로 처리할 수 있는
가상 시스템에서 실행된다. - C#과 달리, C++는 포인터를 사용할 수 있다.
'Computer Science' 카테고리의 다른 글
OSI 7계층 (0) | 2023.10.20 |
---|