니힐로그 로고

개발을 위한 프로그래밍 지식 2편 - 프로그램과 프로그래밍 언어

분류포스트

작성일2021-05-03 09:45

수정일2021-10-30 14:28

카테고리

태그

개발을 위한 프로그래밍 지식 2편 - 프로그램과 프로그래밍 언어

개발을 위한 프로그래밍 지식시리즈는 프로그래밍 공부를 하기에 앞서 알아서 나쁠 것 없는 정보들을 먼저 접하는 것으로부터 구상했습니다. 컴퓨터와 프로그래밍의 역사를 들여다보고 인터넷과 웹의 역사를 들여다보는 것이 목적입니다. 시리즈의 포스트를 모아둔 글은 이 링크로 넘어가시면 됩니다.

이번 글은 개발을 위한 프로그래밍 지식 2편입니다. 저번 글에서는 컴퓨터에 대한 역사를 알아봤습니다. 이번 글에서는 프로그램과 프로그래밍 언어에 대해 알아보려고 합니다. 저번 글처럼 긴 글이 될 것 같지는 않습니다.

프로그램

컴퓨터의 등장으로 인해서 인류는 복잡한 계산을 기계에게 시켜 편해질 수 있었습니다. 기계들은 인간보다 빠르게 어려운 계산도 해내며 지치지도 않고 투정을 부리지도 않습니다. 그저 인간이 의도한대로 움직이는 게 컴퓨터의 역할이죠. 컴퓨터는 단순히 계산을 목적으로 하는 기계에서 좀 더 다양한 기능을 갖게 되었습니다. 오늘날의 컴퓨터는 영상도 재생하고 심지어 그 영상을 만들 수도 있죠.

지금 하고자 하는 말은 컴퓨터 안에 어떠한 것들이 있길래 이 컴퓨터들이 임무를 수행할 수 있냐는 것입니다. 기계는 스스로 생각을 할 수가 없습니다. 반드시 누군가 뭘 해야 하는지 알려줘야 합니다. 그래서 컴퓨터에는 컴퓨터가 수행해야 할 목록들이 입력되어 있습니다. 입력된 내용에 따라 임무를 수행하죠.

프로그램이란 바로 그러한 목록을 말합니다. 프로그램은 특정한 알고리즘을 갖고 있으며, 그 알고리즘에 따라 움직입니다. 사용자가 무엇을 하면 프로그램은 무엇을 해야하는지에 대한 명령들의 모음이 프로그램이라고 할 수 있습니다.

말이 어려운데 키보드 A누를 경우에 컴퓨터는 어떠한 동작을 하게끔 되어 있는 것. 이 프로그램입니다.

OS도 프로그램이다.
OS도 프로그램이다.
크게 보기 (새 창)

예를 더 들어보면, 컴퓨터의 OS는 하나의 프로그램입니다. 어마어마하게 큰 프로그램이죠. 명령 프롬프트웹 브라우저들도 프로그램입니다. 프로그램 안에 프로그램이 있는 셈이죠. 이렇게 사용자의 입력을 받으면 특정한 반응을 하게 되어있는 명령의 집합이 프로그램입니다.

컴퓨터에는 OS라는 프로그램이 있어서 사용자의 편의를 봐줄 수가 있는 것이죠. 메모를 해야 할 때면 메모장이 도와주고, 이미지를 봐야 할 때면 이미지 뷰어가 도와주는 겁니다.

프로그래밍과 프로그래머

프로그램을 만드는 행위를 프로그래밍이라고 합니다. 프로그램은 간단하거나 복잡한 어떠한 알고리즘을 적용해서 만들게 됩니다. 이런 일을 하는 사람들을 프로그래머라고 부르고 더 포괄적인 의미로는 개발자라고 부릅니다. 프로그래머들은 어떠한 무언가에 대해서 구조적으로 접근하고 그 무언가의 여러가지 측면을 생각할 수 있어야 합니다.

프로그래머가 프로그래밍을 통해 만드는 프로그램도 결국 사용자의 명령을 받아 그 명령에 따른 어떠한 반응을 하게끔 설정한 명령들의 집합체입니다. 하지만 굳이 명령어들의 집합체일 필요는 없고 그냥 명령어가 하나만 있고, 그 명령어를 실행하는 도구를 만들더라도 그것은 프로그램입니다.

