C++전, 그것은 C(Before C++, there was C)
C 언어는 1972년 Bell Telephone 연구소의 Dennis Ritchie가 주로 시스템 프로그래밍 언어(운영 체제를 작성하는 언어)로 개발했습니다. Ritchie의 주요 목표는 컴파일하기 쉽고, 메모리에 대한 효율적인 액세스를 허용하고, 효율적인 코드를 생성하고, 독립적인(다른 프로그램에 의존하지 않는) 최소한의 언어를 만드는 것이었습니다. 고급 언어의 경우 프로그래머에게 많은 제어 권한을 부여하는 동시에 플랫폼(하드웨어 및 운영 체제) 독립성을 장려하도록 설계되었습니다(즉, 각 플랫폼에 대해 코드를 다시 작성할 필요가 없음).
C는 매우 효율적이고 유연하여 1973년에 Ritchie와 Ken Thompson이 C를 사용하여 대부분의 Unix 운영 체제를 다시 작성했습니다. 이전의 많은 운영 체제는 어셈블리로 작성되었습니다. 특정 CPU에서만 실행할 수 있는 프로그램을 생성하는 어셈블리와 달리 C는 뛰어난 이식성을 갖고 있어 유닉스를 다양한 유형의 컴퓨터에서 쉽게 재컴파일할 수 있고 채택 속도를 높일 수 있습니다. C와 유닉스는 운명을 같이했고, C의 인기는 부분적으로 유닉스가 운영 체제로 성공한 것과 관련이 있습니다.
1978년 Brian Kernighan과 Dennis Ritchie는 "C 프로그래밍 언어"라는 책을 출판했습니다. 일반적으로 K&R(저자의 성을 따라)으로 알려진 이 책은 언어에 대한 비공식 사양을 제공하고 사실상의 표준이 되었습니다. 최대 이식성이 필요할 때 프로그래머는 K&R의 권장 사항을 고수했습니다. 당시 대부분의 컴파일러는 K&R 표준으로 구현되었기 때문입니다.
1983년 ANSI(American National Standards Institute)는 C에 대한 공식 표준을 수립하기 위해 위원회를 구성했습니다. 1989년(위원회는 모든 작업을 수행하는 데 영원히 소요됨)을 완료하고 ANSI C로 더 일반적으로 알려진 C89 표준을 발표했습니다. 1990년 ISO(International Organization for Standardization)는 ANSI C를 채택했습니다(몇 가지 사소한 수정 포함). 이 버전의 C는 C90으로 알려졌습니다. 컴파일러는 결국 ANSI C/C90을 준수하게 되었고 최대 이식성을 원하는 프로그램은 이 표준으로 코딩되었습니다.
1999년에 ANSI 위원회는 C99라는 새 버전의 C를 발표했습니다. C99는 이미 확장으로 컴파일러에 들어가거나 C++로 구현된 많은 기능을 채택했습니다.
C++
C++는 1979년부터 Bell Labs의 Bjarne Stroustrup에 의해 C의 확장으로 개발되었습니다. 엄밀히 말하면 사실이 아닙니다(C99가 C++에 없는 몇 가지 기능을 도입했기 때문에). C++의 명성에 대한 주장은 주로 그것이 객체 지향 언어라는 사실에서 비롯됩니다. "객체"가 무엇이며 기존 프로그래밍 방법과 어떻게 다른지에 대해서는 이후 장에서 다룰 것입니다.
C++는 1998년 ISO 위원회에 의해 표준화되었습니다(즉, ISO 표준 위원회는 모든 컴파일러가 동일한 표준 세트를 준수하도록 돕기 위해 C++ 언어를 설명하는 문서를 승인했습니다). 언어에 대한 사소한 업데이트가 2003년에 릴리스되었습니다(C++03이라고 함).
그 이후로 C++ 언어에 대한 네 가지 주요 업데이트(C++11, C++14, C++17 및 C++20)가 있었으며 각각 추가 기능이 추가되었습니다. 특히 C++11은 수많은 새로운 기능을 추가했으며 언어의 새로운 기본 버전으로 널리 간주됩니다. 언어에 대한 향후 업그레이드는 약 3년마다 예상되며 C++23용 기능 세트가 이미 공식화되기 시작했습니다.
언어의 각각의 새로운 공식 릴리스를 언어 표준(또는 언어 사양)이라고 합니다. 표준은 출시된 연도의 이름을 따서 명명됩니다. 예를 들어 2015년에 새로운 표준이 없었기 때문에 C++15가 없습니다.
C 및 C++의 기본 설계 철학은 "프로그래머를 신뢰"하는 것으로 요약할 수 있습니다. 이는 훌륭하면서도 위험합니다. C++는 프로그래머가 원하는 것을 할 수 있는 높은 자유도를 허용하도록 설계되었습니다. 그러나 이것은 또한 언어가 종종 이해하지 못하는 일을 하는 것을 막지 않는다는 것을 의미합니다. 새로운 프로그래머가 알지 못하는 경우 빠지기 쉬운 몇 가지 함정이 있습니다. 이것이 C/C++에서 하지 말아야 할 것을 아는 것이 무엇을 해야 하는지 아는 것만큼 중요한 주된 이유 중 하나입니다.
Q : C++의 장점은 무엇인가? (Q: What is C++ good at?) C++는 메모리 및 기타 리소스에 대한 고성능과 정확한 제어가 필요한 상황에서 탁월합니다. 다음은 C++로 작성될 가능성이 가장 높은 몇 가지 일반적인 애플리케이션 유형입니다.
|
Q: 이 학습서를 시작하기 전에 C를 알아야 합니까? (Q: Do I need to know C before I do these tutorials?) 아니요! C++로 시작하는 것은 전혀 문제가 없으며, 그 과정에서 (피해야 할 함정을 포함하여) 알아야 할 모든 것을 가르칠 것입니다. C++를 알고 나면 필요하다면 표준 C를 배우는 것이 꽤 쉬울 것입니다. 요즘 C는 틈새 사용 사례에 주로 사용됩니다. 임베디드 장치에서 실행되는 코드, C언어와만 인터페이스할 수 있는 다른 언어와 상호 작용해야 하는 경우 등… 대부분의 다른 경우에는 C++가 권장됩니다. |
references : https://www.learncpp.com/cpp-tutorial/introduction-to-cplusplus/
'C++ (learncpp) > Introduction - Getting Started' 카테고리의 다른 글
0.6 — Installing an Integrated Development Environment (IDE) (0) | 2021.10.19 |
---|---|
0.5 — Introduction to the compiler, linker, and libraries (0) | 2021.10.18 |
0.4 — Introduction to C++ development (0) | 2021.10.18 |
0.2 — Introduction to programming languages (0) | 2021.10.15 |
0.1 — Introduction to these tutorials (0) | 2021.10.15 |