brunch

You can make anything
by writing

C.S.Lewis

by 연현중 Jul 28. 2023

intro

컴파일러 만들기를 결심하기까지

 왜 어려워 할까?


  블록 코딩(엔트리 등)은 중학교와 초등학교 때 누구나 재미있게 배운다. 그런데 고등학교 와서 프로그래밍이나 정보 수업을 들으면, 절반은 자고 이해하지도 못한 채로 교과서에 있는 코드를 따라 치는 정도에 그친다. 대부분의 친구들이 영어로 되어 있는 프로그래밍 언어에 애초부터 거부감을 느끼고 접근하지 않으려 한다. 나는 왜 이런 일이 벌어지는지 궁금했다. 


  그래서 우선 프로그래밍 언어에 대해 공부를 해보기로 마음먹었다. 공부를 하다 보면 블록 코딩과 텍스트 코딩 간의 차이점을 분명하게 알 수 있을 것이고, 이를 통해 왜 영어로 되어 있는 텍스트 코딩 언어에 그토록 거부감을 느끼고 멀리하는지 추론할 수 있을 거라고 생각했다.


  나는 우선 언어학적 관점에서 접근해야겠다고 생각했다. 프로그래밍 언어는 기본적으로 컴퓨터와 사람이 소통하기 위해서 만들어진 언어이다. 그래서, 사람이 프로그래밍 언어를 이해하는 과정을 알기 위해서는 언어학의 관점에서 바라보아야 한다고 생각했다.


  언어학적 관점에서 바라보니 블록 코딩 언어와 텍스트 코딩 언어의 모습은 확연하게 달랐다. 블록 코딩 언어는 언어의 구조를 시각적으로 추상화해서 보여주는 반면에, 텍스트 코딩 언어는 문자를 읽고 어떤 의미인지 해석하는 과정이 필요했다. 당연히, 후자가 직관적으로 이해하기에는 어려울 수 밖에 없었다.



내가 프로그래밍 언어를 만들게 된 이유


  난 사람들이 모두 프로그래밍의 재미를 알아야 한다고 생각한다. 프로그래밍은 내가 원하는 것은 뭐든지 만들 수 있는 강력한 도구이자, 몇가지의 규칙만으로 세상의 모든 것들을 나타낼 수 있는 마법의 도구이다. 내 생각을 컴퓨터에게 입력하고, 그 생각을 컴퓨터가 완벽하게 알아듣고 실행했을 때의 기쁨은 이루 말할 수 없다.


  그런데, 영어라는 언어적 장벽과 텍스트 코딩 언어를 처음 배울 때 주는 난해함에 막혀 프로그래밍을 포기하는 사람을 많이 보게 되었다. 그러다 보니 블록 코딩 언어와 텍스트 코딩 언어 사이의 징검다리 역할을 하는, 난해하지는 않지만 직접 써가면서 프로그램을 만들 수 있는 언어가 있으면 어떨까 생각했다.


  그래서 많은 연구 논문과 서적을 찾아봤는데, 아직까지 상용화되고 있는 언어는 존재하지 않았다. 다만 그런 언어가 지녀야 할 몇가지 조건들을 언급한 부분들은 많았는데, 그래서 내가 직접 그 조건들을 충족하는 한글 프로그래밍 언어를 만들어보기로 했다.



프로그래밍 언어를 만들기까지


  그러기 위해서는 우선 내가 개발한 언어를 해석해줄 번역기를 만들어야 했다. 이 번역기는 전문 용어로 컴파일러라고 하며, 보통 프로그래밍 언어를 개발한다는 말은 컴파일러를 개발한다는 것으로 여겨진다. 그래서 컴파일러 만드는 법을 찾아보는데, 우연히도 친구가 전자책을 하나 공유해주었다. Writing an Interpreter in Go라는 책이었다.


  원서로 된 그 책을 열심히 해석하면서 GoLang으로 컴파일러를 작성해봤는데, 한글을 적용하기 위해서는 한글 자연어 처리 기능이 필요했다. 이 기능은 python에 많이 있는데, 이 두 언어를 통합하여 제작하기가 생각보다 쉽지 않았다. 그래서, GoLang으로 클론코딩했던 컴파일러를 python으로 바꾸기로 마음먹었다.


  GoLang으로 자연어 처리 모델을 만들거나, python으로 컴파일러를 만드는 것 중에 후자가 그나마 더 쉬울 것 같다고 생각했다. 둘다 막대한 시간을 들여야 하는 건 마찬가지지만. 클론코딩이 아니라 내가 직접 구조를 이해하고 작성해야 하기 때문에 한국어 번역본이 필요했다. 그렇게 한국어 번역본을 빌린 뒤, 직접 프로그래밍 언어를 만드는 작업을 본격적으로 시작했다.



고3의 컴파일러 제작 도전기


  이 메거진엔 내가 컴파일러에 대해 공부하고, 직접 교육용 한글 프로그래밍 언어를 만드는 과정을 담을 생각이다. 그 과정에서 겪는 시행착오와 공부한 내용들도 포함하기 때문에, 프로그래밍을 모르는 사람들에게는 다소 어렵게 느껴질 수 있다. 그래서 전문용어나 이해하기 어려운 표현 같은 경우에는 최대한 일상어로 셜명할 생각이다.



고등학교 3학년의 컴파일러 제작 도전기, 시작.




                    

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari