공부이유)
ROS를 다루면서도 C++이 소스코드로 필요했다.
C++을 익힌 뒤 어떠한 언어에도 쉽게 접근이 가능하다.
Python도 내부적으로 c++로 돌아간다.
데이터가 사람을 대신해 일하게 하기 위해서
공부방법)
좋은 예술가는 따라하고
위대한 예술가는 훔친다
처음은 따라하는 것부터 시작하자.
첫 시작에서 틀을 이해하는 것이 중요하다. 이번 글 이후로는 기록하기 보다는 빠르게 수업을 듣고 예제를 하는 것에 집중할 계획이다.
이번 글에서는 IDE환경에서 코드를 WRITE하고 COMPILE했을 때 어디에 어떻게 파일들이 만들어지고 어떻게 실행되는지 정리하였다.
자료출처
www.youtube.com/playlist?list=PLNfg4W25Tapw5Yx4yuExHNybBIUk68aNz
강의0.1 컴파일러와 인터프리터
-컴파일러(대표적인 컴파일언어 : C/C++)
코드 - 컴파일러 - 실행파일(.exe) - 중앙처리장치 CPU - 실행결과
컴파일러는 우리가 작성한 소스코드를 CPU가 실행할 수 있는 실행파일로 바꾸어 준다. 이 실행파일은 하드디스크에 저장되는데 저장된 파일을 그때그때 꺼내 써서 속도가 빠르다.
-인터프리터(대표적 인터프리터언어 : Python)
스크립트(=코드) - 인터프리터 - CPU - 실행결과
특징 : 실행파일이 생성되지 않는다.
??? : 실행파일을 만들지 않으니, 인터프리터언어가 더 빠르지 않나요??
동일한 코드를 반복실행할 때, 실행파일이 없다면 여러번 인터프리터를 거쳐야하므로 오히려 속도가 더 느리다.
강의0.3 프로그래밍 과정
1단계 문제정의
2단계 해법설계
3단계 해법을 구현하는 프로그램 write
4단계 프로그램 compile
5단계 object파일들을 linking한다
6단계 테스트 후 문제가 있다면 debuging
* 하나의 소스코드를 compile하면 하나의 object파일을 만든다.
* 분업을 통해 만든 object파일들과 Opensource들을 linking할 수 있다. 적절한 Opencsource를 활용하는 것도 중요한 역량이다.
강의 0.4.0 Hellow World!
간단한 프로그램 만들어보고 실제로 어떤 과정을 거쳐서 출력되는지 파악
파일구성
solution파일 - project파일 - source.cpp
하나의 solution파일에 여러개의 project파일을 가질 수 있다. proj1은 cpp로, proj2는 python으로 만들어 쓸 수도 있다.
compile하는 것은 실제로 proj파일 안의 source.cpp이고 그 결과 실행파일(.exe)이 solution파일 차원의 debug파일 내에 존재한다.
IDE에서 compile하고 실행까지 할 수 있지만 cmd창에서 실행파일의 경로로 들어가 실행파일을 실행할 수도 있다. 이것이 좀더 근본적으로 실행파일이 실행되는 원리이다.
하나의 solution파일 아래에서 여러개의 project파일을 추가할 수 있고 어떤 build 후 생성된 각각의 실행파일들 중에서 어느 실행파일을 실행시킬지는 project파일에서 우클릭에서 set as startup project를 클릭하면 해당 project의 실행파일이 실행된다.
*source.cpp에서 모든 project파일의 소스코드 이름이 같으면 헷갈릴 수 있다. 적절한 이름으로 바꾸어 만들자.
debug build와 release build
debug build를 했을 때 만들어지는 실행파일과 release build를 했을 때 만들어지는 실행파일은 다르다.
release가 실사용자들에게 배포용으로 만들어지는 것으로 용량이 상대적으로 많이 작다.
'기계공학부 시절의 기록 > C++일기' 카테고리의 다른 글
1.4 iostream : cin(console-in) cout(console-out) (0) | 2021.05.02 |
---|---|
1.3 int x = 123; 의 작동원리 : 변수, 초기화, 할당 (0) | 2021.05.01 |
1.2 주석만 잘달아놨어도 하루를 아낄 수 있었을텐데 (0) | 2021.05.01 |
1.1 프로그램 구조 (feat. 가장 빨리 프로그래밍 실력 늘리는 방법) (0) | 2021.05.01 |
적응력을 가진 프로그래머가 자유를 누린다.(c++ vs. java) (0) | 2021.05.01 |
댓글