* 제 개인적인 생각으로 적는 포스트라 틀린 내용이 있을 수도 있습니다.

* 댓글에 적어주시면 감사하겠습니다.

 

프로그래밍은 프로그래밍 언어를 사용해 원하는 기능을 만들어내는 것이라고 했었다.

이 과정에는 내가 만들 프로그램의 설계, 구현, 테스트 등 여러가지 단계가 포함된다.

여러 단계를 거치며 프로그래밍을 하는 과정에서 코드를 작성하는 작업을 "코딩을 한다"라고 한다.

그러면 내가 코딩한 코드는 어떻게 돌아갈까?

 

프로세스가 돌아가는 원리

 * 참고)

    - 프로그램 vs 프로세스

    - 프로그램은 개발자가 만들어낸 작업물을 말하고 이 프로그램이 실행 중일 때 이 실행 중인 프로그램을 프로세스라고 한다.

 

 내가 작성한 프로그램이 돌아가는 원리를 알려면 프로세스가 컴퓨터의 어떤 부위(?)를 사용하는지 알아야 한다.

간단하게 컴퓨터가 cpu, 메모리, 디스크로 구성되어 있다고 보자.

내가 작성한 코드에는 수행해야 하는 명령이 있고, 명령을 수행하기 위해 필요한 자원이 있어야 한다.

이 자원은 잠시 동안만 사용하고 버릴 수도 있고, 반영구적으로 저장해야 할 수도 있다.

명령을 수행하는 주체가 cpu, 잠시 사용하고 버릴 자원을 저장하는 곳이 메모리, 반영구적으로 저장할 곳이 디스크다.

 

 

한번 비유적으로 이해해보자.

회사에서 상사가 부하직원에게 매월 주기적으로 포켓몬 빵을 주문하는 일을 시키려고 한다.

"포켓몬 빵을 주문해라!" 이 부분이 명령에 해당한다.

좀 더 명령을 세분화해보자.

 

포켓몬 빵을 주문하기 위해 상사는 부하직원에게 아래 4가지 명령을 수행시킨다.

  step 1. 전국의 포켓몬 빵 공장의 전화번호를 파악해라.

  step 2. 각 공장에 연락을 돌려 가격을 파악해라.

  step 3. 가장 싸게 파는 공장을 기록해둬라.

  step 4. 매월 주기적으로 포켓몬 빵을 주문해라.

부하직원은(cpu) 위 4가지 명령을 수행해서 포켓몬 빵을 주문할 것이다.

 

# step 1

부하직원(cpu)은 1번 명령을 수행하면서 포켓몬 빵 공장의 전화번호를  알아내긴 하는데...

어떻게 공장 전화번호를 다 기억할까...?

그래..! 부하직원(cpu)는 공장 전화번호를 종이(메모리)에 적어두기로 한다.

 

# step 2

그 다음 종이(메모리)에 적힌 전화번호(자원)를 보고 공장에 전화를 돌려 포켓몬 빵 가격을 파악한다.(2번 단계)

 

# step 3

또 빵 가격을 종이(메모리)에 적어뒀다가 종이(메모리)를 보고 가장 싼 공장을 찾는다.

근데 이 종이는 곧 버려질 운명이다. 아무리 종이를 잘 숨겨도 오늘 퇴근하고나면 사무실을 청소 직원분이 가차없이 버릴 것이다.

흠... 이건 나중에 또 써야하는 정보라 잘 보관해둬야 하는데...

그래, 좀 멀더라도 저기 창고에 있는 금고(디스크)에 넣어두자.. 

 

# step 4

그 다음 포켓몬 빵을 주문할 때마다 부하직원(cpu)은 창고에 가서 금고(디스크)를 열고 종이(메모리)에 공장 전화번호를 적어온 다음 포켓몬 빵을 주문한다. (4번 단계)

 

사실 위 내용은 프로세스가 돌아가는 과정을 굉장히 축약해서 이야기한 거긴 하다.

어떻게 보면 복잡하고, 어떻게 보면 단순하지만 이해가 되면 좋겠다.

 

결론적으로 코딩을 한다는 것은...

프로그래밍 언어를 사용해서 컴퓨터가 수행시킬 명령과 명령을 수행하기 위해 필요한 자원을 어디에 어떻게 저장할지 등을 컴퓨터에게 알려주는 일인 것이다.

'프로그래밍 언어 > C++' 카테고리의 다른 글

개발환경 세팅  (1) 2024.01.14
프로그래밍과 C++  (0) 2023.12.27
[C++] accumulate 함수  (1) 2020.12.29

+ Recent posts