R 언어 소개
R 언어 소개
R 공식 매뉴얼의 첫 장에서는 R이 무엇을 위한 언어인지, 어떤 언어 계보를 잇는지, 그리고 이 매뉴얼이 어떤 독자를 염두에 두고 쓰였는지를 설명해요. 코드 한 줄짜리 문법보다는 R이라는 언어의 정체성부터 잡아주는 챕터랍니다.
출처: R 공식 매뉴얼
본문
R은 통계 계산과 그래픽을 위한 시스템이에요. 그 안에는 프로그래밍 언어, 고수준 그래픽, 다른 언어와의 인터페이스, 그리고 디버깅 기능 같은 것들이 함께 담겨 있죠. 이 매뉴얼은 바로 그 R 언어 자체를 자세히 다루고 정의하는 문서입니다.
R 언어는 1980년대에 설계된 S라는 언어의 방언이에요. 그 이후로 통계 커뮤니티에서 널리 쓰여 왔고, 주요 설계자였던 John M. Chambers는 S에 대한 공로로 1998년 ACM 소프트웨어 시스템 상을 받았습니다.
언어의 문법은 겉보기에 C와 비슷한 점이 있지만, 의미론은 FPL(functional programming language, 함수형 프로그래밍 언어) 계열에 속해요. 오히려 Lisp이나 APL과 더 가까운 성격을 갖죠. 특히 R은 컴퓨팅 온 더 랭귀지("computing on the language")를 허용하는데, 덕분에 표현식(expression)을 입력으로 받는 함수를 만들 수 있어요. 이런 기능은 통계 모델링이나 그래픽 작업에서 자주 유용하게 쓰입니다.
R을 대화형으로 사용해서도 꽤 멀리 갈 수 있어요. 커맨드 라인에서 단순한 표현식을 실행해 나가면 되죠. 어떤 사용자는 그 수준을 넘어설 필요가 전혀 없을 수도 있고, 어떤 사용자는 반복적인 작업을 체계화하려고 임시방편으로 자기만의 함수를 쓰고 싶을 수도 있어요. 나아가 새로운 기능을 담은 애드온 패키지(add-on package)를 만들 목적으로 함수를 작성하는 사람도 있을 거예요.
이 매뉴얼의 목적은 언어 그 자체(per se)를 문서화하는 거예요. 다시 말해, R이 다루는 객체(object)들과 표현식 평가(expression evaluation) 과정의 세부 사항을 다루죠. 이 부분은 R 함수를 직접 프로그래밍할 때 알아 두면 유용한 내용이에요. 그래픽처럼 특정 작업을 위한 주요 하위 시스템들은 이 매뉴얼에서 아주 간략하게만 언급하고, 별도 문서에서 따로 다루게 됩니다.
본문의 상당 부분은 S에도 그대로 적용되지만, 차이가 꽤 큰 부분도 있어요. 혼동을 피하기 위해 이 매뉴얼은 R을 설명하는 데 집중하기로 합니다.
R 언어의 설계에는 사용자를 놀라게 할 만한 세부적인 지점과 흔한 함정이 여럿 숨어 있어요. 대부분은 더 깊은 수준에서의 일관성 문제 때문에 생긴 건데, 이 매뉴얼에서 차례로 설명할 거예요. 또 꽤 복잡한 연산을 간결하게 표현할 수 있게 해 주는 유용한 지름길과 숙어(idiom)도 여러 개 있죠. 이런 것들은 기본 개념에 익숙해지면 자연스럽게 몸에 익는 경우가 많아요. 어떤 경우엔 같은 작업을 수행하는 방법이 여러 가지인데, 일부 기법은 언어 구현에 의존하고 다른 기법은 더 높은 추상화 수준에서 동작하기도 해요. 그런 경우에는 어느 쪽을 쓰는 게 좋은지 선호하는 사용법을 표시해 둘게요.
이 매뉴얼은 R에 대한 어느 정도의 친숙함을 전제로 해요. R의 입문서가 아니라 프로그래머를 위한 참조 매뉴얼인 셈이죠. 보충 정보는 다른 매뉴얼에서 찾을 수 있어요. 특히 An Introduction to R은 R 입문을 다루고, System and foreign language interfaces 항목(Writing R Extensions 문서에 실려 있어요)은 컴파일된 코드로 R을 확장하는 방법을 자세히 설명해 줍니다.
더 알아보기
- R 공식 매뉴얼 홈 — R 언어 정의 전체 문서
- An Introduction to R — R 입문서
- 다음 챕터: 2 Objects — R이 다루는 객체의 종류와 구조