컴퓨터 코드 읽기의 즐거움

컴퓨터 코드 읽기의 즐거움
It SharingPosted On Jul 23, 20244 min read

2024-07-23-ThePleasuresofReadingComputerCode_0.png

레시피를 읽는 것에는 이상한 즐거움이 있어요.

요리를 할 생각이 없더라도요. 아마 특히 요리할 계획이 없더라도 더욱 그렇지 않을까요!

2013년에 Bee Wilson 작가는 William Sitwell의 'A History of Food in 100 Recipes' 책을 리뷰하면서 이 현상을 곰곰이 생각해 보았어요. Wilson은 많은 레시피가 놀랄 만큼 장식적이었음을 언급했는데, Madhur Jaffrey의 양고기 코르마 같은 레시피들은 "장료 목록이 1 페이지 이상에 걸쳐 있어요"라며 설명했어요. 그래서, 이 레시피들은 당장 달려가서 만들 요리는 아니었어요. 사실, 아무 때도 만들 수도 없는 레시피일지도 몰라요.

그렇지만 윌슨이 주장한대로, 단지 이러한 호화로운, 바이잔틴식 레시피를 읽는 것만으로도 다른 취지가 있다: 우리의 상상력을 자극하는 것이다.

이 요리를 만들었을 때 어떨지 상상하는 것이 재미있어요. 어떨까요? 이 요리를 만드는 것이 얼마나 재미있을까요? 어떤 어려운 부분이 있을까요? 어떤 새로운 기술이 필요할까요?

이 즐거움을 경험하려면 음식을 실제로 만들 필요는 없어요. 요리책을 읽는 것은, 윌슨이 지적한 대로, 가능성의 정신적인 성을 헤매는 것과 같아요…

이미지

오늘 윌슨의 글을 생각하게 돼서, 몇 시간 동안 코드를 자세히 살펴보았더니, 윌슨이 설명한 것과 매우 유사한 기쁨을 느낄 수 있다는 것을 깨달았어요.

프로그래밍을 하지 않는 사람들은 종종 코딩을 "앉아서 소프트웨어를 날려내는 것"으로 생각하지만, 프로그래밍의 큰 즐거움 중 하나는 무엇인가를 만드는 것뿐만 아니라, 다른 사람들이 만든 것들을 감상할 수 있는데, 그것은 그들의 소스 코드를 검토함으로써 이루어져요.

오늘 오후 일어난 일은, 제가 사용하여 내 이상한 코딩 프로젝트의 많은 부분을 쓰고 호스팅하는 Glitch를 살펴볼 때 일어났어요 (안녕, "이상한 오래된 책 찾기"!). 그리고 Glitch 사람들이 자신의 Fediverse 프로젝트를 만들기 위한 샘플 코드를 게시했다는 것을 알게 되었어요. 자신만의 작은 개인 Mastodon 인스턴스를 만들고 싶나요? 그럴 때 사용할 코드도 있어요. Mastodon에서 봇을 실행하고 싶으세요? 네: 그 코드도 여기 있어요.

일부 코드는 한눈에 이해할 수 있었어요. 다른 부분들은 살펴보기 전까지 제게는 낯설었어요. ('모건' 노드 패키지가 뭔지 모르겠네요.) 일부 논리는 즉시 이해되었고, 다른 세그먼트는 밀도 높은 암시적인 시를 읽는 것처럼, 함수 안의 함수의 흐름을 차분히 추적해야 했어요.

일이죠, 위슨이 이 화려한 레시피를 바라보는 것처럼, 나는 이 페디버스 앱 중 어떤 것도 즉시 사용하고 싶은 욕망이 없었습니다. 나는 이런 걸 아무것도 만들 계획이 없었어요.

하지만 그 코드를 읽는 것만으로도 가능성이 주는 즐거움을 느겼어요. 응, 내가 직접 내 Mastodon 서버를 운영할 수 있겠지? 꽤 멋진 일이 될 거 같아요. 만들지는 않겠지만 할 수 있지.

