생각의 기록

꿈꾸는 개발자 하늘고래의 프로그래밍 이야기

C++ 튜토리얼/튜토리얼 소개

1.2 C 언어 및 C++ 소개

하늘고래c 2021. 12. 5. 14:03

안녕하세요. 꿈꾸는 개발자 하늘고래입니다.
이번 강의에서는 C 언어와 C++를 간단하게 소개하려고 합니다. 우리가 앞으로 계속 같이 공부해야 할 언어이니 간단하게 알아보도록 하겠습니다.

 

C 언어

#include <studio.h>

int main()
{
	printf(“Hello World!”);
}

 

C 언어는 1972년 Bell Telephone 연구소의 Dennis Ritchie가 운영체제를 만들기 위해 개발한 시스템 프로그래밍 언어입니다. Ritchie의 주요 목표는 컴파일하기 쉽고, 메모리에 효율적으로 액세스를 할 수 있고, 효율적인 코드를 생성할 수 있는 언어를 만드는 것이었으며, C 언어는 이를 기반으로 플랫폼 독립적으로 프로그래머가 많은 제어를 할 수 있도록 설계되었습니다.

 

1973년 Ritchie와 Ken Thompson이 C 언어를 사용하여 UNIX 운영체제를 다시 만들었으며, C 언어로 만들어진 UNIX 운영체제는 여러 종류의 컴퓨터에서 쉽게 컴파일하여 사용할 수 있어 UNIX 운영체제와 함께 C 언어의 인기가 높아졌습니다.
( 당시 대부분 운영체제는 어셈블리로 작성되어 특정 CPU에서만 실행 가능하여 이식성이 매우 낮았습니다. )

1978년 Brian Kernighan과 Dennis Ritchie는 'The C Programming Language'라는 책을 출간했습니다. 책이 출간된 이후 대부분의 컴파일러는 이 책을 기반으로 컴파일러를 구현하여 이 책은 비공식적인 표준으로 인정받았고, 이후 대부분의 프로그래머는 이 책을 기반으로 개발했습니다.

1983년 ANSI(American National Standards Institute)는 C 언어에 대한 공식 표준을 수립하기 위해 위원회를 구성했으며, 1989년 완성하여 ANSI C로 알려진 C89 표준을 발표했습니다.

이후 ANSI와 국제 표준화 기구(ISO)는 C 언어 표준을 지속해서 발표하였습니다.

 

년도 이름 내용
1990 ISO/IEC 9899:1990 ( C90 ) C89 기반으로 승인
1995 ISO/IEC 9899/AMD1:1995 ( C95 ) 오류 정정 외 추가적인 변경 사양 반영
1999 ISO/IEC 9899:1999 ( C99 ) C 언어의 현대 개정판 ( 사실상 표준 )
2011 ISO/IEC 9899:2011 ( C11 ) C 언어의 최신 개정판 ( 거의 사용하지 않음 )
2018 ISO/IEC 9899:2018 ( C18 ) C11의 결함 수정

 

C++

#include <iostream>

int main () 
{
	std::cout << "Hello, world!";
}

 

C++는 1979년 Bell Labs의 Bjarne Stroustrup에 의해 C 언어의 확장으로 개발되었습니다. 처음 C++의 이름은 C with Classes였으며 이름에서도 알 수 있듯이 C++는 C 언어에 새로운 기능(클래스, 상속 클래스, 스트롱 타이핑, 인라인 확장, 기본 인수 등)을 포함하여 개발되었습니다. C++는 C 언어의 모든 것을 포함하는 상위 개념이 아니라, C++는 C 언어를 가장 잘 호환하는 프로그래밍 언어입니다.

C++는 1998년 ISO 위원회에 의해 표준화되었고, 그 이후로 네 번의 주요 업데이트가 이루어졌으며, 새로운 기능이 추가되었습니다. ( C++11~C++20 )

특히 C++11에서 다양한 새로운 기능들이 추가되었으며, Modern C++이라 불리는 새로운 버전이 시작되었습니다. Modern C++는 향후 3년마다 업그레이드를 예상하며, C++ 23 용 기능 셋이 이미 공식화되기 시작하였습니다.

 
년도 이름 내용
1998 ISO/IEC 14882:1998 C++ 표준의 시작
2003 ISO/IEC 14882:2003 사소한 업데이트
2011 ISO/IEC 14882:2011 Modern C++ 시작 / C++11
2014 ISO/IEC 14882:2014 C++14
2017 ISO/IEC 14882:2017 C++17
2020 ISO/IEC 14882:2020 C++20

 

C 언어와 C++의 철학

C 언어와 C++의 기본 설계 철학은 "프로그래머를 믿어라. (Trust the programmer)“라는 문장으로 가장 잘 표현할 수 있습니다. 이는 오늘날 다른 언어와 가장 큰 차이를 보이는 부분입니다. 다른 언어들이 성능을 희생하면서라도 문제가 발생하지 않도록 한다면 C 언어와 C++는 ”프로그래머를 믿을 테니 알아서 해라“입니다.

C 언어와 C++는 프로그래머가 원하는 것을 수행할 수 있도록 높은 수준의 자유도를 제공하고 있고, 이 자유에 대해서 프로그래머가 더 많은 책임을 지도록 설계되었습니다. 이는 다른 언어와 다르게 메모리 및 기타 리소스를 직접 제어하여 고성능을 끌어낼 수 있으나, 역으로 다른 언어보다 프로그래머의 실수로 더 많은 문제를 낼 수 있는 위험성을 내포하고 있습니다.

이러한 철학으로 인하여 C 언어와 C++는 다른 언어보다 배우기 힘들어도, 정확하게 이해하고 사용할 수 있으면 메모리 및 기타 리소스에 대해 고성능과 정확한 제어가 필요한 상황에서 큰 효과를 발휘할 수 있습니다. 

또한, 이러한 특성으로 퍼포먼스가 엄청나게 중요하면서 동시에 개발 속도도 중요한 게임, 실시간 시스템, 고성능 금융 프로그램, 그래픽 응용 프로그램 및 시뮬레이션, 인공 지능, 뉴럴 네트워크 등에서 주로 사용됩니다. 사실 그 외에도 퍼포먼스를 중시하는 곳에서 여전히 많이 사용됩니다. 

'C++ 튜토리얼 > 튜토리얼 소개' 카테고리의 다른 글

1.1 튜토리얼 소개  (0) 2021.11.28