나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-10-01 17:16:09

OCaml


[[프로그래밍 언어|'''프로그래밍 언어
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 목록 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=royalblue><colcolor=#fff> ※ 나무위키에 등재된 프로그래밍 언어 목록
AActionScript · AdaT · AgdaTP · ALGOLT · ApexT · APL · awk · AssemblyT
BBASIC
C파일:C언어 로고.svg CT · 파일:C C#T · 파일:C++ 로고.svg C++T · CarbonT · 파일:clojure_logo.png ClojureS · COBOLT · CoffeeScript · Common LispS · CrystalT
D파일:external/upload.wikimedia.org/D_programming_language_logo.png DT · 파일:Dart 심볼.svg DartT
EElixir · 파일:Elm_logo.svg.png elmT · Erlang
F파일:fsharp-logo.png F#T · Factor · 파일:fennel-logo.svg FennelS · 파일:forth.png Forth · FortranT
GGNU Octave · 파일:Go 로고.svg GoT · Groovy
H파일:Haskell 로고 심볼.svg HaskellT · HolyCT · Haxe
I
J파일:Java 로고.svg JavaT · 파일:JavaScript 로고.svg JavaScript · 파일:julia-dots.svg Julia
K파일:Kotlin 심볼.svg KotlinT
LLeanTP · 파일:LISP_logo.svg LISPS · 파일:Lua 로고.svg Lua
MMATLAB · MaxV · MojoT · Moonlight
N파일:Nim 왕관 로고.svg NimT · 파일:Nix 로고.svg Nix
OOberonT · Objective-CT · 파일:ocaml.svg OCamlT
PPascalT · Perl · 파일:PHP 로고.svg PHP · Processing · Prolog · 파일:Python 심볼.svg Python
QQ#T · QML
R파일:R 로고.svg R · 파일:racket-logo.svg RacketS · Raku · ReasonMLT · 파일:rocq.png RocqTP · 파일:Ruby 로고.svg Ruby · 파일:Rust 로고.svg파일:Rust 로고 화이트.svg RustT
SSAS · 파일:Scala 로고.png ScalaT · SchemeS · 파일:스크래치(교육 플랫폼) 로고.svg ScratchV · sed · Shell Script · Smalltalk · SQL · 파일:Swift 심볼 배경.svg SwiftT
T파일:Typescript_logo_2020.svg TypeScriptT
UUdon
VVisual Basic · Visual Basic .NET · Visual Basic for Applications · vvvvV
WWave
XXSharp
Y
ZZenScript · 파일:Zig 로고마크.svg ZigT
한글누리 · V · 씨앗 · 약속 · 파일:엔트리 아이콘.svg 엔트리V · 창조
T: 정적 타입 프로그래밍 언어 · P: 증명 보조 언어 · S: LISP 방언 및 S-표현식 기반 언어 · V: 시각적 프로그래밍 언어 }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 순위 ]
{{{#!wiki style="margin: -5px -1px -10px"
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ IEEE Spectrum 2025 ]
{{{#!wiki style="margin: -5px -1px"
<tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 Python
2 Java 2 SQL
3 C++ 3 Java
4 SQL 4 JavaScript
5 C# 5 TypeScript
6 JavaScript 6 C#
7 TypeScript 7 C++
8 C 8 HTML
9 Shell 9 Go
10 Go 10 Shell }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ Stack Overflow 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#ffa500><colcolor=#fff> 2025년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어
1 JavaScript <colbgcolor=#ffa500><colcolor=#fff> 14 Rust
2 HTML & CSS 15 Kotlin
3 SQL 16 Lua
4 Python 17 어셈블리어
5 Bash/Shell 18 Ruby
6 TypeScript 19 Dart
7 Java 20 Swift
8 C# 21 R
9 C++ 22 Groovy
10 PowerShell 23 Visual Basic
11 C 24 VBA
12 PHP 25 MATLAB
13 Go }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ TIOBE 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#2777c2><colcolor=#fff> 2025년 10월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=#2777c2><colcolor=#fff> 11 Fortran
2 C 12 Perl
3 C++ 13 R
4 Java 14 PHP
5 C# 15 Assembly language
6 JavaScript 16 Rust
7 Visual Basic 17 MATLAB
8 Go 18 Scratch
9 Delphi / Object Pascal 19 Ada
10 SQL 20 Kotlin }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ PYPL 2025 ]
{{{#!wiki style="margin: -5px -1px -10px"
<colbgcolor=green><colcolor=#fff> 2025년 11월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=green><colcolor=#fff> 11 Ada
2 Java 12 TypeScript
3 C++ 13 MATLAB
4 Objective-C 14 Kotlin
5 R 15 PowerShell
6 JavaScript 16 Go
7 C# 17 Dart
8 Swift 18 Ruby
9 PHP 19 Lua
10 Rust 20 VBA }}}}}}}}}}}} }}}}}}}}}}}}
실행 방식 · 분류 · 언어 목록(분류:프로그래밍 언어 문법) · 언어별 예제 · 틀:프로그래밍 언어 문법 · 틀:난해한 프로그래밍 언어
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. 점유율4. 학문적 위상5. 대학교에서6. 예제7. 외부 링크


print_endline "Hello, World"

1. 개요

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

2. 특징

2.1. 정적 타입 시스템

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

2.2. 함수형 언어

OCaml은 함수형 프로그래밍 언어이다. 함수형이 무엇인가에 대해서는 여러 가지 정의가 있지만, 기본적으로 아래와 같은 것을 말한다.

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 사용자들이 점점 널리 쓰일 거라는 기대를 품지만 현실은...

Rust는 개발 초기에 OCaml로 컴파일러가 제작되었다. 이후 언어가 발전함에 따라 컴파일러는 Rust 자체로 재작성되었다.

4. 학문적 위상

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

5. 대학교에서

6. 예제

아래 함수 square는 인자 x를 받아서 결과값으로 x * x를 반환하는 함수를 정의한 것이다.
let square x = x * x

7. 외부 링크