Intro

여러분 안녕하세요!! 무려 1년 6개월만에 새로운 포스팅으로 돌아왔습니다. 포스팅을 본격적으로 재개해 보려고 블로그 디자인도 개편했어요 ㅎㅎ 사실 그동안 블로그 디자인이 마음에 안들어서 안왔.. 그동안 바쁘다는 핑계로 블로그를 사실상 방치했지만, 너무 감사하게도 지속적으로 찾아와 주시는 분들이 많아 다시 글을 쓰고자하는 의지가 불타오르기 시작했습니다.🔥

복귀 기념으로 야심차게 준비한 주제는 iOS Concurrent Programming 이였지만… 글을 쓰다보니 미리 알아두어야 이해가 수월한 개념들이 많아 이 포스팅을 먼저 작성하게 되었습니다. 바로 프로그램, 프로세스, 그리고 스레드… 항상 확실하게 공부하지 않고 넘어가 헷갈렸던 개념이에요. 조금만 깊게 들어가면 생각보다 학습할 내용이 꽤 많은 주제라 전부 한 번에 공부하진 않고 각 토픽 별로 포스팅을 해서 총 3부작이 될 예정입니다. 그러니까 오늘은 프로그램부터 한번 제대로 알고 가봅시다!


Program 의 정의

먼저 프로그램의 정의를 살펴보면 어떤 작업을 위해 실행할 수 있는 파일 입니다. 혹은 컴퓨터를 실행시키기 위해 차례대로 작성된 명령어 모음 이라 말할 수도 있습니다. 하지만 이런 정의로는 그 의미가 너무 딱딱해서 잘 와닿지가 않는데요.

사실 프로그램이라는 단어는 우리가 평소에 자주 사용하는 단어잖아요? 이건 어떤 프로그램이야?, 이 프로그램을 설치해야 해 등 그 정의를 제대로 몰라도 주변 사람들과 얘기를 할 때 자연스럽게 사용하고 있었습니다. 네 그렇습니다. 우리가 잘 아는 아래 이미지에 보이는 프로그램들이 바로 오늘 공부하고 있는 그 프로그램입니다. 그러니까 우리는 이제 프로그램을 이제 100% 이해했습니다.

Program Example

하지만 이렇게 끝나면 허무하니까.. ㅎㅎ 조금만 더 깊게 알아봅시다. 프로그램은 크게 시스템 프로그램응용 프로그램 2가지로 나뉩니다.

System Program

시스템 프로그램은 컴퓨터의 시스템과 하드웨어를 제어, 관리하는 프로그램입니다. 즉 컴퓨터의 리소스 전반에 관여하며 메모리 관리, 프로세스 관리, 보호 및 보안을 담당하고 있어요. 우리에게 익숙한 Windows, macOS, iOS, Android 등이 전부 시스템 프로그램입니다. 그렇다면 시스템 프로그램은 어떤 특징들을 갖고 있을까요?

  • 우선 우리가 컴퓨터 전원을 켰을 때를 돌이켜 봅시다. 전원이 켜지면 항상 가장 먼저 운영체제가 실행되었죠? 이렇게 시스템을 시작하기 위해서는 시스템 소프트웨어가 반드시 필요합니다. 그리고 시스템 프로그램은 시스템(컴퓨터)이 켜지면 실행되고, 시스템이 종료될 때까지 실행되게 됩니다.
  • 우리가 컴퓨터를 사용하면서 실행하는 프로그램들을 응용 프로그램이라 합니다. 그리고 이런 응용 프로그램들은 시스템 프로그램에서 제공하는 플랫폼 상에 설치 후 사용하게 됩니다. 예를 들어 MS Word(응용 프로그램)를 Windows(시스템 프로그램) 상에 설치해 사용하는 것이죠.
  • 일반적으로 저수준 언어인 어셈블리어로 작성됩니다.

Application Program

응용 프로그램은 특정 목적을 위해 설계된 소프트웨어 입니다. 우리가 평소 사용하는 MS Office, Photoshop, VScode, 그리고 게임들까지 전부 응용 프로그램이라 할 수 있습니다.

  • MS Word 가 작업에 필요하다면 우리는 해당 프로그램을 실행하고, 작업을 끝마치고 나면 프로그램을 종료하잖아요? 이렇게 응용 프로그램은 사용자의 요청에 의해 실행되고 종료되게 됩니다.
  • 또한 응용 프로그램은 최종 사용자(우리)와 시스템 소프트웨어 간의 중개자 역할을 합니다. 중계자라고 하니 생소할 수 있지만 그냥 우리가 응용 프로그램에게 특정 작업 명령을 하고, 응용 프로그램이 시스템 프로그램에게 명령을 전달함으로써 하드웨어를 제어하는 것을 의미합니다.
  • 당연하지만 응용 프로그램이 없어도 시스템 작동에는 전혀 문제가 없습니다. 하지만 응용 프로그램은 시스템을 조금 더 유용하게 사용할 수 있도록 만들어 줍니다.
  • 흔히 아는 고수준언어인 Java, Python, Swift 와 같은 언어들로 작성되는 경우가 많습니다.

Wrap Up

여기까지 프로그램이 무엇인지에 대해 알아보았습니다. 첫번째 토픽인 프로그램은 우리에게 익숙한 편이라 그렇게 어렵진 않았을 거에요. 하지만 오랜만에 돌아와서 이렇게 바로 끝내버리기에는 뭔가 조금 아쉬우니 누가 전세계에서 최초로 프로그램이란 것을 만들었는지 알려드릴게요.

바로 Tom Kilburn 이라는 사람이 1948년 6월 21일 영국 맨체스터 대학교에서 전자 메모리에 저장되는 최초의 소프트웨어 프로그램인 Manchester Baby, 정식 명칭으로는 the mall SSEM (Scale Experimental Machine) 를 만들었다고 합니다. 소프트웨어 개발자라면서 왜 그동안 누가 최초로 프로그램을 만들었는지는 궁금해하지 않았는지 모르겠어요 ㅎㅎ 그럼 끝까지 같이 공부해주셔서 감사하고 다음 포스팅에서 만나요!


References

컴퓨터 프로그램이란 무엇인가?
시스템 소프트웨어와 응용 소프트웨어의 차이점
What is a program?