# 낯선 프로그래밍 언어가 보여주는 다른 문제 해결 방식

> 2021-08-01 · Paul Graham · 큐레이션 김태우
> https://challengekim.com/insights/낯선-프로그래밍-언어가-보여주는-다른-문제-해결-방식
> 원문: https://paulgraham.com/weird.html

## 핵심 요약

- 폴 그레이엄은 프로그래밍 언어가 대체로 동등하다는 평가는 언어 자체보다 그동안 해온 프로그래밍의 종류를 반영한다고 주장한다.
- 그레이엄에 따르면 대부분의 프로그래밍은 라이브러리 함수 호출을 연결하는 작업이며, 널리 쓰이는 언어들은 이 작업을 비슷하게 수행한다.
- 그는 낯선 언어의 특이한 기능이 다른 종류의 프로그래밍을 발견하는 단서가 될 수 있다고 본다.
- Lisp 매크로는 특정 유형의 문제를 풀 언어를 먼저 만들고, 그 언어로 응용 프로그램을 작성하는 방식의 한 사례다.

## 언어가 비슷해 보이는 이유

그레이엄은 프로그래밍의 99.5%가 라이브러리 함수 호출을 이어 붙이는 작업이라고 설명한다. 널리 쓰이는 언어들은 모두 이런 작업에 적합하다. 따라서 개발자는 여러 언어에 공통으로 있는 기능만 사용하면서도 경력 전체를 보낼 수 있다. 그 경험에 비춰 보면 언어들이 사실상 동등하다고 느끼기 쉽다.

그레이엄이 주목하는 것은 나머지 0.5%다. 비중은 작지만, 그는 이 영역에 상대적으로 흥미로운 프로그래밍이 많이 있다고 본다. 낯선 언어가 왜 낯설게 느껴지는지 살펴보면 그 영역을 이해할 단서를 얻을 수 있다는 주장이다.

## 낯선 기능이 가리키는 것

그레이엄에 따르면 잘 만들어진 낯선 언어의 특이함에는 대개 이유가 있다. 흔한 라이브러리 호출 연결 방식만으로는 설명하기 어려운 프로그래밍 형태가 그 기능 뒤에 있을 수 있다. 따라서 익숙한 언어와 무엇이 다른지 묻는 일은 그 언어가 어떤 문제 해결 방식을 가능하게 하는지 살피는 일이기도 하다.

## Lisp 매크로의 사례

그레이엄은 **Lisp 매크로**를 구체적인 사례로 든다. 매크로는 프로그램을 다루는 기법이며, 많은 Lisp 개발자에게도 낯설게 느껴진다고 설명한다. 그는 이를 다른 언어에 제대로 구현하려면 그 언어를 Lisp의 한 변형처럼 만들어야 할 만큼 언어의 성격과 깊이 연결돼 있다고 본다.

매크로를 활용하는 방식 중 하나는 특정 유형의 문제를 위한 언어를 먼저 만든 다음, 그 안에서 개별 응용 프로그램을 작성하는 것이다. 그레이엄은 이것이 단순히 라이브러리 호출을 연결하는 작업을 넘어서는 사례라고 설명한다. 동시에 매크로로 할 수 있는 일 전체가 아니라, 프로그램을 다루는 아직 충분히 탐구되지 않은 기법 가운데 한 부분일 뿐이라고 덧붙인다.

## 차이에 집중해 배우기

그레이엄은 프로그래밍으로 무엇을 할 수 있는지에 대한 생각을 넓히려면, 많은 개발자가 낯설다고 여기면서도 사용자들의 역량이 높은 언어를 골라 배우라고 제안한다. 핵심은 그 언어와 널리 쓰이는 언어들의 공통 영역 사이의 차이에 집중하는 것이다. 다른 언어로는 표현하기 몹시 불편한 것을 그 언어에서는 어떻게 표현하는지 살펴보라는 뜻이다.

그레이엄의 결론은 표현 방식과 사고방식의 관계에 있다. 이전에는 표현할 수 없었던 것을 말하는 방법을 배우는 과정에서, 이전에는 생각하지 못했던 방식으로 문제를 바라보게 될 가능성이 있다는 것이다.

---

원문을 바탕으로 AI 가 한국어로 요약·재구성한 글입니다. 인용·수치는 원문 링크에서 확인해 주세요. [원문 링크](https://paulgraham.com/weird.html)
