안녕하세요. 꿈꾸는 개발자 하늘고래입니다.
C++ 튜토리얼에 방문해주신 여러분, 진심으로 환영합니다. 이번에 새롭게 시작하는 C++ 튜토리얼은 C++ 기본 개념과 C++ 프로그래밍에 필요한 전반적인 지식에 대해서 강의할 예정입니다.
C 언어와 C++에 대한 기초적인 지식이 없어도 크게 적정하지 않아도 됩니다. 아주 기초적인 부분부터 다룰 예정이라 강의를 포기하지 않고 끝까지 완독한다면 분명 좋은 결과를 얻을 수 있을 것입니다.
사실 C++는 요즘에 크게 주목받는 언어는 아닙니다. 인터넷이 발달하고 모바일 플랫폼과 클라우드 서비스가 활성화되면서 많은 부분이 웹 기반으로 변경되었고, 이러한 이유로 웹, 모바일과 관련된 프로그래밍 언어가 좀 더 주목받고 있습니다. 또한 C++는 여전히 어렵다는 인식이 남아있어, 더욱 쉽게 배울 수 있는 프로그래밍 언어를 선택하는 경우가 점차 많아지고 있습니다.
실제로 신입사원 공채 면접 시 C++로 개발하기를 희망하는 사람은 매년 줄어들고 있습니다. 심지어 코딩 테스트를 C++로 풀어도 서버나 모바일, 데이터 분석 쪽을 희망하지, 클라이언트 영역으로 지원하는 개발자는 많이 없습니다.
하지만, C++는 여전히 매력적인 프로그래밍 언어입니다. C++는 여전히 중요한 프로그래밍 언어로 고성능이 필요한 분야에서 중심적인 언어로 자리 잡고 있으며, 컴퓨터 구조를 이해하고 프로그래밍 언어의 기초를 배우는 데 있어 가장 적합한 언어라고 생각합니다.
C 언어와 C++
튜토리얼에 들어가기 전에 간략하게 C 언어와 C++에 대해서 간단하게 언급하고 지나가려고 합니다.
C 언어와 C++는 조상은 공유하지만 분명 다른 언어입니다. 하지만 C++에서 C 언어의 문법을 지원하고 있고, 대부분 알게 모르게 C 언어와 C++를 혼용하여 사용하고 있기에 굳이 C 언어와 C++를 분리하여 튜토리얼을 작성할 필요가 없다고 생각하여 C++를 기반으로 하여 C 언어 내용을 포함하여 진행합니다.
C 언어는 기계어와 가장 근접한 언어로 C 언어를 제대로 사용하기 위해서는 컴퓨터 구조 및 운영체제에 대한 이해가 있어야 하며 Low Level까지 내려가야 합니다. 그리고 C++도 이와 같습니다. 하지만 C++의 모든 분야에서 너무 시야를 아래로 한정 지어 생각할 필요는 없다고 생각합니다. Standard Template Library, Template, Modern C++를 사용하여 코딩한다면 코드를 훨씬 간결하게 바꿀 수 있고 성능적인 부분에 많은 이득을 얻을 수 있습니다.
좀 더 구체적으로 이야기해보자면 C 언어에서 가장 어려운 부분을 뽑으라고 한다면 대부분 ‘포인터’를 이야기합니다. ‘포인터’, 즉 무언가를 가리키고 참조한다는 개념을 이해하지 못하고 사용하여 문제가 발생하는 경우가 많이 있습니다. 초기화 오류, 동적 할당 후 메모리 관리, 값 복사에 따른 비용 소모 등 포인터를 사용하면 문제가 발생할 여지가 확실하게 많아지는 것은 사실입니다. 물론 개발자가 이를 잘 이해하고 개발 시 좀 더 세심하게 바라본다면 이러한 오류는 큰 문제가 되지 않겠지만 확실한 것은 다른 언어보다 더 많은 비용과 노력을 들어야 합니다.
C++도 C 언어를 호환하고 있어서 여전히 포인터를 사용하고 이러한 문제를 일으킬 수 있지만, Modern C++에 들어서면서 Smart Pointer와 Move Semantics 등이 등장하고 해당 기능을 통해서 포인터를 관리하면 예전만큼 시간과 노력을 들이지 않아도 포인터를 잘 활용할 수 있습니다. 하지만 여전히 개발자들은 이를 사용하지 않고 어렵다고 생각하는 경우가 많이 있습니다.
이러한 관점에서 주로 C++(Modern C++ 포함)를 기반으로 하여 진행하며, 필요한 경우 때로는 Low Level 영역까지 심도 있게 다룰 예정입니다.
튜토리얼의 구성
C++ 튜토리얼은 국제 표준인 ISO/IEC 14882:2020 Programming languages : C++ 기반으로 각 주제에 맞게 세부적인 내용을 다룰 예정입니다.
서론에서는 C++에 대해서 간단하게 설명하고, 개발 환경 구성 및 여러분의 첫 번째 프로그램을 만들 것입니다. 이것을 통해 C++로 개발을 어떻게 진행하는지 이해하고, 앞으로 각 세션에서 활용할 수 있도록 할 예정입니다.
각 챕터에는 주제가 있으며, 그 주제 하위에 섹션이 존재합니다. 모든 섹션은 일반적으로 해당 챕터와 연관되어 있으며, C++를 중심으로 C 언어와 C++ 그리고 Modern C++를 분리하여 진행하지 않을 예정입니다. C++를 배우면서 C 언어와 Modern C++를 자연스럽게 이해하고 사용할 수 있도록 할 예정입니다.
각 섹션은 10분~20분 내외로 읽을 수 있도록 작성되어 있으나, 따로 시간제한을 두지 않았기 때문에 여러분이 생각하는 편안한 속도로 튜토리얼을 진행하면 됩니다.
튜토리얼의 목표
C++ 튜토리얼은 C++ 기초 지식뿐만 아니라 C++ 프로그래밍에 필요한 전반적인 지식을 다룰 예정입니다. 따라서 C++와 C 언어와 컴퓨터 구조, 운영체제와 같이 필요한 다양한 부분을 같이 다룰 예정입니다.
C++를 쉽고 재미있게 배우는 것을 목표로 하고 있으나, 때로는 어렵고 심도 있는 주제를 다룰 수도 있습니다. 만약 내용이 어려워 당장 이해하지 못하더라도 우선 그냥 넘어가도 괜찮습니다. C++ 튜토리얼을 다 끝내고 이해하지 못한 부분을 다시 복습하면 이전보다 훨씬 쉽다는 것을 느낄 수 있을 것입니다. 끈기를 갖고 학습한다면 분명 좋은 성과를 거둘 수 있을 것입니다.
C++ 튜토리얼이 추구하고자 하는 목표는 다음과 같습니다.
- C++ 프로그래밍에 있어 필요한 전반적인 지식의 습득
: 컴퓨터 구조, 운영체제에 대한 지식
: 코딩 스타일 가이드
: 디버깅
: 문제 해결 능력 - 더 쉽고 빠르게 학습하는 것을 목표로 함
: 그림을 통한 쉬운 이해
: 많은 예제와 퀴즈 및 실습
: 동영상 강의
: 오프라인 세미나
튜토리얼 업데이트
C++ 튜토리얼은 지속해서 업데이트할 예정입니다.
- 새로운 표준이 나올 경우
: 일반적으로 C++는 많이 변경되지 않으나, 새로운 표준이 나오면 업데이트 예정 - 다양한 컴파일러 추가
: Microsoft Visual C++ 컴파일러 이외 다른 컴파일러 및 IDE 추가 예정 - 학습하는 데 있어 더 좋은 방법이 있으면 업데이트 예정
개발 환경
C++ 튜토리얼은 다음 환경에서 개발 및 작성되었습니다.
- 운영체제
: Windows 11 x64 - IDE & 컴파일러: Microsoft Visual Studio 2022 Community
'C++ 튜토리얼 > 튜토리얼 소개' 카테고리의 다른 글
1.2 C 언어 및 C++ 소개 (0) | 2021.12.05 |
---|