• 0.0 C++ 꼭 공부해야 할까?
  • 0.1 프로그래밍 언어란
  • 0.2 C, C++ 언어 소개
  • 0.3 프로그래밍 과정 소개
  • 0.4 통합개발환경의 기본적인 사용법
  • 0.5 비주얼 스튜디오 솔루션, 프로젝트 관리
  • 0.6 코딩하다 막혔을 때는?

0.0 C++ 꼭 공부해야 할까?

 

C++는 굉장히 어렵다. 파이썬, Matlab, C, CUDA, Kotlin 등 많은 언어를 공부하면서 가장 어려웠던 언어가 아닐까 싶다. 하지만 C++가 굉장히 고전 언어인 만큼 배울 수 있는 점이 너무 많고, C++를 정복한다면 많은 프로그래밍 학습에서 높은 효율을 기대할 수 있다.

 

좋은 예술가는 베낀다. 위대한 예술가는 훔친다.

처음부터 잘하는 사람은 드물다. 남이 하는 것을 따라 하고 직접 연습해봐야 한다. 프로그래밍 학습의 기본은 아래와 같다. 실제로 내가 실무에서 하는 방식과 유사한 프로세스이다.

 

0. 올바른 타이핑을 익힌다.
1. 간단한 개념을 이해한다.
2. 예제를 따라 해 본다.
3. 문제가 생기면 해결한다.
4. 예제를 내 마음대로 바꿔본다.

0.1 프로그래밍 언어란

 

프로그래밍 언어에 대해 소개하려 한다. 처음 접하는 이야기라 어려울 수도 있지만, 이해하는 것보다 이런 것들이 있구나~ 정도로 생각하고 넘어가면 더 좋다. 앞으로 많이 접하면서 익숙해질 용어가 되겠다.

 

기계어(Machine Language)

컴퓨터는 전압의 차이로 신호를 인식한다. 0과 1 두 가지만 알아들을 수 있다. 사람은 알아보기 힘든 언어이기 때문에 프로그래밍할 때 사람이 직접 사용하진 않는다. 이처럼 0과 1로만 구성된 사람이 보기 힘든 상태의 언어가 기계어이다.

 

어셈블리 언어(Assembly Language)

CPU가 하는 단위 행위 처리, 메모리 복사 등을 직접적으로 할 수 있는 저수준의 언어이다. 좀 더 사람의 언어와 가까워졌지만 여전히 인간의 언어와는 멀다.

 

고수준 언어(High-Level Languages)

C, C++, Pascal, Java, Javascript 등 사람이 다루기 쉬운 언어일수록 수준이 높은 언어라고 표현한다. 최근에는 사람이 다루기 쉬운 언어가 많이 나오면서 C, C++는 중간 레벨 언어라고 표현하기도 한다.

 

컴파일러(Compiler)

컴파일러(Compiler)는 프로그램이다. C/C++는 컴파일 언어이다. 우리가 사용한 고수준 언어를 컴퓨터가 읽을 수 있는 기계어로 변환해 주는 작업을 해주는 것이 컴파일러이다. 작성한 코드를 실행 파일로 만들어 주며, 이때 만들어지는 실행 파일이 결국 우리가 만들고자 한 프로그램이다. 실행 파일은 하드디스크에 저장이 된다.

 

컴파일 언어의 실행 과정

 

인터프리터(Interpreter)

컴파일 언어와는 다른 언어로 대표적인 것이 인터프리터(Interpreter)이다. 인터프리터는 간단하지만 컴파일 언어보다 더 느리기 때문에 양날의 검이다. 실행 파일을 만드는 경우는 한번 만들고 여러 번 쓸 수 있다. 하지만 인터프리터 언어는 매번 인터프리터를 거쳐야 하므로 느리다. 파이썬 언어가 대표적이다. 인터프리터 또한 프로그램이다.

 

인터프리터 언어의 실행 과정

 

이식성(Portability)

Java가 나타나면서 이식성이라는 특성을 생각해보게 되었다. 같은 언어를 사용하더라도 운영체제에 따라 컴파일러가 다르고 실행 파일이 다르다. 또한 윈도우즈 환경에서는 실행되는 파일이 리눅스 환경에서는 실행되지 않을 수 있다. 이러한 경우를 이식성이 없다고 말한다. 아직까지 윈도우즈와 리눅스 간에 서로 호환이 안되지만 차츰차츰 경계가 허물어지고 있다.

 

이식성이 없는 경우

 

Java로 만들어진 바이트코드는 가상 기계에 맞게 실행시킬 수 있다.

 

이식성이 있는 경우


0.2 C, C++ 언어 소개

 

어셈블리 언어로 개발하기 힘들었던 데니스 리치가 개발한 언어가 C 언어이다. C++는 C에서 객체 지향 개념이 확장되면서 처음 소개되었다. 많은 사람들이 오해하는 것이 있는데, C++는 C 언어에 객체 지향 개념만 얹은 언어가 아니다. 초기에는 그랬을지 몰라도 C 언어와 C++는 오랜 시간 기능이 추가되면서 각자가 유사하면서도 다른 길을 가게 되었다. 

 

C/C++ 언어의 설계 철학 - 프로그래머를 믿어라
실제 세계에서 쓸모가 있어야 한다.
프로그래머가 스스로 스타일을 선택할 수 있어야 한다.
유용한 기능을 추가하는 것이 오용보다 더 중요하다.
프로그래머의 의도를 알 수 없다면 스스로 명시하게 한다.
C++ 아래에 다른 언어는 없다.(파이썬 내부는 C++로 구성되어 있다.)

0.3 프로그래밍 과정 소개

 

