[기술요약3] 프로그램은 어떻게 만드는가? – 코딩, 빌드/컴파일 과정

코딩 프로그래밍 빌드 컴파일

코딩과 프로그래밍


코딩은 개발자가 원하는 대로 컴퓨터가 동작하도록 만드는 명령어 문구인 코드를 작성하는 일이다.

코딩의 목적은 무엇일까? 결국 사람이 컴퓨터에게 원하는 동작을 하는 일련의 코드를 실행하는 프로그램을 만드는 것이다.

하지만 코딩을 통해 만든 코드만으로는 컴퓨터가 알아들을 수 없다. 왜냐면 사람이 작성한 코드는 기계에게 내리는 명령이지만, 사람만이 알아볼 수 있는 언어로 작성되어 있는 것이다. 결국 이를 컴퓨터인 기계가 알아들을 수 있는 언어로 번역을 해주어야 한다.

그렇다면 프로그램을 만드는 과정을 단순히 코딩이라고 표현하기에는 부족한 부분이 있다. 그렇기에 일반적으로 프로그램을 만드는 일을 프로그래밍이라 칭하는 것이다.

화룡점정, 프로그램 빌드/컴파일


코딩 이후에 추가적인 작업들을 거쳐서 컴퓨터가 알아들을 수 있는 컴퓨터의 언어로 된 프로그램이 만들어지고 그때야 비로소 우리가 만든 코드가 수행되는 것이다. 결국 마지막 한 수가 필요하다.

작성한 코드를 한데 모아서 컴퓨터가 알아듣도록 번역하고 묶어주는 작업이 필요하다. 이 프로그램을 만드는 과정을 대략적으로 빌드한다 또는 컴파일한다 라고 표현한다. 대략적으로 표현한 그 과정에 어떠한 것이 있는지 짧게라도 알아두어야 한다.

원래 C/C++을 배우면 자연스럽게 배우는 작업들이지만 컴퓨터를 처음 배우는 시절에 배우는 C/C++에서 이런 작업을 했었다고 기억하기란 쉽지 않다. 밑의 컴파일 과정을 보다보면 아 그 때 했던 gcc 명령어가 이런 걸 하는 거였어? 싶을 것이다.

많은 프로그래밍 언어가 컴파일 방식을 택하고 있다. 그래서 이 과정만 알아두면 프로그래밍 언어를 빨리 익히는데 도움이 될 것이다. 그리고 각종 IDE에서 프로젝트 설정할 때 이게 도대체 무슨 기능인 건지 감이 빨리 잡힌다.

프로그램의 빌드(또는 컴파일) 과정


c/c++의 프로그램 빌드 과정 전처리 컴파일 어셈블, 링킹
  1. 인간이 인간이 이해할 수 있는 프로그래밍 언어를 사용하여 코드 작성.
  2. [전처리]코드들에 대해 전처리 수행(전처리 코드에 실제 코드를 바꿔 끼워주는 행위).
  3. [컴파일]전처리 된 코드를 인간이 이해할 수 있는 최소 단위인 어셈블리어로 번역
  4. [어셈블]어셈블리어로 번역된 파일을 기계어로 번역.
  5. [링킹]번역된 여러 개의 기계어 파일들을 하나로 모아 실행파일을 만들어 줌.

컴파일, C/C++만 하는 거 아닌가요?


일단 답부터하자면

절대. 아니다.

우리가 접하는 거의 모든 언어는 위 컴파일 과정을 거쳐 프로그램이 된다. (Python 등의 인터프리터형 언어는 제외)

다만 요즘은 IDE가 워낙 편리하여 많은 설정들을 대신 해주다 보니 위 컴파일 과정에 대한 세팅을 사용자가 직접 할 필요가 많이 없어서 보지 못했던 것 뿐이고, 티스토리 등 블로그에 써있는 예제들을 별 생각 없이 따라하면서 설정했던 것들을 기억하지 못했을 확률이 높다.

IDE로 프로젝트를 만들었다면, 메뉴 리본을 하나하나 펼쳐보면서 어떤 설정들이 되어있는지 한번 살펴보라. 위에 나온 컴파일 작업들에 관한 설정들이 군데군데 있을 것이다.

정리하며


코딩을 한다고 개발자가 되는 것은 아니다. Hello World를 출력하는 프로그램을 만들었다고 개발자가 되는 것은 아니다.

하나의 프로그램을 만들고 동작 시키기 위해서 생각보다 많은 일들이 벌어지고 있다는 것을 알아야 한다.

이를 알고, 이용할 줄 아는 사람을 진짜 개발자라고 할 수 있을 것이다. 나도 많은 것을 알지는 못한다. 그래서 나 스스로도 개발자로 칭하기 부끄러울 때가 있다. 알기 위해서, 이용하기 위해서 끊임없이 노력할 것이다.


이전글

다음글

참고하면 좋은 글

매우 상세한 설명이 나와있으니 참고해도 좋을 듯 합니다!


Posted

in

,

by

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다