컴퓨터에서 코드란 무엇?

Source code



  • 캐나다 한국일보 (public@koreatimes.net) --
  • 10 Jun 2019

소프트웨어 만들 때 쓰는 설계도 예:악보는 코드, 이에 따라 부르는 컴퓨터 노래는 프로그램


제목 없음.png

컴퓨터를 작동시키려면 컴퓨터라는 하드웨어 뿐 아니라 이를 작동시켜 뭔가 데이터를 내놓게 하는 소프트웨어, 프로그램이 필요하다. 그러므로 소스 코드, 또는 코드는 소프트웨어(프로그램)를 만들 때 쓰는 설계도를 말한다. 추상적이 아니라 컴퓨터에 입력만 하면 진짜로 프로그램이 완성되는 세밀하고 구체적으로 짜여진 설계도를 의미한다.

명칭 소스 코드 중 “소스”(source, 근원)가 이를 의미하는 것으로 프로그램의 근원이란 뜻이다. 보통 이용하는 프로그램들은 이 소스 코드를 컴파일(compile: 집대성한 것)한 것이다. 건축물의 설계도나 전자기계의 회로도가 주로 기호로 이루어져 있듯, 컴퓨터 프로그램의 설계도인 소스 코드는 프로그래밍 언어로 작성되어 있다. 

따라서 그 언어의 문법만 알면 사람도 소스 코드를 읽고 그 뜻을 이해할 수 있다. 실제로 소스 코드를 보면 영문자와 숫자, 몇 가지 특수문자 등으로 쓰여져 있고, “set”, “value”, “push” 등 영어 단어 비슷한 것도 종종 보인다. 

컴퓨터 프로그램은 오로지 정보로만 이루어져 있기 때문에, 설계도만 있어도 실물을 만들 수 있다. 악보를 읽을 줄 아는 사람에게 노래를 시키려면 악보만 있으면 되는 것처럼. 소스 코드는 악보, 프로그램은 컴퓨터가 부르는 노래라고 생각해도 좋다. 

소스 코드에는 컴퓨터에게 내리는 명령 외에도 프로그래머가 읽고 참조할 수 있는 안내문도 포함되어 있다. 이런 것은 대개 코드의 기능을 설명하는 주석이며, 개발 중인 프로그램일 경우 다른 작업자들에게 추가/삭제/변경된 코드의 변경 의도에 대해 설명하는 메모가 포함되어 있다.

 

또한 오픈 소스 소프트웨어나 기업이 제작한 상용 프로그램은 대개 여러 프로그래머들이 참여하는 대규모 프로젝트기 때문에, 사람이 읽고 의미를 알기 쉽도록 작성해야 한다. 이와는 반대로 업계 표준에서 벗어나고 논리적이지 못하며 복잡하게 한 소스 코드는 스파게티라 불린다.  

그런데, 사람이 읽을 수 있는 형태의 설계도(소스 코드)는 컴퓨터에게는 너무나 읽기 힘든 고차원적이다. 때문에 컴퓨터가 읽을 수 있도록 아주 원초적인 레벨의 형태로 바꿔줘야 한다. 이렇게 바꿔주는 과정을 컴파일링/인터프리팅interpreting이라 하며 이를 해 주는 컴퓨터 프로그램을 컴파일러/인터프리터라 한다.

결과물은 컴퓨터가 읽을 수 있는 기계어로 쓰였다. 이 결과물은 이진법 수자로 쓰여 있다고 하여 “바이너리(이진 수, binary)”라고도 하고 컴퓨터에서 실행이 된다(컴퓨터를 작동시킨다)고 하여 “실행파일(이그제큐터블, executable)”이라고도 하는데, 이게 우리가 일반적으로 말하는 컴퓨터 프로그램(소프트웨어)이다. 바이너리는 이진 수로 쓰여져 있기 때문에 사람은 읽지 못하며, 억지로 뜯어봐도 1과 0만 어지럽게 나열되어 있을 뿐이다. 

상용 프로그램이 아닌 공개 “오픈 소스” 프로그램 중에는, 실행파일(바이너리)뿐만 아니라 소스 코드까지 함께 다운로드할 수 있게 해 놓은 경우도 많다. 코드를 공개했다고 하더라도 윈도우용 디바이스 드라이버를 리눅스에서 컴파일해 쓸 순 없다.

공개 프로그램 중에는 다른 사용자/개발자들이 소스 코드를 들여다보고 연구 개발을 하는 것을 권장하기 위한 경우도 많다. 함께 힘을 합쳐 더 좋은 프로그램을 만들자는 초청 같은 것이다.

상용 프로그램 중에 일부, 혹은 전부를 오픈 소스로 공개하는 경우도 있으나, 대부분은 오픈 소스가 아니다. 오픈은 커녕 영업비밀로 철저히 감춰지는 경우가 대부분이다. 소스 코드 없이 바이너리 파일만으로 프로그램의 설계를 유추해내는 것은 귀찮고 까다로운 일이다.  

오픈 소스는 소스를 공개한 것

소스를 다시 변환 -‘컴파일링’컴퓨터가 읽어


 

Video AD

댓글을 달아주세요