간단하게 프로그래밍 과정을 살펴보자. 마찬가지로 완벽히 알 필요 없이 이러한 흐름으로 흘러가는구나~ 정도로만 이해해도 된다.

 

풀어야 할 문제를 정의한다.
해법을 설계한다.
해법을 구현하는 프로그램을 작성한다.
프로그램을 컴파일한다.
오브젝트 파일들을 링킹한다.
테스트를 해보고 문제가 있으면 고친다.(디버깅)

 

실행 파일이 만들어지는 과정(g++ -c file1.cpp file2.cpp file3.cpp)

 

런타임 서포트(Runtime Support)는 다른 곳에서 지원해주는 파일로 기억하면 되겠다. 각각의 소스 파일은 컴파일을 통해 오브젝트 파일로 변하고 링킹을 통해 실행 파일을 생성하게 된다.


0.4 통합개발환경의 기본적인 사용법

 

언어는 영어로 하는게 좋다. 오류 검색이나 정보 검색에 있어서 영어가 더 많기 때문이다.

 

visual studio에서 도구 -> 도구 및 기능 가져오기 -> 언어 팩으로 진입한 뒤 영어를 다운

그 뒤에 visual studio 상단 검색창에 언어를 검색하면 변경할 수 있는 항목이 나온다.

 

Hello, World

가장 기본적인 헬로 월드를 작성한 프로그램이다. 하나하나 살펴보도록 하자! 

 

헤더 파일을 포함

include를 사용하면 파일을 가져와서 현재 내 프로그램에 포함시킨다. 여기서는 입출력 헤더를 포함하였다. 부등호를 angle bracket이나 carot으로 부르기도 한다.

 

Build 탭의 구성

빌드는 앞에서 언급한 컴파일과 링킹을 하는 것이다. 실무에서도 빌드를 자주하는데, 단축키를 외워두는 것이 편하다. 자 그럼 컴파일과 링킹을 했으니, 오브젝트 파일과 실행 파일을 찾아보자.

 

내 코드를 오른 클릭

Open Containing Folder를 누르면 해당 소스 코드가 존재하는 파일이 열린다.

 

폴더의 구성 요소

vcxproj는 프로젝트 정보를 담고 있다. Source.cpp는 작성한 코드 자체 파일이다. Debug나 Release 파일이 만들어져 있을텐데 내부에 들어가면 오브젝트(obj) 파일이 만들어져 있을 것이다.

 

실행 파일

응용 프로그램이 실행 파일이 되겠다. 오브젝트 파일과는 다른 폴더에 있을텐데 오브젝트 폴더에서 상위로 두번 이동한 뒤에 Debug 폴더에 진입하면 있을 것이다.

 

Debug 탭의 구성

Start without Debugging을 통해 응용 프로그램을 visual studio 내에서 실행할 수 있다. visual studio가 아닌 곳에서 실행할 수 있는 방법 또한 존재한다.

 

설치한 버전에 따라서 뒤의 년도가 다를 것이다. 실행하면 명령 프롬프트 창이 뜰 것이고 열고자 하는 응용프로그램이 존재하는 디렉토리 위치로 이동할 수 있도록 cd 명령어를 통해 해당 위치로 진입한 뒤 응용프로그램의 이름을 타이핑해보자. 굳이 전부를 타이핑하지 않더라도 일부 타이핑 뒤에 cmd 창에서 탭누르면 유사 파일 이름이 바로 타이핑된다.

 

이동한 뒤에 실행

 

Debug & Release

디버그 모드와 릴리즈 모드이다. 차이점은 실행 파일의 크기가 굉장히 많이 차이난다. 디버그 모드의 실행 파일은 디버깅할 때 도움이 될만한 내용이 모두 담겨 있고 릴리즈 모드의 실행 파일은 배포를 위한 파일이기 때문에 최소한의 내용만 담고 있다. 결국 실행 속도의 차이가 발생한다.

 

x84 & x64

x86은 32비트 환경을 의미한다. x64는 64비트 환경이다. 예전에는 32비트 환경으로 만들어진 프로그램이 많았지만 요즘은 64비트 환경이 더 많으므로 기본으로 x64를 선택하자. 하지만 64비트 환경에서는 개발한 프로그램이 커질 수 있다.

 

visual studio 이외에 Code::Blocks라는 통합개발환경이 존재하는데, 리눅스와 윈도우즈 환경을 자주 오가는 개발자들이 사용하기에 적합하다. 이런게 있다는 정도만 알고 넘어가자!


0.5 비주얼 스튜디오 솔루션, 프로젝트 관리

 

비주얼 스튜디오를 실행하면 최초에 솔루션을 하나 만들고 프로젝트 또한 만들어진다. 솔루션은 하나만 존재해야하지만 프로젝트는 하나의 솔루션에 여러개가 존재해도 된다. 각 프로젝트 파일엔 main 함수가 존재하게 되는데, 빌드를 할 경우에 내가 위치한 프로젝트가 빌드된다.

Project1이 빌드된다.

현재는 Project1이 볼드체로 되어 있기 때문에 빌드를 할 경우 Project1이 빌드된다. Project2로 넘어가고 싶다면 오른 클릭 후 Set as StartUp Project를 클릭하면 Project2로 넘어간다. 그 뒤 빌드하면 Project2에 대한 실행 파일이 생긴다. 프로젝트를 지우고 싶다면 Remove를 사용하여 연결을 끊고 파일 자체를 지우자!

솔루션과 프로젝트


0.6 코딩하다 막혔을 때는?

 

당황하지도, 분노하지도 말자
1. IDE의 도움을 받는다.
2. 검색엔진의 도움을 받는다.(가급적 google -> stackoverflow)
3. 커뮤니티의 도움을 받는다.

+ Recent posts