우리는 개발을 위해 공부를 하고 있으니까 정확히는 프로그래머가 되는 것이 목적입니다.

프로그래밍 언어

다양한 프로그래밍 언어가 있다.
다양한 프로그래밍 언어가 있다.
크게 보기 (새 창)

프로그래머들이 컴퓨터와 대화를 하기 위해 존재하는 것이 프로그래밍 언어입니다. 프로그래밍 언어는 컴퓨터가 이해할 수 있고 사람도 이해할 수 있는 언어이고, 일종의 약속입니다. 프로그래머들은 프로그래밍 언어를 통해서 프로그래밍을 이루어냅니다. 프로그래밍은 코드를 작성한다는 의미에서 코딩이라고도 부릅니다.

대화라는 표현 보다는 명령이라고 표현하는 게 더 적당할 것 같네요. 프로그래머는 프로그램을 통해 컴퓨터에게 명령을 내리는 사람인 것이고, 프로그래밍 언어는 명령을 내리기 위해 존재하는 컴퓨터가 이해가 가능한 언어인 것입니다.

프로그래밍 언어는 아주 다양하게 많습니다. 많이 쓰이는 인기가 많은 언어도 있고 인기가 없는 언어도 있습니다. 프로그래밍의 세계는 트렌드가 존재하고 프로그래머들은 이 트렌드를 따라가는 게 보통입니다. 그래서 언어의 인기는 영구적이지 않고 상황에 따라 변합니다.

널리 알려져 있는 프로그래밍 언어는 다음과 같습니다. 사실은 더 많은데 유명하고 당장 생각나는 것만 넣어봤습니다.

  • 자바
  • C / C++ / C#
  • 파이썬
  • 자바스크립트
  • 코틀린
  • Go

프로그램의 목적

그렇다면 프로그램이 존재하는 이유는 무엇일까요. 간단합니다. 인간의 반복 작업을 최소화하고 편리함을 얻기 위함입니다. 어려운 일, 복잡한 일은 컴퓨터에게 맡기고 인간은 다른 일에 몰두할 수 있게 만드는 겁니다. 그래서 세상에는 정말 다양한 프로그램들이 많이 존재합니다. 사람들이 어떤 불편함을 겪고있는지를 고려해서 특정한 사람들을 위한 프로그램을 제작하는 사람들도 있을 정도입니다. 프로그래머들은 이런 선구안을 가진다면 더 뛰어난 프로그래머가 될 수도 있습니다.

계산기로써의 측면이 강했던 과거의 컴퓨터들이 이러한 과정으로 인해 탄생했던 것입니다. 현재도 다양한 프로그램이 탄생했다가 사라졌다가를 반복하고 있습니다.

소프트웨어

소프트웨어는 같은 걸로 취급되는 경우가 많은데 사실은 소프트웨어가 더 상위의 개념입니다. 소프트웨어는 프로그램과 데이터로 구성됩니다. 소프트웨어에서 프로그램은 명령에 따라 동작하는 부분이고, 데이터는 프로그램에 사용되는 파일이나 프로그램의 동작에 의해 출력된 파일등을 말합니다.

데이터인 동시에 프로그램인 경우도 있는데 바로 프로그래머가 작성한 코드 파일입니다. 이는 파일 자체가 프로그램의 기능을 할 수 있기 때문에 데이터이기도 하고 프로그램이기도 합니다. 참 복잡한 이야기입니다.


프로그램에 대한 이야기는 이정도면 충분한 것 같습니다. 사실은 더 깊게 들어갈 수도 있는데 그것은 나중에 기회가 되면 다뤄보도록 하겠습니다. 이번 글에서는 프로그램과 프로그래밍 언어에 대해서 알아봤습니다. 다음 글에서는 프로그래밍 언어의 역사에 대해서 알아볼까 합니다. 프로그래밍의 역사가 작성되면 웹에 대한 내용을 작성할 예정입니다.


글을 읽고 혹은 읽으면서 하고 싶은 말이 있다면 아래의 덧글창에 적어주시면 됩니다. 최대한 빠르게 확인하고 답변을 드리겠습니다. 이 글을 보신 모든 분들의 하루가 좋은 하루이길 바랍니다.