클린 (프로그래밍 언어)

클린(Clean)은 범용 순수 함수형 프로그래밍 언어이다. 언어의 활동적인 개발 역사 대부분에서 컨커런트 클린(Concurrent Clean)이라는 이름이 사용되었으나 어느 지점에서 이 이름의 사용은 중단되었다. 클린은 1987년 Nijmegen의 Radboud University의 연구원 단체에 의해 개발되었다.

클린
Clean
패러다임함수형
설계자네이메헌 라드바우드 대학교의 소프트웨어 기술 연구 그룹
발표일1987년(37년 전)(1987)
최근 버전3.0
최근 버전 출시일2018년 10월 19일(5년 전)(2018-10-19)
자료형 체계스트롱, 스태틱, 다이내믹
운영 체제크로스 플랫폼
라이선스Simplified BSD[1]
파일 확장자.icl, .dcl, .abc
웹사이트clean.cs.ru.nl
영향을 받은 언어
Lean, 미란다, 하스켈
영향을 준 언어
하스켈, Idris[2]

기능 편집

클린이라는 언어는 1987년에 처음 등장했으며 지금도 계속 개발되고 있다.[3] 하스켈과 수많은 속성을 공유하고 있다: 참조 투명성, 리스트 캄프리헨션, 가드(guard), 쓰레기 수집, 고차 함수, 커링, 느긋한 계산법.

윈도우에서는 클린 배포판에 통합 개발 환경(IDE)이 포함되어 있다.

예시 편집

Hello world:

 module hello
 Start :: {#Char}
 Start = "Hello, world!"

계승:

  module factorial
  import StdEnv
  fac 0 = 1
  fac n = n * fac (n-1)

  // find the factorial of 10
  Start = fac 10
  module factorial2
  import StdEnv
  fac 0 = 1
  fac n = prod [1..n] // The product of the numbers 1 to n

  // find the factorial of 6
  Start = fac 6

피보나치 수:

  module fibonacci
  fib 0 = 0
  fib 1 = 1
  fib n = fib (n - 2) + fib (n - 1)
  Start = fib 7

Infix 연산자:

  (^) infixr 8 :: Int Int -> Int
  (^) x 0 = 1
  (^) x n = x * x ^ (n-1)

컴파일 편집

  1. 소스 파일(.icl)과 정의 파일(.dcl)이 클린의 기초적인 일종인 코어 클린(Core Clean)으로 변환된다.
  2. 코어 클린은 C와 클린으로 구현된 클린의 플랫폼 독립적 바이트코드(.abc)로 변환된다.
  3. 바이트코드는 C를 사용하여 오브젝트 코드(.o)로 변환된다.
  4. 오브젝트 코드는 모듈과 런타임 시스템에서 다른 파일들과 링크되며 클린의 일반적인 실행 파일로 변환된다.

플랫폼 편집

클린은 마이크로소프트 윈도우, 매킨토시, 솔라리스, 리눅스에서 사용할 수 있다.

하스켈과의 비교 편집

속도 편집

2008년 벤치마크에 따르면 클린은 대부분의 경우 하스켈보다 더 빠르다:[4]

5개 컴파일러의 속도 비교 (단위: 초)
언어 Pri Sym Inter Fib Match Ham Twi Qns Kns Parse Plog Qsort Isort Msort
SAPL Int 6.1 17.6 7.8 7.3 8.5 15.7 7.9 6.5 47.1 4.4 4.0 16.4 9.4 4.4
SAPL Bas 4.3 13.2 6.0 6.5 5.9 9.8 5.6 5.1 38.3 3.8 2.6 10.1 6.7 2.6
GHC 2.0 1.7 8.2 4.0 4.1 8.4 6.6 3.7 17.7 2.8 0.7 4.4 2.3 3.2
GHC -O 0.9 1.5 1.8 0.2 1.0 4.0 0.1 0.4 5.7 1.9 0.4 3.2 1.9 1.0
Clean 0.9 0.8 0.8 0.2 1.4 2.4 2.4 0.4 3.0 4.5 0.4 1.6 1.0 0.6

커뮤니티 편집

  • IRC 채널: #cleanlang on freenode

각주 편집

  1. “Download Clean”. 《Clean》. 2019년 7월 23일에 확인함. 
  2. "Idris - Uniqueness Types". 2018년 11월 20일에 확인함. 
  3. “FAQ - Clean”. 
  4. Jansen, Jan Martin; Koopman, Pieter; Plasmeijer, Rinus (2008). “From Interpretation to Compilation” (PDF). 2016년 5월 21일에 확인함. [깨진 링크(과거 내용 찾기)]

외부 링크 편집