다중 패러다임 프로그래밍 언어

다중 패러다임 프로그래밍 언어()는 하나 이상의 프로그래밍 패러다임을 지원하는 프로그래밍 언어이다. 이것은 비야네 스트롭스트룹이 설명하는, “하나 이상의 프로그래밍 스타일을 따르는 프로그램”을 허용한다. 이런 언어들의 설계 목표는 모든 문제를 가장 쉽고 효율적으로 풀 수 있는 하나의 패러다임은 없다는 것을 인정하고, 프로그래머가 자신의 일에 가장 적합한 것을 사용할 수 있게 하는 것이다.

가장 야심찬 예는 오즈인데, 오즈는 논리형 프로그래밍, 함수형 프로그래밍, 객체지향 프로그래밍, 자료흐름 병행 프로그래밍 등의 프로그래밍 패러다임을 지원한다. 오즈7는 십년 이상의 기간을 들여 다른 프로그래밍 패러다임들과 전통적으로 연관되어 있던 개념들을 조화로운 방법으로 결합시키려 하였다.

 다중 패러다임 언어의 예 
지원하는 패러다임의 수와 형태로 묶을 수 있다.

 두 가지 패러다임 

 자료흐름, 비주얼
 랩뷰(LabVIEW)
 함수형, 명령형
 APL
 함수형, 논리형
 ALF
 함수형, 객체지향 (클래스 기반)
 커먼 리스프
 딜런
 Sather
 함수형, 비주얼
 스프레드시트
 명령형, 객체지향 (클래스기반)
 PHP
 시뮬라
 객체지향 (클래스기반), 비주얼
 라바 (프로그래밍 언어)

 세 가지 패러다임 

 병행, 자료흐름, 함수형
 SISAL
 병행, 함수형, distributed
 얼랭
 병행, 함수형, 논리형
 Curry
 병행, imperative, 객체지향 (클래스기반)
 ChucK
 자료흐름, 객체지향 (클래스기반), 비주얼
 Prograph
 함수형, imperative, logic
 Poplog
 함수형, 명령형, 객체지향 (클래스기반)
 BETA
 J
 펄
 Pliant
 파이썬
 Tcl (클래스기반에 xotcl이나 itcl을 확장, 프로토타입기반에 snit을 확장)
 함수형, 명령형, 객체지향 (프로토타입기반)
 ECMA스크립트
 액션스크립트
 DMDScript
 E4X
 자바스크립트
 J스크립트
 루아
 Tcl (snit 확장)
 제네릭 (템플릿 메타프로그래밍), 명령형, 객체지향 (클래스기반)
 C++
 D

 네 가지 패러다임 

 함수형, 제네릭 (템플릿 메타프로그래밍), 명령형, 객체지향 (클래스기반)
 Objective Caml
 함수형, 명령형, 병행 (행위자 모델), 객체지향 (프로토타입기반)
 아이오
 함수형, 명령형, 병행, 객체지향 (클래스기반)
 루비
 함수형, 명령형, 논리형, 객체지향 (클래스기반)
 레다
 명령형, 논리형, 객체지향 (클래스기반), 규칙기반
 ROOP
 함수형, 명령형, 객체지향 (프로토타입기반), 사투리 (프로그래밍)
 REBOL

 다섯 가지 패러다임 

 병행 (rendezvous 기반), 분산, 제네릭, 명령형, 객체지향 (클래스기반)
 에이다

 여덟 가지 패러다임 
 병행, 제한, 자료흐름, 분산, 함수형 (evaluation: eager, lazy), 명령형, 논리형, 객체지향 (클래스기반)
 오즈
 모차르트 프로그래밍 시스템 - 오즈의 다중 플랫폼

 같이 보기 
 프로그래밍 패러다임
 프로그래밍 언어의 종류별 목록

 참고 자료 
  Multiparadigm Design for C++, by Jim Coplien, 1998.
  Concepts, Techniques, and Models of Computer Programming, by Peter Van Roy and Seif Haridi, 2004.

 외부 링크 
  MultiParadigmProgrammingLanguage on the C2 wiki


분류:프로그래밍 언어