모듈 만들기: 개요

모듈 만들기: 개요 (Making modules: an introduction)

모듈을 이야기할 때 자주 서로 뒤섞이는 네 가지 개념이 있어요. 이 문서는 그 네 가지가 정확히 무엇이고, 서로 어떻게 다른지를 먼저 잡아준 뒤, 실제로 모듈을 만들고 사용하는 기본 흐름을 짚어볼게요.

출처: Raku Documentation — Making modules: an introduction

본문

네 가지를 구분해볼게요 (Here we need to distinguish between four things)

모듈 관련 용어는 처음에 꽤 혼란스러워요. 정확히는 다음 네 가지를 먼저 구분해야 해요:

  • Distribution(배포판)
  • package(패키지)
  • module(모듈)
  • class/grammar

Distribution

Distribution은 함께 배포되는 서로 관련된 소스 파일들의 묶음이에요. 보통 몇몇 모듈, 몇몇 테스트, 그리고 어쩌면 다른 리소스까지 포함하죠.

자세한 설명은 Distributions: An introduction과 뒤따르는 문서들을 참고하세요.

package

패키지는 이름 붙은 프로그램 요소들의 중첩된 네임스페이스(namespace)예요. 모듈, 클래스, 그라마(grammar)는 모두 패키지의 한 종류예요.

자세한 설명은 Packages를 참고하세요.

module

모듈은 보통 하나 이상의 소스 파일로, 클래스, 롤(role), 그라마, 서브루틴, 변수 같은 Raku 요소들을 노출해요. 모듈은 주로 Raku 코드를 다른 Raku 프로그램에서 쓸 수 있는 라이브러리로 배포할 때 사용해요.

자세한 설명은 Using Modules: An Introduction에 연결된 페이지들을 참고하세요.

class

클래스는 메서드와 속성(attribute)을 편의를 위해 함께 묶어놓은 집합이에요. 패키지이기도 하므로, 역시 중첩된 네임스페이스예요.

더 자세히 보려면 아래를 참고하세요:

grammar

그라마는 텍스트 파싱을 목적으로 만들어진 특별한 종류의 클래스예요. 규칙(rule), 토큰, 정규식을 요소로 가지는데, 그라마는 어쨌든 클래스이므로 이들은 실제로는 메서드예요.

자세한 설명은 Grammars를 참고하세요.

모듈 만들고 사용하기 (Creating and using modules)

모듈은 보통 하나의 소스 파일 또는 소스 파일들의 묶음으로, Raku 요소들을 노출해요. 모듈은 전형적으로 패키지에요 — 클래스, , 그라마, 서브루틴, 그리고 때로는 변수까지 포함하죠. 여기서 주의할 점이 하나 있어요. Raku에서 _module_은 module 키워드로 선언하는 패키지 종류 하나를 가리키기도 해요 (Module Packages와 아래 예시 참고). 하지만 이 문서에서는 대부분 "모듈"이라는 말을 네임스페이스 안의 소스 파일 묶음이라는 의미로 쓰고 있어요.

모듈에 관한 문서들 (Documentation about Modules)

모듈을 배포하고 싶나요? 그렇다면 아래를 참고하세요.