상상 속에서 앱을 실행하는 것은 사실에서 실행하는 것만큼 만족스럽다는 것을 알게 되었죠. 아마도 심지어 더 그렇다고 해도 될 정도예요, 왜냐하면 마음속에서 실행되는 코드에는 버그가 없기 때문이거든.

코딩은 유명히 위압감을 주죠. 순수한 논리로 작은 기계를 만드는 법을 알게 되면, 그것은 작은 초능력을 가진 것처럼 느껴집니다. 그렇기에 다른 사람의 코드를 읽는 것은 더욱 더 강력한 효과를 불러일으키는데요, 왜냐면 주문서를 읽는 것과 같기 때문이죠 - 시험해볼 수 있는 새로운 엘드리치 소환마술이라고 생각하면 되요.

실제로 코드를 읽는 것은 주문서를 숙고하는 것보다 실제로 더 이상해 보일 수 있어요. 그 이유는 코드가 유언비어적이기 때문이에요: 코드는 기계가 만들어지는 과정을 설명하는 사람의 지시사항이자 기계 그 자체라고 표현할 수 있어요. 소스 코드는 두 가지 수준에서 작동하는데요 — 코드를 읽는 사람의 머릿속과 코드를 실행하는 프로세서 내부에서 모두 작동해요. 그래서 코드를 읽는 것이 코드를 실행하는 경험에 이상하게 가까운 느낌을 주는 것이죠.

다른 말로 설명하자면: "프로그램은 사람이 읽기 위해 만들어졌으며 우연히 컴퓨터가 실행하기 위한 것"이에요. (이 문구를 도널드 크누트에게 소속시킨 경우를 가장 많이 들어봤어요.)

물론, 코드를 읽는 것이 가치가 있는 더 많은 현실적인 이유들이 있어요.

프로그래머로서, 물론 배우는 방법 중 하나에요. 훌륭한 코더들이 데이터를 효율적으로 정렬하는 방법을 지켜보면 (내가 고안한 거친, 무자비한 방식과 비교했을 때), 눈을 떴어요. 코딩 스타일을 엿볼 수 있어요, 마치 문학 스타일을 발견하는 것처럼: 이 개발자는 간단한 for-loop 반복자를 사용하는 함수를 선호해요 — 무슨 일이 일어나고 있는지 명확하게 알 수 있게 하기 위해 — 그 반면에 다른 개발자는 초소형 Perl-golf 스타일의 원라이너를 만들어냅니다. 이 사람은 간결함을 위해 변수에 한 글자로 명명을 하지만, 다른 사람은 저장하는 내용을 정확하게 나타내는 믿을 만한 긴 이름을 사용해요.

하지만 학습을 떠나서 한 번 생각에만 몰입해 보세요. 자아성장도 중요하지만, 상상력을 충만하게 하는 즐거움이기도 합니다. 마음의 문을 열어 주는 방법이죠.

(이 내용이 마음에 드셨다면, “박수” 버튼을 내일이 아니라 오늘 눌러주세요. 최대 50번 클릭할 수 있어요!)

제가 Medium에는 주당 두 번 포스팅을 올리고 있습니다. 제 이메일로 각 포스트를 받아보시려면 여기를 팔로우해주세요. Medium 회원이 아니라면 여기를 가입하여 매달의 회비의 절반을 바로 제 Medium 글 지원에 도입해주시고 사이트의 다른 모든 콘텐츠에 액세스할 수 있습니다.

저는 뉴욕 타임스 매거진 기고자이자 Wired 및 Smithsonian 매거진에 칼럼니스트로 활동하고 있으며, Mother Jones에 정기 기고자로 활동하고 있습니다. "Coders: The Making of a New Tribe and the Remaking of the World"와 "Smarter Than You Think: How Technology is Changing our Minds for the Better"의 저자이기도 합니다. 트위터와 인스타그램에서는 @pomeranian99로, Mastodon에서는 @clive@saturation.social로 활동하고 있습니다.