< Hello, C++ >
언젠가 unmanaged language를 공부해두면 좋다는 말을 들었다. 귀가 팔랑거렸다!
고급 프로그래머가 되려거든 내가 만든 프로그램이 돌고 있는 하드웨어에 대해 잘 알아야 한다.
메모리 동작 원리, CPU 동작 원리 등 컴퓨터처럼 생각하라.
unmanaged language를 공부하면 managed language(java라던가)에서 지원하는 기능들의 동작 원리에 대해 이해할 수 있다.
내가 메모리 자원을 생각하면서 코드를 짠 적이 있던가? 하는 생각이 들었다. 크게 중요하지 않았다. 일단은 동작하게 만들기에 급급하니...
아직 난 주니어인데 메모리까지 생각을 해야 하나? 주제넘지 않나?라는 생각도 했지만,
모르는 것보다는 아는 것이 낫다!
가만히 있는 것보다는 행동하는게 낫다!
라는 생각에 강의를 듣게 되었다.
유튜브에서 처음 접했던 포프tv의 포프 님이 운영하는 강의를 유데미에서 수강하게 되었다.
하루에 한 챕터씩 공부하면서 정리해보리라 다짐한다!!!
오늘은 제일 처음이니까 강사님이 말씀하신 C++에 대해서 그리고 내가 찾아본 C++에 대해서 정리해본다.
< C++ 탄생 배경 >
C++은 C언어가 개발된 AT&T 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup-덴마크의 컴퓨터 과학자)에 의해 개발됩니다.
1979년에 비야네 스트롭스트룹은 객체지향적 언어인 Simula의 개념을 C언어에 추가하여 "C with Classes"라는 이름으로 새로운 언어를 발표합니다.
이후 증가 연산자(++)의 도입으로부터 C언어의 확장판이라는 의미를 담아 C++이라는 이름으로 1984년에 개정합니다.
기존의 C 언어에 여러가지 기능을 추가하여 만든 프로그래밍 언어입니다.
C++은 C 언어에서 절차 지향적 언어의 특징과 객체 지향적 언어의 특징을 가져왔습니다.
기존의 C 표준 라이브러리를 사용할 수 있습니다.
< C++ 실행 절차 >
1. 소스 작성: C++ 문법으로 작성된 소스 파일(원시 파일)은 .cpp 확장자로 저장
2. 선행 처리기(preprocessor)에 의한 선행처리 : 선행처리 문자(#)로 시작하는 선행처리 지시문 처리함. 컴파일하기 전 컴파일러가 작업하기 좋도록 소스를 재구성하는 역할. (include 문들도 여기서 먼저 처리되나 보다!)
3. 컴파일러에 의한 컴파일: 소스 파일을 기계어로 변환하는 과정. 기계어로 변환된 오브젝트 파일은 .o 또는 .obj 확장자로 저장
4. 링커에 의한 링크 : 컴파일된 파일은 두 가지가 없다. 시동 코드(start-up code. 운영체제와의 인터페이스 담당) 그리고 표준 라이브러리 파일(대부분의 C++ 프로그램에서 사용). 하나 이상의 오브젝트 파일과 라이브러리 파일, 시동 코드 등을 합쳐 하나의 파일로 만드는 작업을 링크라고 하고 링커가 실행. 링크가 끝나면 하나의 새로운 실행 파일이나 라이브러리 파일이 생성된다. 이처럼 여러 개의 소스 파일을 작성하여 최종적으로 링크를 통해 하나의 실행 파일로 만드는 것을 분할 컴파일이라고 한다.
5. 실행 파일(executable file)의 생성 : 최근 사용되는 개발 툴은 대부분 위의 선행 처리기, 컴파일러, 링커를 모두 내장하고 있으므로 소스 파일에서 한 번에 실행 파일을 생성할 수 있다. 이렇게 생성된 실행파일은 .exe 확장자로 저장.
< C++ 이 사용되는 곳 >
- 운영체제, 임베디드 시스템, 비디오 게임(3D 게임), 그래픽 애플리케이션, 웹브라우저 등
< C++의 현재 >
TIOBE에서 정리한 프로그래밍 언어 순위이다.
C++을 보자면 2019년에 이어 올해도 4위에 랭크되어있다. Java가 점유율이 역시 높구나...!
목표를 거창하게 잡으면 실패하기 쉽다.
최소한 일주일에 세 번은 공부하자는 마음으로 시작해본다.
출처: TCP school, TIOBE
'C++' 카테고리의 다른 글
[C++ study] 출력, namespace, <<연산자, 출력 형식 지정 (0) | 2020.03.24 |
---|