-
차근차근 무언가를 만들어 가는 것을 보거나 이해하는데 요즘 큰 만족감을 느낀다.
무언가를 만들려면 계획을 세워야 하고, 여러 시간 혹은 며칠, 몇 달, 혹은 몇 년을 계획에 따라서
기초를 세우고, 기초 위에 단위별로 뭔가를 덧붙이고 추가하고, 잘못되면 수정해야 한다.
목적에 따라서 정도는 다르나 인내심, 기획력, 손재주 등 여러 가지 능력이 필요하고 모든 것들이
서로 정확히 맞아 들어가서 결국 뭔가를 만들어가는 걸 보고 있는 것만 해도 만족스럽다.
유튜브는 비디오 매체이기 때문에 보여줄 수 있는 것만 기록이 가능하다는 제한이 있는데
최근 읽은 온라인 책 하나에서 유사한 만족감을 얻었다.
https://craftinginterpreters.com/
Crafting Interpreters
Crafting Interpreters contains everything you need to implement a full-featured, efficient scripting language. You’ll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your
craftinginterpreters.com
저자는 새로 프로그래밍 언어를 정의하고 그 언어를 위한 interperter를 책 하나를 통해 java버전과 C 버전을 구현한다.
기본 개념 설정부터 구현에 필요한 각 블록들의 전체 구조에서 의미를 설명하고, 하나씩 코드 레벨까지 구현한다.
나는 독자로서 왜 이렇게 구현하는지 이해하고 전체 그림을 저자와 같이 볼 수 있게 된다.프로그래머로 꽤 오래 밥벌이를 해왔지만 이렇게 처음부터 끝까지 전체 과정을 자세히 설명해주고 보여주는 경우는
한 번도 본 적이 없다. 간접적으로 무척이나 즐거운 경험이었다.
언어 설계나 구현이 무척이나 어렵고 힘든 일이라 생각했는데 문제를 잘게 쪼개서 하나씩 풀어나가는 걸 보고있는 것만으로도 많은 걸 배울 수 있었던 것도 좋았었다.
사실 나는 이런식의 큰 그림을 그리고 조금씩 조망을 좁히면서 더 세부사항을 보는 방법으로 리눅스 커널에 대해 설명한
책을 여러해 부터 찾고 있었는데, 대부분이 너무 디테일한 부분을 보다가 전체 그림을 읽는데 실패하고 헤메는 듯한 인상을
받는 책밖에 없었다. 저자의 다른 책 (https://gameprogrammingpatterns.com/ )도 동일하게 내겐 무척 이해하기
쉽고 도움이 되었는데, 저자는 이런 부분에 나하고 어느정도 코드가 맞는게 아닐까 한다.내가 이런 간접적인 경험에서 즐거움을 느낀다는 것이 결국 나는 이런 만드는 일에 기쁨을 느끼는 사람인듯하다.
나이 50이 다 되어 앞으로 내 개발자로서 커리어가 얼마 남지 않은 듯하나. 스스로 만들어 내는 이런 경험을
계속 오래 동안 할 수 있기를 소망해 본다.반응형