ML (프로그래밍 언어)
범용 프로그래밍 언어의 일종 / From Wikipedia, the free encyclopedia
ML은 범용 프로그래밍 언어의 일종이다. 프로그래밍 언어 분야의 핵심 연구 성과들을 잘 반영하면서도 실용적인 언어로 알려져 있다. 특히, 안전한 타입 시스템을 갖추고 있어 프로그램을 실행하는 중에 나올 수 있는 타입 에러를 실행하기 전에 미리 모두 찾아준다. 힌들리-밀너(Hindley-Milner) 타입 추론 시스템을 구현하여 자바와 같은 길고 불편한 자료형(타입) 표기 없이도 변수들의 자료형을 추론할 수 있다.
간략 정보 패러다임, 설계자 ...
패러다임 | 다중 패러다임: 함수형, 제네릭, 명령형 |
---|---|
설계자 | 로빈 밀너 등 (에든버러 대학교) |
발표일 | 1973년(51년 전)(1973) |
자료형 체계 | 형 추론, 정적, 스트롱 |
방언 | |
OCaml, 표준 ML, F# | |
영향을 받은 언어 | |
ISWIM | |
영향을 준 언어 | |
클로저 (프로그래밍 언어), Coq, 사이클론, C, Elm, F#, F*, 하스켈, Idris, 코틀린, 미란다, Nemerle, OCaml, Opa, Erlang, Rust, Scala, 표준 ML |
닫기
ML은 하스켈과 같은 순수한 함수형 언어와 같이 함수가 자유롭게 사용될 수 있으면서도, 메모리 상태를 변화시키는 함수를 허용하는 함수형 프로그래밍 언어의 모습도 갖추고 있다. 이 때문에 함수형 언어이면서 순수하지 않은 함수형 언어로 분류한다.
그밖에 ML에는 이런 특징이 있다.
- 메모리 재활용(garbage collection)을 통해서 자동으로 메모리를 관리한다.
- 함수의 다형성(polymorphic functions)을 지원하여 타입과 상관 없이 실행할 수 있는 함수를 정의할 수 있다.
- 대수적 자료형(algebraic data type)을 지원하여 상위에서 자료구조를 표현할 수 있다.
- 값들의 패턴 매칭을 통해 간편하게 조건문을 만들 수 있다.
- 간단하고 강력한 예외 시스템으로 프로그램의 실행흐름을 편리하게 기획할 수 있다.
ML 프로그래밍 시스템은 다양한 종류가 있다. SML(Standard ML)과 Caml이 가장 널리 알려진 것이며, F# 등 다른 언어들도 존재한다. 한국에서 개발된 ML 프로그래밍 시스템으로는 KAIST에서 개발하였고 현재는 서울대에서 확장·관리하고 있는 nML이 있다.
ML의 기본 아이디어는 C#, 자바, 하스켈, 사이클론, 네멜레 등 많은 언어에 영향을 미쳤다.
ML은 주로 프로그래밍 언어의 실행기(interpreter)나 번역기(compiler), 프로그램 분석기 등을 개발하고 다루는 데 사용하지만, ML은 본래 범용 프로그래밍 언어이므로 생물정보학, 금융 전산망, P2P 클라이언트/서버 프로그램 등의 개발에도 사용한다.