클린은 네덜란드 라드보드 대학교(현재 라드보드 대학교)에서 1990년대 초반에 개발된 순수 함수형 프로그래밍 언어이다. 원래 이름은 영어 “Clean”이며, 한국어 문맥에서는 종종 “클린”이라고 표기된다.
개요
클린은 정적 타입 시스템과 지연 평가(lazy evaluation) 를 기본으로 하며, 유일성 타입(uniqueness typing) 을 도입해 부수 효과를 제한하는 동시에 효율적인 메모리 관리와 인-플레이스 업데이트를 가능하게 한다. 이러한 특성은 함수형 언어임에도 불구하고 높은 실행 성능을 제공한다는 평가를 받는다.
역사
- 1990년: 루트(Radboud University)의 얀 레인테르(Yan Deijle)와 제레옴 반데르 지프(Jeroen van der Zijp)가 초기 버전을 발표하였다.
- 1995년: 클린 컴파일러가 C 코드로 변환하는 백엔드를 구현하면서, 다양한 운영 체제(Unix, Windows, macOS)에서 사용이 가능해졌다.
- 2000년대 초반: 클린 표준 라이브러리와 그래픽 라이브러리(예: OpenGL 바인딩)가 확장되어 그래픽 애플리케이션 및 시스템 프로그래밍에 활용되었다.
- 현재: 활발한 개발이 지속되고 있으며, 공식 웹사이트와 커뮤니티를 통해 최신 버전과 문서가 제공되고 있다.
주요 특징
| 특징 | 설명 |
|---|---|
| 정적 타입 | 컴파일 시에 타입 검사가 수행되어 런타임 오류를 최소화한다. |
| 지연 평가 | 필요할 때만 표현식을 평가하여 메모리 사용을 최적화한다. |
| 유일성 타입 | 데이터 구조의 독점 소유권을 명시함으로써 복사 없이 안전한 원자리(in‑place) 연산을 지원한다. |
| GC | 자동 가비지 컬렉션을 제공한다. |
| 컴파일러 | 기본적으로 C 코드로 변환하는 백엔드를 사용하며, 이를 통해 다양한 플랫폼에 이식성이 높다. |
| 표준 라이브러리 | 리스트, 트리, 맵 등 풍부한 데이터 구조와 입출력, 파일 시스템, 네트워크 등을 지원한다. |
구현 및 활용
클린 컴파일러는 오픈소스 프로젝트로, 주요 소스 코드는 src/ 디렉터리 아래에 C와 어셈블리 파일 형태로 제공된다. 언어 자체는 학술 연구, 교육용 예제, 함수형 프로그래밍 연구 등에 널리 활용되며, 일부 프로젝트에서는 실시간 시스템이나 임베디드 시스템에서도 사용 사례가 보고되었다.
관련 언어와의 비교
- Haskell: 둘 다 지연 평가와 순수 함수를 지향하지만, 클린은 유일성 타입을 통해 메모리 관리와 성능면에서 차별화된다.
- OCaml: OCaml은 엄격 평가(strict evaluation)를 기본으로 하지만, 클린은 지연 평가와 유일성 타입을 결합한 독특한 설계를 가진다.
참고 문헌
- J. van der Zijp, “Clean: A Functional Programming Language and its Implementation,” Proceedings of the 1995 International Conference on Functional Programming, 1995.
- 라드보드 대학교 Clean 프로젝트 웹사이트, https://clean.cs.ru.nl (접속일: 2026‑05‑26)
이 문서는 현재까지 확인된 자료에 기반하여 작성되었으며, 최신 버전이나 추가적인 세부 사항은 공식 웹사이트 및 최신 논문을 참고한다.