공부 이유
언어
2진수로 구성된 컴퓨터에게 명령을 주기 위한 것.
초창기에는 프로그래머가 컴퓨터의 모든 명령어를 알고 있어야 했음.
근데 명령어들이 대체로 비슷했음.
여기서 OS가 등장하면서 컴퓨터에 직접 명령을 내리지 않고
OS를 통해서 컴퓨터를 제어함.
시장
- PC OS 점유율은 윈도우가 90퍼센트 이상.
- 모바일 OS는 안드로이드, IOS로 양분.
- 모바일을 만들 때, 호환가능하도록 작업(컨버팅)해야함.
왜 c++ 인가
- 언어는 다양함.
- 기계어:에셈블리어에서 발전하여 사람에게 친숙한 고수준 언어가 등장함.
- 컴파일러가 이 언어 내용을 읽어와 기계어로 바뀌줌.
- C, C++,C#, Java 등이 컴파일 언어에 속함.
c++를 배우는 이유?
c++이 다른 언어와 무엇이 다른가.
- 속도 : 다른 언어에 비해 속도가 빠름.
- 기계어:어셈블리어에 제일 가까운 언어.
- 개발 언어들은 기계어로 바로 통역되지 않음. OS가 필수.
- OS는 PC가 켜지고 실행되는 첫번째 프로그램.
OS를 통해서 PC를 제어할 수 있음.
- 사람들은 OS를 거쳐서 프로그램을 실행함. OS는 프로그램을 PC가 실행하도록 명령
사람 -> OS -> PC
- c#, java는 VM(가상머신)이 중간에 껴서 작성한 코드를 VM을 실행시키고,
VM이 OS에 명령을 내려 프로그램이 실행됨
코드 -> VM -> OS -> PC
- c#의 경우 .net 프레임워크가 실행됨.
c# -> .net 프레임워크 -> OS -> PC
- c++은 vm없이 바로 실행됨.
- vm이 하는 역할은 메모리 관리 (GC 등등)
바꿔말하면 c++은 vm의 역할을 개발자들이 직접해야 함.
- 속도가 c++이 유리함에도 다른 언어들이 인기있는 이유는
프레임워크를 통해 얻는 편리하기 때문임.
- 개발자가 직접 메모리를 관리하면 실수가 발생할 수 밖에 없음.
즉, 난이도가 높음.
- 하지만, 개발자가 직접 메모리를 관리할 수 있다는 장점도 있음.
- 실력이 뒷받침 된다면 더 자세하게 최적화 등등 할 수 있음.
c++ 교육을 꺼리는 이유
- c++은 가르치는 입장에서도 부담스러움.
- 이걸 가르칠만한 개발자를 키워내는 것이 오래걸림
- 대학교같은 경우 빠르게 학생을 가르쳐야하기에 c++을 교육하는 것이 쉽지 않음.
- 개발 속도면에서는 c++이 c#, java에 비해 떨어짐
- 회사의 목표에 따라서 언어가 달라짐
- c#, java : 빠른 작업, 빠른 서비스 제공.
- c++ : 상대적으로 느림. 단, 메모리 최적화 등에서 더 깊은 제어가 가능.
- 유니티 엔진조차도 c++로 내부가 구동함.
- 언리얼 엔진은 애초부터 c++로 구동함.
- 어떤 직군을 바라더라도 게임 개발은 c++이 기반이 되어야 함.
공부법
기초문법 & 자료구조 (Data Structure)
- 데이터를 어떻게하면 빠르게 구해올 수 있는지
어떻게 배치하면 효율적으로 사용할 수 있는지 배우는 것
윈도우 프로그램 제작
Direct X 라이브러리 활용
엔진
- 여러 회사에서 자체적으로 쓰는 엔진들도 c++로 구성됨.
- 게임을 만드는데 활용하는 것들이 대체로 비슷해졌고 이들을 모아서 엔진으로 만든 것.
프로젝트 생성
- c# 생성 과정과 동일
- vs > 새 프로젝트 > c++ 탭에서 빈 프로젝트
공부 내용 정리 필요성
초반에는 모든 개념을 설명할 수 없어서 암기가 수반될 것임.
처음 공부하고 이해, 응용했더라도 몇일 후에 까먹을 수 있음.
하지만 지금 배우는 것은 기반, 기초임
그러므로 지금 배우는 것을 정리해야 함.
그래야 나중에 잊어서도 리마인드할 수 있음.
리마인드할 때도 배웠던 것들을 다시 볼때는 처음 배울 때 비해서 비약적으로 줄어듦.
자기가 알아볼 수 있을 정도로 간단하게 블로그에 해두면 접근성이 용이함.