[C++] C++이란?

HY K·2024년 8월 13일

이번 포스팅부터 본격적으로 C++에 대해서 공부해보도록 하자. 이번 포스팅에서는 C++에 대한 간단한 소개를 공부해볼 예정이다.

C++이란?

C++은 C언어의 연장선상에서 태어난 언어라고 해도 된다. 1985년 개발되었으며, 객체 지향적 특성을 지원하고 있다. 게임 개발, 시스템 프로그래밍, 임베디드 시스템, 고성능 컴퓨팅 등 다양한 분야에서 널리 사용되고 있는 프로그래밍 언어이다.

C++은 statically-typed language이며, 광범위하고 강력한 기능들을 제공하는 다수의 라이브러리를 가지고 있다. 또한 C언어와 굉장히 유사한 부분이 많으며, C와 호환된다는 특징을 가지고 있다(C 프로그램의 대부분은 C++ 컴파일러로 컴파일이 가능하다).

💡 statically-typed language
프로그램이 실행되기 전에 변수나 함수의 데이터 타입이 결정되는 프로그래밍 언어를 의미하낟. 컴파일 중 변수의 타입이 고정되고, 그 이후에는 변경될 수 없다. 컴파일 도중 컴파일러에 의해서 타입이 검사되고, 올바르지 않은 타입을 사용할 경우 컴파일 오류가 발생한다.

왜 C++을 사용하는가?

성능

C++은 매우 고성능을 자랑하는 언어로, C의 속도와 객체 지향 등 새로운 기능들을 모두 사용할 수 있으며, 하드웨어에 가깝게 최적화가 가능하다.

portability

다른 컴퓨터 구조나 작동 시스템으로 옮겨간다고 해도 실행 가능하는 것이 가능하다. 이러한 특징을 portable이라고 부른다.

객체 지향 언어

C++은 객체(object)와 클래스(class)를 통한 객체 지향 프로그래밍을 지원한다.

low-level, high-level programming

C++은 저수준(low-level) 프로그래밍과 고수준(high-level) 프로그래밍을 모두 구현할 수 있는 몇 안되는 프로그래밍 언어이다. 이러한 특징은 C++을 통해서 하드웨어 제어, 임베디드 시스템부터 시작해서 고성능 컴퓨팅, 시스템 프로그래밍, 게임 개발 등 다양한 응용 프로그래밍에 활용할 수 있도록 만든다.

그 외

그 외에 광범위하고 강력한 다수의 라이브러리를 보유하고 있다는 점, 하드웨어 제어 및 최적화에 최강의 성능을 보유한 C언어(기계어, 어셈블리어 제외)와의 호환성이 매우 높다는 점, 많은 사람들이 사용하고 있다는 점 등을 이점으로 들 수 있다.

C언와 C++의 차이는?

C와 C++ 모두 유사한 점을 많이 가지고 있으며, 널리 사용되는 프로그래밍 언어이다. 하지만 당연하게도 C와 C++은 어느 정도의 차이점을 가지고 있다.

  • systax, semantics

C언어의 경우 절차 지향 프로그래밍(procedual oriented programming) 언어이며, 함수와 구조체(struct)에 집중하고 있다. 메모리 관리의 경우 malloc()과 free()와 같은 함수를 통해서 수동ㅇ로 수행한다.

반면 C++의 경우 절차 지향 프로그래밍과 객체 지향 프로그래밍을 모두 지원하며, 클래스를 사용할 수 있다. 메모리 관리 역시 수동, 그리고 생성자/소멸자와 스마트 포인터를 사용할 수 있어 선택지가 늘었다.

💡 중요!!! syntax와 semantics

  • syntax
    한국어로 문법이라고 할 수 있다. 프로그램 코드의 구조를 정의하는 규칙으로, 프로그래머가 프로그램을 작성할 때 따라야 하는 구체적인 형식과 구조를 의미한다.
  • semantics
    코드가 실제로 어떻게 동작하는지에 대한 의미를 다루고 있다. 다르게 말하면 프로그램의 동작이나, 컴파일러나 코드를 해석하여 수행하는 작업을 의미하며, 이는 syntax를 지켜 올바르게 작성된 코드가 실제 프로그램 실행 중 무엇을 의미하고, 어떤 결과를 초래하는지에 대해서 논하는 개념이다. 예를 들어보자.
if (condition) {
	//code block
}

다음과 같은 조건문이 주어져있다고 가정하면, if문의 semantics는, 조건이 참일 때 코드 블록이 실행되고, 거짓일 때는 실행되지 않음을 의미한다.

  • 재사용성 및 모듈화

C의 경우 함수와 모듈화를 통해서 재사용성을 달성할 수있다. C++의 경우 클래스, 상속, 다형성 등을 지원하기에 C보다 더 광범위하고 강력하다.

  • 오류 처리

C에서는 주로 반환 코드를 통해 오류 처리를 수행하며, 예외 처리나 내장된 오류 처리 매커니즘을 지원하지 않는다. 반면, C++의 경우 프로그램 실행 중 발생할 수 있는 오류를 처리할 수 있는 기능을 제공한다. 이는 'try', 'catch', 'throw' 키워드로 정의된다.

profile
로봇, 드론, SLAM, 제어 공학 초보

0개의 댓글