์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
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์ ๊ฐ์ ธ๋ค๊ฐ Reason์ด๋ผ๋ ์ธ์ด๋ฅผ ๋ง๋ค๊ธฐ๋ ํ์ผ๋ฉฐ, OCaml๊ณผ Reason์ ์ด์ฉํ์ฌ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ์ธ Infer๋ฅผ ๋ง๋ค๊ธฐ๋ ํ๋ค. ํ์ด์ค๋ถ๊ณผ ๊ฐ์ ๊ฑฐ๋ IT ๊ธฐ์ ์์ OCaml์ ๊ด์ฌ์ ๊ฐ๊ณ ์ฃผ์ ํ๋ก์ ํธ์ ์ธ์ด๋ก ์ฑํํ๋ค๋ ์ ์์ ๋ง์(?) OCaml ์ฌ์ฉ์๋ค์ด ์ ์ ๋๋ฆฌ ์ฐ์ผ ๊ฑฐ๋ผ๋ ๊ธฐ๋๋ฅผ ํ์ง๋ง, ํ์ค์...
OCaml์ ํ๋ก์ ํธ์ ์ฃผ์ ์ธ์ด๋ก ์ฌ์ฉํ๋ ๊ฐ์ฅ ์ ๋ช ํ ๊ธฐ์ ์ ๋ฏธ๊ตญ์ ์์ ๊ฑฐ๋(quantitative trading) ํ์ฌ์ธ ์ ์ธ ์คํธ๋ฆฌํธ๊ฐ ๊ฐ์ฅ ์ ๋ช ํ๋ค.
์ต๊ทผ์๋ ํ์ด์ค๋ถ์์ OCaml์ ๊ฐ์ ธ๋ค๊ฐ Reason์ด๋ผ๋ ์ธ์ด๋ฅผ ๋ง๋ค๊ธฐ๋ ํ์ผ๋ฉฐ, OCaml๊ณผ Reason์ ์ด์ฉํ์ฌ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ์ธ Infer๋ฅผ ๋ง๋ค๊ธฐ๋ ํ๋ค. ํ์ด์ค๋ถ๊ณผ ๊ฐ์ ๊ฑฐ๋ IT ๊ธฐ์ ์์ OCaml์ ๊ด์ฌ์ ๊ฐ๊ณ ์ฃผ์ ํ๋ก์ ํธ์ ์ธ์ด๋ก ์ฑํํ๋ค๋ ์ ์์ ๋ง์(?) OCaml ์ฌ์ฉ์๋ค์ด ์ ์ ๋๋ฆฌ ์ฐ์ผ ๊ฑฐ๋ผ๋ ๊ธฐ๋๋ฅผ ํ์ง๋ง, ํ์ค์...
4. ๊ธฐํ[ํธ์ง]
ํฌํญ๊ณต๊ณผ๋ํ๊ต์์๋ ํ๋(08~10๋
๋) ์ด๊ฑธ ๋ชจ๋ ํ๋ถ์์ด ๋ค์ด์ผ ํ๋ ํ๋ถ 1ํ๋
์ฉ ํ๋ก๊ทธ๋๋ฐ ๊ณผ๋ชฉ์์ ๊ฐ๋ฅด์น ์ ์ ์ด ์๋ค(...) ํจ์ํ ์ธ์ด์ด๊ณ ๋์ด๋๋ ์ด๋ ต์ง๋ ์์ ํ ํ๊ธฐ๋ง์ 4๋ ์ ๋ ฌ์ ์ด์ง ํธ๋ฆฌ๊น์ง ์ง๋๋ฅผ ๋บ ์ ์์๋ค. ํ์ง๋ง ์ปด๊ณต๊ณผ ์ธ์๋ ํ๋
์ด ์ฌ๋ผ๊ฐ์ ์ด๊ฑธ ์ธ ์ด์ ๊ฐ ์์ผ๋ฏ๋ก(...) ํ๊ณผ ๊ต์๋ค์ ์ง์ ์ผ๋ก ๋ค์ C๋ก ํ๊ทํ๋ค๊ณ . ์ด์ ๋ ํ์ ํ ๊ฐ์๋ํ๊ต์ ๋น์ทํ๊ฒ 3ํ๋
์ ๊ณต์ ํ ๊ณผ๋ชฉ์ธ ํ๋ก๊ทธ๋๋ฐ์ธ์ด ์์
์์ ์ฌ์ฉ๋๊ณ ์๋ค.
๊ฐ์๋ํ๊ต ์์๋ 3ํ๋ ์ ๊ณตํ์ ๊ณผ๋ชฉ์ธ 'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ' ๊ณผ๋ชฉ ๋ด์์ ํ์ฌ๊น์ง(~ 19. 10. 2) Ocaml ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ด ์งํ๋๊ณ ์๋ค.
OCaml ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌ ์ค์ธ Inria : https://caml.inria.fr/ocaml/
OCaml ๊ณต์ ํํ์ด์ง : https://ocaml.org
๊ฐ์๋ํ๊ต ์์๋ 3ํ๋ ์ ๊ณตํ์ ๊ณผ๋ชฉ์ธ 'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ' ๊ณผ๋ชฉ ๋ด์์ ํ์ฌ๊น์ง(~ 19. 10. 2) Ocaml ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ด ์งํ๋๊ณ ์๋ค.
OCaml ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌ ์ค์ธ Inria : https://caml.inria.fr/ocaml/
OCaml ๊ณต์ ํํ์ด์ง : https://ocaml.org
[1] ๋ฌผ๋ก ๋ถ๋ถ์ ์ผ๋ก๋ ๋ช
๋ นํ ํ๋ก๊ทธ๋๋ฐ๋ ์ง์ํ๋ฏ๋ก ๋ชจ๋ ๋ณ์๊ฐ ๋ถ๋ณ์ธ ๊ฒ์ ์๋๋ค.