‘빌드’란 무엇일까? 우리말로 하면 ‘구축하다’라는 뜻인데 건축물뿐만 아니라 컴퓨터 프로그램도 빌드할 수 있다. 그리고 여기서 말하는 빌드는 요즘 유행하는 게임 제작 툴처럼 모든 작업 과정을 자동화해서 결과물만 보여주는 게 아닌 기획 단계부터 최종 결과까지 하나하나 만드는 걸 의미한다. 그렇다면 왜 굳이 빌드해야 할까? 일단 내가 원하는 방향대로 만들 수 있기 때문이다. 또 한 가지는 개발자라면 누구나 공감하겠지만 협업 시 서로 다른 언어로 대화하면 소통하기 어렵기 때문이다. 그렇기 때문에 프로그래밍 분야에서는 더더욱 빌드 문화가 정착되어가고 있고 현재 국내에서도 조금씩 빌드 문화가 퍼져나가고 있다.
1. Build
먼저 빌드 과정(Build Process)에 대해 간략하게 알아보자
Build 라는 단어가 '무언가를 짓다'라는 뜻인 것은 모두가 알 겁니다. 우리가 건물을 짓는다고 할 때, 설계도를 기반으로 기초공사를 하고 철근을 세우고, 벽을 세우고, 도색하고... 이러한 과정을 거쳐 집이 완성되는 과정을 짓는다고 하죠.
또 다른 예시로는 해외판 책을 우리나라 말로 번역하는 과정이라고 생각할 수도 있겠습니다.
프로그래밍에서도 마찬가지입니다. 컴퓨터는 근본적으로는 0과 1밖에 모릅니다. 우리가 작성하는 코드들은 거의 대부분 고급언어를 사용하기 때문에 결국에는 컴퓨터(CPU)가 이해할 수 있도록 번역을 해주어야겠죠. (C, Java, C++ 등 어셈블리를 제외한 대부분 언어가 고급언어입니다.)
컴퓨터가 이해하는 언어를 기계어라고 하는데, 우리가 만든 소스 코드가 컴퓨터 입장에서는 해외판 책이 되는 것이고, 이 책을 기계어(machine code)로 번역하여 컴퓨터에서 이해할 수 있는, 즉 실행 가능한 파일로 만드는 과정을 빌드(Build) 라고 합니다.
조금 더 이해하기 쉽게 그림으로 보자면 이렇습니다.
정리하자면 우리가 만든 소스코드를 '빌드'라는 과정을 통해 실행 파일을 얻게 되는 것이죠. 그 실행파일은 exe, exec 등등 여러 종류가 있습니다. 이러한 실행파일은 기계어(Machine Code) 라고 언어(CPU가 읽을 수 있는 이진코드)로 이루어져 있습니다.
프로그래밍에 대해 배우는데 빌드가 어떻게 되는 것인지 모른다는 것은 번역가가 외국어 책을 어떤 방식으로 우리말로 번역되는지를 모른다는 것과 다름이 없죠.
그러니 조금 더 빌드를 세분화하여 보도록 합시다.
2. Build Process
앞서 빌드를 번역하는 과정에 빗대어 표현했습니다.
외국어로 되어있는 책(소스 코드)을 우리나라 말로 번역(빌드)하여 우리(기계)가 읽을 수 있는 책(실행 파일)으로 만드는 과정은 하나만 있는 것이 아닙니다.
예로들어 전문 번역가를 고용한다던지, 구글 번역을 사용한다던지, 파파고를 사용한다던지.. 여러 방식이 있겠죠. 이렇듯 컴퓨터의 빌드 과정도 모든 언어가 각기 다른 방식을 사용하고 있습니다.
빌드과정은 Compile 방식, Interpreter 방식이 있습니다.
일단 간단하게 표를 보고 하나씩 분해해봅시다.
Type | Process |
Compiler | 소스코드 전체를 기계어로 번역함 |
Interpreter | 소스코드 한 줄씩 번역하면서 실행함 |
장점 | 단점 | |
Compiler | 1. 빌드가 완료된 실행가능한 파일은 실행 속도가 빠릅니다. 2. 매번 번역할 필요 없이 실행 파일만 실행하면 되기 때문에 전체적인 시간면에서 효율적입니다. |
1. 프로그램을 수정해야 할 경우 처음부터 빌드과정을 다시 거쳐야하기 때문에 특히나 대규모 프로그램에서는 생산성이 떨어집니다. 2. 플랫폼에 매우 의존적입니다. |
Interpreter | 1. 컴파일과정 없이 바로 실행하기 때문에 수정, 디버깅에 유리합니다. 즉 개발속도에 유리합니다. 2. 각 플랫폼에 지원하는 인터프리터만 있다면 실행 가능하기 때문에 플랫폼에 독립적입니다. |
1. 빌드 되어있는 컴파일 언어 프로그램보다 실행시간이 느립니다. 2. 코드를 열면 다 보이기 때문에 보안에 좋지는 않다. |
'IT 정보 > IT 용어' 카테고리의 다른 글
챗GPT(ChatGPT) 란? (0) | 2022.12.23 |
---|---|
[IT 협업툴] “개발자 개인의 성과 평가는 의미 없다...팀 단위 성과에 집중하라” (0) | 2022.12.16 |
[4차산업] 5G시대 필수품 "UWB"란 무엇인가? (0) | 2022.11.30 |
[개발용어] 코딩의 시작과 끝, 디버깅 _ 실력있는 개발자의 필수 무기 (0) | 2022.11.29 |
IT 용어 정리 - 네트워크 (0) | 2022.11.04 |
댓글