본문 바로가기

IT/C++

[C++] C++ 개요

대충 요약하자면 기존의 C언어에서 여러가지 새 기능을 추가한 확장팩 같은 녀석입니다.

 

당연히 모태가 C언어인지라 기존 C언어 라이브러리를 고대로 갖다써먹을 수 있으며,

C언어의 특징인 절차 지향적 언어의 특징이 그대로 딸려왔습니다.

 

거기다 시뮬라(Simula)의 특징이자 프로그래머라면 모를 리 없는 클래스..즉 객체 지향적인 특성을 적용한 녀석이기도 합니다.

 

템플릿이라는 일반화 프로그래밍 방식의 특징도 덤이죠.

 

 

여하튼 1979년에 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup)이라는 사람은 시뮬라의 특징인 객체 지향을 기존 C언어에다 합체시키곤 아 내가 이걸 만들엇따! 하면서 C with Class로 발표하게 됩니다.

 

이후 증감연산자의 기호인 ++로 바꿔붙여서 지금의 C++이 되긴 했지만요.

 

 

이렇게 만들어진 C++은 다양한 방식을 지원하게 되면서 프로그래머에게 쉽고 편하고 자유로운 개발환경의 토대를 만들어주게 되었으며, 프로그래머는 이 다양한 방식을 모두 배우게 되었기에 현재 많은 머학생들이 X발을 외치며 지금 이 순간에도 C++의 레퍼런스를 뒤적이며 날을 새 가고 있습니다.

 

 

사족으로 98년도에 ANSI와 ISO가 파티짜고 C++의 표준화 작업을 하게 됩니다.

표준화래봤자 뭔가 업계 간의 불문율 같은 걸 떠올리기 쉽지만, 대충 가이드 만든다고 보시면 됩니다.

 

그 왜 게임 시작 할 때, 거의 있을 리 없지만 게임 해 본 경험이 1도 없는 사람을 위해 기본적인 조작방법이라던가 그런 튜토리얼을 표시하는 그런거 생각하시면 딱 그런 느낌입니다.

 

현재 C++ 표준화 최신 버전은 17년도에 완성된 C++17 입니다.

이제 막 입문하시거나 관련 지식 없는 분들이 보시면 링크 들어가도 뭔 소린지 하나도 모를테니 걍 이런게 있구나 하는 느낌으로 쭉 둘러보시면 됩니다.

 

인류의 진화과정을 보는 것 마냥 표준화가 발전하는 단계를 자세히 알고 싶으신 분들은 데브기어 홈페이지의 김원경님의 글을 둘러보시길 바랍니다.

 

 

 

다음은 C++이 어떻게 돌아가는지를 설명하는건데...

대충 다음과 같은 과정을 거칩니다.

 

 

[ 소스 파일 ]

[ 선행 처리기 ]

[ 컴파일러 ]

[ 오브젝트 파일 ]

↓    [ 시동 코드 ], [ 표준 라이브러리 파일 ]

↓    ↓

[ 링커 ]

[ 실행 파일 ]

 

 

그리기 귀찮아서 대충 텍스트로 표현해보았습니다. 저게 이해 안되시면 뭐... 구글 검색창에 C++ 순서나 C++ 과정 같은거 입력해서 이미지로 보시면 대충 저런 모양의 이미지가 뜰겁니다.

 

암튼 각 개체들에 대해 설명해보자면...

 

 

소스 파일 : 우리들이 암걸리면서 타자연습을 하고있는 바로 그겁니다. 텍스트 편집기로 작성하거나 비주얼 스튜디오 등으로 작업합니다.


선행 처리기 : 컴파일이라는 작업을 하기 전에 작업하기 좋도록 적당하게 소스를 재구성해주는 작업입니다. 뱀 마냥 음식을 꿀떡꿀떡 삼키는게 아닌 입 속에서 이빨로 음식물을 잘게 쪼개어주어서 위장에 소화하기 쉬운 형태로 만들어주는 작업이라 생각하시면 됩니다.


컴파일러 : 대충 요약하자면 기계어 번역기입니다. 우리들이 위에서 영타자 연습을 한 결과물을 선행 처리기에서 적당하게 재구성 해 준 후 컴퓨터(기계)가 읽을 수 있도록 0과 1로 되어있는 이진수로 변환해주는 작업을 해줍니다. 현존하는 모든 디지털 기계들이 전기가 들어오고(1) 나간다(0) 만 읽을 수 있다는 기본지식을 모른 채로 이게 왜 그렇게 되냐고 질문하시면 곤란합니다. 그래도 뭐... 알기 쉽게 비유하자면 잘게 쪼개진 음식물이 위장에서 분해되는 과정으로 생각합시다. 음식물의 영양소를 우리 몸땡이가 받아들이기 쉽도록 분해하는 작업이라 치죠.


오브젝트 파일 : 번역이 완료된 기계어 파일입니다. 텍스트 파일로 열어보면 0과 1로 쭉 나열된 사람이 읽을 수 없는 언어로 만들어졌음을 알 수 있습니다. 사실 이것도 종류가 3가지 있는데 여기선 생략하겠습니다. 귀찮기도 하고... 나중에 쓰게 될 기회가 생기겠죠 뭐


링커 : 위의 컴파일 과정에서 이리저리 여러개로 나뉘어져 작업된 오브젝트 파일들을 하나로 합체시켜 주는 역할을 합니다. 링킹(Linking)이라 불립니다.

그리고 오브젝트 파일과 링커 사이에 시동코드와 표준 라이브러리가 시동코드는 컴퓨터의 운영체제와 인터페이스를 연결해주는 코드입니다. 운영체제 = MS 윈도우 인걸 모르는 사람이 없길 바랍니다.

표준 라이브러리는 이걸 참조, 대충 프로그래머들이 사용하기 편하도록 각종 함수들을 미리 저장해둔 파일 같은거라 보시면 되겠습니다. 한마디로 라이브러리(서재)에서 책 꺼내보듯 필요 할 때 마다 쉽게 꺼내들 수 있는 함수 같은거죠.


실행 파일 : exe파일. 즉 위의 과정을 모두 거치고 나온 완성품입니다. 더블클릭하면 자기가 만든 프로그램을 실행할 수 있죠. 이상 설명 끗

 

 

 

 

...이렇게 길게 써 놨지만 요약하자면

[코딩] → [1차 작업] → [번역] → [번역 결과물 합체] → [완성]

같은 느낌입니다만, 뭐 세세하게 설명하면 보는 맛도 있고 좋죠 뭐...

 

 

 

여튼 지금까지 적은거 중에 이해안되시면 댓글로 질문해주세요.

아는 한도 내에서 최대한 알려드리겠습니다.

 

물론 글쓴이가 지식이 얕아서 질문하면 이곳저곳 자료찾으면서 설명하느라 난잡해질수도 있습니다만 그건 알아서 m(_ _)m

 

'IT > C++' 카테고리의 다른 글

[C++] 기본 소스코드 작성  (0) 2020.02.04