오랜 시간 Lisp(리스프) 언어는 강력한 기능에도 불구하고 특유의 괄호 중심 문법 때문에 '읽기 어렵다'는 인식을 받아왔습니다. 많은 Lisp 개발자들은 익숙해지면 문제가 없다고 말하지만, 최근에는 단순히 익숙함의 문제를 넘어 인간의 지각과 기억 방식에 기반한 인지과학적 관점에서 Lisp 문법의 가독성 문제를 분석한 글이 주목받고 있습니다. 이 분석은 괄호 배치, 시각적 그룹화, 중첩 깊이, 그리고 코드 읽는 순서가 가독성에 미치는 영향을 심층적으로 다룹니다.
이 글은 C 스타일 언어의 `함수(인자)` 형태와 Lisp의 `(함수 인자)` 형태를 비교하며, Lisp의 전위 표기법이 괄호 사이의 거리를 멀게 만들어 시각적 그룹화를 방해한다고 지적합니다. 게슈탈트 심리학의 근접성 법칙에 따르면 가까이 있는 요소들이 더 관련성 높게 지각되는데, Lisp는 함수 이름까지 괄호 안에 넣어 인자들과 같은 공백으로 구분하므로 시각적으로 덩어리를 파악하기 어렵다는 것입니다. 또한, 대응하는 괄호가 멀리 떨어져 있으면 작업 기억(working memory)에 부담을 주며, 깊은 중첩은 '정신적 스택(mental stack)'에 과부하를 줄 수 있습니다. 특히 Lisp의 관례적인 닫는 괄호 몰아쓰기는 괄호 수를 세기 어렵게 만들어 구조 파악을 더욱 힘들게 합니다. 반면, C 스타일 언어의 `f(a)(b)(c)` 같은 왼쪽 결합 방식이나 `f[a][b][c]` 같은 배열 접근은 중첩을 줄이고 대응 괄호를 가깝게 유지하여 가독성을 높입니다.
또한, Lisp의 오른쪽으로 깊게 중첩된 호출은 평가 순서와 읽는 순서가 달라 독자가 코드를 역순으로 읽거나 바깥 호출을 기억해야 하는 부담을 줍니다. 이는 코드를 의미적으로 이해하는 데 추가적인 인지 부하를 발생시킵니다. 이러한 문제점들을 바탕으로, 더 읽기 쉬운 문법 설계를 위한 네 가지 원칙이 제시되었습니다. 첫째, 관련된 토큰(구분자)을 최대한 가깝게 배치하고, 둘째, 코드의 시각적 모양으로 그룹 구조를 명확히 전달하며, 셋째, 결합법칙을 활용해 구분자 중첩을 줄이고, 넷째, 문법과 의미 체계를 설계할 때 읽는 순서와 평가 순서를 일치시키는 것입니다. 이러한 원칙들은 Lisp의 메타프로그래밍 장점은 유지하면서도 가독성을 개선할 수 있는 새로운 Lisp 계열 언어 설계의 기반이 될 수 있습니다.