[목차] == 개요 == OCaml 은 프랑스의 Inria에서 [[ML]] 계열 언어인 [[Caml]]에 객체지향, 모듈 시스템 등을 추가하여 만든 함수형 [[프로그래밍 언어]]이다. 부분적으로는 명령형 기능도 지원한다. == 특징 == === 정적 타입 시스템 === OCaml은 Lisp이나 Scheme, Racket, Clojure와는 다르게 정적 타입 시스템을 장착한 함수형 언어이다. 강력한 타입 추론 알고리즘을 통해 모든 타입 에러를 미연에 방지할 수 있으며, 타입을 적지 않아도 자동으로 타입을 추론해준다. === 함수형 언어 === OCaml은 함수형 프로그래밍 언어이다. 함수형이 무엇인가에 대해서는 여러가지 정의가 있지만, 기본적으로 1) 함수를 데이터처럼 다룰 수 있으며 2) 기본적인 변수(variable)가 불변인 것을 뜻한다. [* 물론 부분적으로는 명령형 프로그래밍도 지원하므로 모든 변수가 불변인 것은 아니다.] === [[가비지 컬렉션]] === 메모리 관리를 자동으로 해주는 [[가비지 컬렉션]] 기능을 제공한다. 바이트코드로 컴파일하면 OCaml 가상 머신에서 실행할 수 있다. 그 외에도 네이티브 코드 컴파일러를 지원해서 9 종류의 아키텍쳐에 맞는 네이티브 실행 파일을 생성할 수 있다. === OPAM === 자체적인 패키지 매니저로 [[https://opam.ocaml.org|OPAM]]이라는 시스템을 제공한다. 특이하게도 Java나 여타 언어와는 다르게 언어 버전 간의 호환성은 버리고, 언어 버전 간의 컴파일러 환경을 자유롭게 바꿀 수 있는(switch) 기능을 제공한다. == 점유율 == 점유율은.. 처참하다. [[http://githut.info|깃허브 프로그래밍 언어 점유율]]을 보면 38위로 비슷한 계열의 언어인 스칼라나 하스켈보다도 낮은 점유율을 보여준다.~~하지만 OCaml을 본따 만든 MicroSoft의 [[F\#]]은 이겼다~~ OCaml을 프로젝트의 주요 언어로 사용하는 가장 유명한 기업은 미국의 양적 거래(quantitative trading) 회사인 [[https://www.janestreet.com|제인 스트리트]]가 가장 유명했다. 최근에는 페이스북에서 OCaml을 가져다가 [[https://facebook.github.io/reason/|Reason]]이라는 언어를 만들기도 했으며, OCaml과 Reason을 이용하여 정적 코드 분석기인 [[http://fbinfer.com|Infer]]를 만들기도 했다. 페이스북과 같은 거대 IT 기업에서 OCaml에 관심을 갖고 주요 프로젝트의 언어로 채택했다는 점에서 많은(?) OCaml 사용자들이 점점 널리 쓰일 거라는 기대를 품지만, 현실은... == 기타 == [[포항공과대학교]]에서는 한때(08~10년도) 이걸 모든 학부생이 들어야 하는 학부 1학년용 프로그래밍 과목에서 가르친 전적이 있다(...) 함수형 언어이고 난이도도 어렵지는 않아 한 학기만에 4대 정렬에 이진 트리까지 진도를 뺄 수 있었다. 하지만 컴공과 외에는 학년이 올라가서 이걸 쓸 이유가 없으므로(...) 타과 교수들의 지적으로 다시 C로 회귀했다고. 이제는 하술할 강원대학교와 비슷하게 3학년 전공선택 과목인 프로그래밍언어 수업에서 사용되고 있다. [[강원대학교]] 에서는 3학년 전공필수 과목인 '프로그래밍 언어론' 과목 내에서 현재까지(~ 19. 10. 2) Ocaml 언어를 기반으로 수업이 진행되고 있다. OCaml 프로젝트를 관리 중인 Inria : [[https://caml.inria.fr/ocaml/]] OCaml 공식 홈페이지 : [[https://ocaml.org]] [[분류:프로그래밍 언어]][[분류:함수형 언어]]