최근 수정 시각 : 2024-04-10 15:36:53

OCaml


프로그래밍 사이트 선정 프로그래밍 언어 순위 목록
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all"
{{{#!wiki style="display: inline-block; margin: 0 0 -5px; min-width: 25%"
{{{#!folding ⠀[ IEEE Spectrum 2023 ]⠀
{{{#!wiki style="margin:-6px -1px -10px"
<rowcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 SQL
2 Java 2 Python
3 C++ 3 Java
4 C 4 JavaScript
5 JavaScript 5 C++
6 C# 6 C#
7 SQL 7 C
8 Go 8 HTML
9 TypeScript 9 Shell
10 HTML 10 SAS
}}}}}}}}}
⠀[ Stack Overflow 2023 ]⠀
⠀[ TIOBE 2024 ]⠀
||<tablewidth=100%><width=2000><-4><bgcolor=deepskyblue><tablebgcolor=#fff,#222> 2024년 2월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 Fortran
2 C 12 Delphi / Object Pascal
3 C++ 13 MATLAB
4 Java 14 Assembly language
5 C# 15 Scratch
6 JavaScript 16 Swift
7 SQL 17 Kotlin
8 Go 18 Rust
9 Visual Basic 19 COBOL
10 PHP 20 Ruby
{{{#!wiki style="margin:0 -10px -5px; min-height: 26px"
{{{#!folding [ 21위 ~ 50위 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1px -10px"
21 R 36 Transact-SQL
22 SAS 37 VBScript
23 Classic Visual Basic 38 Haskell
24 Prolog 39 TypeScript
25 Ada 40 Logo
26 Perl 41 Bash
27 (Visual) FoxPro 42 Scheme
28 Dart 43 Solidity
29 D 44 ABAP
30 F# 45 ML
31 Scala 46 X++
32 Objective-C 47 PL/SQL
33 Lua 48 GAMS
34 Julia 49 PowerShell
35 LISP 50 RPG
}}}}}}}}} ||
⠀[ PYPL 2024 ]⠀
}}} ||
프로그래밍 언어 목록 · 분류 · 문법
OCaml
파일:ocaml_logo-with-name.svg 파일:ocaml_logo-with-name-white.svg
파일:홈페이지 아이콘.svg |
파일:X Corp 아이콘(블랙).svg |
1. 개요2. 특징
2.1. 정적 타입 시스템2.2. 함수형 언어2.3. 가비지 컬렉션2.4. OPAM
3. 점유율
3.1. 학문적 위상
4. 외부 링크

[clearfix]
print_endline "Hello, World"

1. 개요

OCaml 은 프랑스의 Inria에서 ML 계열 언어인 Caml에 객체지향, 모듈 시스템 등을 추가하여 만든 함수형 프로그래밍 언어이다. 부분적으로는 명령형 기능도 지원한다.

2. 특징

2.1. 정적 타입 시스템

OCaml은 Lisp이나 Scheme, Racket, Clojure와는 다르게 정적 타입 시스템을 장착한 함수형 언어이다. 강력한 타입 추론 알고리즘을 통해 모든 타입 에러를 미연에 방지할 수 있으며, 타입을 적지 않아도 자동으로 타입을 추론해준다.

2.2. 함수형 언어

OCaml은 함수형 프로그래밍 언어이다. 함수형이 무엇인가에 대해서는 여러가지 정의가 있지만, 기본적으로 1) 함수를 데이터처럼 다룰 수 있으며 2) 기본적인 변수(variable)가 불변인 것을 뜻한다. [1]

2.3. 가비지 컬렉션

메모리 관리를 자동으로 해주는 가비지 컬렉션 기능을 제공한다. 바이트코드로 컴파일하면 OCaml 가상 머신에서 실행할 수 있다. 그 외에도 네이티브 코드 컴파일러를 지원해서 9 종류의 아키텍처에 맞는 네이티브 실행 파일을 생성할 수 있다.

2.4. OPAM

자체적인 패키지 매니저로 OPAM이라는 시스템을 제공한다. 특이하게도 Java나 여타 언어와는 다르게 언어 버전 간의 호환성은 버리고, 언어 버전 간의 컴파일러 환경을 자유롭게 바꿀 수 있는(switch) 기능을 제공한다.

3. 점유율

점유율은.. 처참하다. 깃허브 프로그래밍 언어 점유율을 보면 38위로 비슷한 계열의 언어인 스칼라나 하스켈보다도 낮은 점유율을 보여준다.하지만 OCaml을 본따 만든 MicroSoft의 F#은 이겼다

OCaml을 프로젝트의 주요 언어로 사용하는 가장 유명한 기업은 미국의 양적 거래(quantitative trading) 회사인 제인 스트리트가 가장 유명했다.

최근에는 페이스북에서 OCaml을 가져다가 ReasonML이라는 언어를 만들기도 했으며, OCaml과 Reason을 이용하여 정적 코드 분석기인 Infer를 만들기도 했다. 페이스북과 같은 거대 IT 기업에서 OCaml에 관심을 갖고 주요 프로젝트의 언어로 채택했다는 점에서 많은(?) OCaml 사용자들이 점점 널리 쓰일 거라는 기대를 품지만, 현실은...

3.1. 학문적 위상

Haskell등과 함께 힌들리-밀너 타입 시스템(Hindley-Milner Type System)을 사용하는 몇 없는 순수 함수형 언어이므로 프로그래밍 언어론을 공부하다 보면 꽤 자주 언급되는 것을 볼 수 있을 만큼 현업에서의 점유율과는 별개의 학술적 분야에서의 위상을 가진다. 자동정리증명 언어 중 하나인 Coq도 OCaml을 기반으로 한다.

포항공과대학교에서는 한때(08~10년도) 이걸 모든 학부생이 들어야 하는 학부 1학년용 프로그래밍 과목에서 가르친 전적이 있다(...) 함수형 언어이고 난이도도 어렵지는 않아 한 학기만에 4대 정렬에 이진 트리까지 진도를 뺄 수 있었다. 하지만 컴공과 외에는 학년이 올라가서 이걸 쓸 이유가 없으므로(...) 타과 교수들의 지적으로 다시 C로 회귀했다고. 17학번까지는 전공필수 과목이었으며, 이제는 하술할 강원대학교와 비슷하게 3학년 전공선택 과목인 프로그래밍언어 수업에서 사용되고 있다.

강원대학교 에서는 3학년 전공필수 과목인 '프로그래밍 언어론' 과목 내에서 현재까지(~ 19. 10. 2) Ocaml 언어를 기반으로 수업이 진행되고 있다.

고려대학교 에서는 2학년 전공선택 과목인 "프로그래밍언어" 과목 중 일부 분반에서 OCaml 언어를 기반으로 수업이 진행되고 있다.

서울대학교 에서는 3학년 전공선택 과목인 "프로그래밍언어" 과목에서 OCaml 언어를 기반으로 수업이 진행되고 있다.

충남대학교 에서는 3학년 전공선택 과목인 "프로그래밍언어개론" 과목에서 2021 1학기부터 OCaml 언어를 기반으로 수업이 진행되고 있다.

4. 외부 링크

OCaml 프로젝트를 관리 중인 Inria : https://caml.inria.fr/ocaml/
OCaml 공식 홈페이지 : https://ocaml.org
[1] 물론 부분적으로는 명령형 프로그래밍도 지원하므로 모든 변수가 불변인 것은 아니다.