Young Blog

라이브러리(해커와 화가 p324-325)

해커와 화가, 폴 그레이엄 지음, 임백준 옮김, 한빛미디어

간결함의 최고봉이라 할 수 있는 경우는 특정한 일을 수행하고자 할 때 다른 사람에 의해 프로그램이 미리 작성되어 있어서 호출하기만 하면 되는 때이다. 이런 사실은 프로그래밍 언어에서 점점 더 중요해지고 있는 기능에 대해 생각해 보는 계기가 된다. 그 기능이란 바로 라이브러리다. 펄이 승리를 거둘 수 있었던 이유는 문자열을 다루는 데 유용한 라이브러리를 많이 보유하고 있었기 때문이다. 특히 이런 라이브러리 함수들이 중요한 의미를 가지는 때가 있는데, 바로 데이터를 변환하거나 추출하기 위한 일회용 프로그램을 만들 때다. 많은 펄 프로그래머들이 초창기에 고작 라이브러리 함수 몇 개를 호출한 프로그램 짜는 일을 했을 것이다.

내 생각에는 향후 50년간 프로그래밍 언어 세계에서 이루어질 발전은 라이브러리 함수와 관련되어 있을 것 같다. 미래의 프로그래밍 언어는 핵심 구조만큼 신중하게 설계된 라이브러리를 가지고 있을 것이다. 프로그래밍 언어를 설계할 때 중요하게 고려해야 하는 것은 이것을 가지고 훌륭한 라이브러리를 작성할 수 있을 것인가에 대한 고민이지, 정적이거나 동적인 타입 체크 방식을 적용할것인가, 객체지향 혹은 함수적인 언어로 만들 것인가에 대한 고민이 아니다. 이런 말을 들으면 타입 체크 시스템 설계에 대해 한참을 고민한 언어 설계자들은 화들짝 놀랄지도 모른다. 훌륭한 라이브러리 작성 가능성에 대해 고민하는 것은 애플리케이션을 작성하는 것과 거의 비슷한 일처럼 보이지, 언어와는 별로 상관이 없어 보이기 때문이다. 흠, 뭐 어쩔 수 없다. 언어라는 것은 본질적으로 프로그래머를 위해 존재하는데, 프로그래머가 필요로 하는 것은 바로 라이브러리이다.

훌륭한 라이브러리를 설계하는 일은 쉽지 않다. 단순히 코드를 많이 작성하는 일과 비슷할 것이라고 여기면 곤란하다. 라이브러리의 규모가 지나치게 커진다면 그 안에서 필요한 함수를 찾느니 차라리 필요한 함수를 직접 작성하는 편이 더 나을지도 모른다. 언어를 지탱하는 핵심 문법들 처럼, 라이브러리는 중요한 연산자를 모아 놓은 소규모 집합으로 구성이 되야 한다. 그래서 프로그래머가 중요한 작업을 수행할 때 쭉 훑어보면서 어떤 일을 할 수 있을지 쉽게 예측할 수 있는 라이브러리가 되어야 한다.

읽는 데 번역이 좀 어색한 부분은 좀 더 한국어스럽고 읽기 좋게 임의로 고쳐보았다.

Comments