본문 바로가기

공학/기타 컴퓨터 정보

컴퓨터 프로그램이 실행되기 까지의 과정


컴퓨터 프로그램이 실행되기 까지의 과정





우리는 컴퓨터로 프로그램을 만듭니다.


대표적인 C언어 부터 시작해서


C++, Java, Objective-C, Ruby, Python, C# 등등


찾아보면 컴퓨터 언어는 굉장히 많습니다.


우리는 이런 언어를 고차원 언어(High level language)라고 부릅니다.


그 이유는 인간이 프로그램 소스코드를 봣을때 이해할 수 있기 때문이지요.


(실제로 말로 풀어서 설명 할 수도 있습니다)


하지만 컴퓨터는 어떠한 방식으로 이런 고차원 언어를 이해하는 것일까요?


간단히 보자면 프로그램이 실행되기 까지의 순서입니다.



얼마전 주문한 펜마우스가 온기념으로 그려봤습니다 ㅎㅎ


적응이 잘 안되네요...


아무튼!


위의 그림대로 컴파일->링크->파일 실행


순서로 인하여 컴퓨터가 우리가 작성한 코드를 이해하게 됩니다.


우리는 이 과정을 빌드(build)라고 부릅니다.


일단 컴파일 부터 알아볼까요?


그전에 우리는 소스코드를 작성해야겠죠?


<절대로 실제 이런표정으로 코딩하지 않습니다. 정말로요.>


우리는 컴퓨터를 통하여 프로그램을 작성해냅니다.


예로 main.cpp나 helloWorld.java 이런 파일들이겠지요.



그리고 눈물로 작성된 소스 코드를 완성합니다.


때론 한개이며..때론 엄청나게 많은 소스 코드를 작성합니다.


하! 지! 만!



컴퓨터는 그걸 알아 듣지 못하죠. 


왜냐하면 컴퓨터는 아무리 누가 뭐라해도 기계이고


0과 1로만 이루어지기 때문입니다. 


0과 1밖에 모르는 것이지요.


이것을 저차원 언어(low level language)라고 부릅니다. 


인간이 봐도 해석이 힘들고 못알아 먹겠는게 바로 이겁니다.


게다가 직접 작성하기도 엄청 힘들구요. Assembly면 그나마 낫습니다만...


인간은 편리함을 추구합니다 후후.


그래서 우리는 컴파일러(Compiler)가 필요합니다.



컴파일러의 예로는 마이크로소프트사의 비주얼 스튜디오(visual studio)나


애플사의 엑스코드(xcode), 혹은 이클립스(eclipse) 등


프로그램형의 컴파일러가 존재하는 반면


콘솔창이나 터미널로 컴파일 하는 방법이 있습니다. (대표예 gcc)


컴파일러는 우리가 작성한 코드를 분석해서


기계어로 번역을 해줍니다. 기계어로 번역하면 오브젝트 파일이 생성되죠.


그리고 우린 링커(Linker)가 필요합니다




링커는 무엇을 하느냐?


링커는 프로그램에 필요한 파일들을 모아서 하나로 합쳐줍니다.


import나 include같이 무언가 소스 코드에 추가하는것은


링커가 다 링크 시켜주죠. 정말 착한 녀석입니다. 


매번 빌드할때마다 우리가 직접 모든 필요한 파일을 찾아다가 연결 시켜야된다고 생각하면


아 벌써부터 프로그래밍 하기 싫어집니다.


저만 그런가요?


아무튼 이런 과정을 거치고나면 우리는 실행파일을 얻습니다.



우리가 흔히 보는 exe 확장자의 파일입니다. 


더블클릭해서 열면 프로그램이 실행되는 것이지요.


이렇게 해야 비로소 컴퓨터는 실행파일을 읽고 우리가 원하는 프로그램을 실행 시켜주는것이지요.


우리는 흔히 컴퓨터 프로그래밍을 배울때


프로그램이 어떠한 방식으로 실행되는지 안배우고 넘어가는 치명적인 실수를 범할때가 많습니다.


물론 Hello World 프로그램 작성하는 것 정도까지야 배우는거면


이런거 꼭 알필요는 없습니다만,


그래도 알아두면 좋겠죠?


이상 마치겠습니다.




원글은 


http://bsy6766.tistory.com/115


에서 보실 수 있습니다.

'공학 > 기타 컴퓨터 정보' 카테고리의 다른 글

[압축이론]Lempel-Ziv (렘펠-지브) Coding  (1) 2013.02.25