10. 버전 관리 시스템(Version Control System)
• 무언가 잘못되었을 때 복구를 돕기 위하여
• 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
• 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가
동기화하는 과정을 자동화하기 위하여
• 소스 코드의 변경 사항을 추적하기 위하여
• 소스 코드에서 누가 수정했는지 추적하기 위하여
• 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
• 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기
위하여
• 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기
위하여
• 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
• 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여
14. 컴파일 과정(Compile Procedure)
디버깅(Debugging)
프로그램 상의 버그를 잡는 행위
레퍼런스 사이트
https://msdn.microsoft.com/ko-kr/library/cscc687y.aspx
http://ko.cppreference.com/w/c
http://forum.falinux.com/zbxe/index.php?mid=C_LIB
Editor's Notes
컴퓨터(compute + er)는 본래 어원에서 알 수 있다시피 고속 계산을 위한 용도로 발전되었다. 현대 컴퓨터의 개념을 최초로 제시한 이는 찰스 배비지였는데, 그는 오늘날의 컴퓨터와 개념적으로 같은 기계인 해석기관을 설계하였다. 후에 천공카드 시스템이 개발되어 프로그래밍을 이용하게 된다.
프로그래밍 언어는 컴퓨터와 의사소통할 수 있는 언어이다. 가장 원시적인 언어는 기계어이며, 이에 대응하는 어셈블리어, 그리고 고급 수준 프로그래밍 언어인 코볼, 포트란, C 등이 나왔다.
C는 데니스 리치가 만든 프로그래밍 언어이다. 어셈블리어로 변환되어 속도가 매우 빠르고, 오늘날 수많은 언어들의 근간이 되는 언어이다. 메모리를 직접 제어할 수 있다는 것이 가장 큰 특징인데, 이로 인해 C언어는 고수준부터 저수준까지 접근할 수 있어 아직도 많이 쓰이는 언어 중 하나이다.C++는 비야네 스트롭스트룹이 C언어에서 파생시켜 만든 언어로서, 객체지향 프로그래밍의 개념이 추가되었다.
버전 관리 시스템이란 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 어제 했던 내용으로 돌릴 수 있는 시스템이다. 중앙 집중 시스템과 분산 버전 관리 시스템으로 나뉘며, 여러가지 종류가 있다.
버전 관리 시스템이란 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 어제 했던 내용으로 돌릴 수 있는 시스템이다. 중앙 집중 시스템과 분산 버전 관리 시스템으로 나뉘며, 여러가지 종류가 있다.
이 같은 것을 주석이라고 한다. 컴퓨터는 컴파일 시 주석을 무시한다. 주석은 프로그래머에게 코드 내면에 숨겨져 있는 것을 설명하는 데 아주 유용하게 쓰인다. 이와 같은 스타일 말고도 /* */을 이용한 주석도 있다.
#include는 전처리기 지시어이며, 전처리기란, 컴파일 전에 실행되는 것들을 말한다. 단어를 보면 알 수 있듯 무언가를 포함하게 하는 것인데, 헤더 파일을 포함한다. 헤더(header) 파일은 소스 코드 파일의 일종으로 함수, 형의 선언들이 들어가 있다. <>는 라이브러리 헤더를 포함하는 것이다.
여기서는 int가 반환형, main이 함수이름 ,void가 매개변수 목록이 될 것이다. 여기서 void는 아무것도 전달하지 않음을 뜻한다. 그리고 마침내 함수 본체가 실행이 되고 int형의 어떤 값을 돌려주게 된다. 반환형과 매개변수 목록을 묶어 그 함수의 시그너쳐(signature)라고 한다. 예를 들어 메인 함수의 시그너쳐는 int(void)가 될 것이다. 함수 어떻게 구분? ( ) 연산자
puts는 표준 라이브러리 함수이다. 라이브러리는 누군가 만들어 놓은 함수 목록을 일컬음. 함수명에 ()연산자를 붙여주면 그 함수를 불러온다는 것이다. puts의 동작은 매개변수의 내용에 개행문자를 붙여 콘솔창에 출력한다.
함수 내에서 반환할 때 return이라는 구문을 사용한다. 여기서는 0을 돌려주게 된다. Main의 리턴 값은 운영체제가 이용한다. 정상 종료인지 판별.
그럼 정확히 컴파일이 어떻게 일어나는지 알아보자. 컴파일러(compiler)는 우리가 작성한 소스 코드를 컴퓨터가 읽을 수 있는 형태로 번역(compile)한다. 여기서는 main.cpp이 컴파일 될 것이다. 그리고, 링커(linker)가 각 소스코드 간의 의존성을 파악하고, 결합하는 역할을 한다. 그렇게 최종적으로 실행 파일이 나오게 된다.