CLI 언어 목록

**CLI 언어**는 공통 언어 기반(CLI) 사양을 준수하는 라이브러리와 프로그램을 제작하는 데 사용되는 컴퓨터 프로그래밍 언어다. 몇몇 주목할 만한 예외를 제외하고, 대부분의 CLI 언어는 닷넷 프레임워크, 닷넷(.NET) 코어, 모노에 의해 구현된 공통 언어 런타임에서 실행될 수 있는 중간 언어인 공통 중간 언어(CIL)로 완전히 컴파일된다. 이러한 언어 중 일부는 동적 언어 런타임(DLR)을 필요로 하기도 한다.

프로그램이 실행될 때, CIL 코드는 프로그램이 구동되는 아키텍처에 적합한 기계어로 실시간(Just-in-time) 컴파일되어 캐시된다. 이 단계는 마이크로소프트의 ngen.exe나 모노의 "-aot" 옵션과 같은 "사전(ahead-of-time)" 컴파일러를 사용하여 이전 단계에서 캐싱함으로써 수동으로 생략할 수 있다.

## 주요 CLI 언어
### 현역 언어
;**[[에이다 (프로그래밍 언어)|에이다 (Ada for .Net)]]**
: 에이다는 코드 안전성, 유지보수성, 정확성에 강하게 집중하는 다중 패러다임 언어다.
;**[[Boo (프로그래밍 언어)|Boo]]**
: 파이썬에서 영감을 받은 정적 타이핑 CLI 언어다.
;**[[C 샤프|C#]]**
: 가장 널리 사용되는 CLI 언어로, 자바와 매우 유사하며 오브젝트 파스칼 (델파이) 및 C++와도 어느 정도 유사성을 띤다. 닷넷 프레임워크, 닷넷 코어, 모노에 의해 구현체가 제공된다.
;**[[C++/CLI]]**
: 공통 언어 런타임(CLR) 객체를 사용하기 위한 확장을 포함한 C++ 버전이다. 닷넷 프레임워크를 완벽하게 지원하며, 닷넷 코어에 대해서는 라이브러리 전용 지원을 제공한다. C++ 객체에 대해 네이티브 코드를 생성하는 혼합 모드 코드를 생성한다. 컴파일러는 마이크로소프트에서 제공한다.
;**ClojureCLR**
: 클로저 프로젝트의 일부로, 클로저를 CLI로 포팅한 것이다.
;**[[컴포넌트 파스칼]]**
: CLI를 준수하는 오베론 파생 언어다. 파스칼과 Modula-2의 유산을 계승한 강력한 정적 타이핑 언어지만, 강력한 객체 지향 확장을 갖추고 있다.
;**[[에펠 (프로그래밍 언어)|에펠]]**
: 소프트웨어 품질에 집중하는 순수 객체 지향 언어로, 통합된 계약에 의한 설계와 다중 상속을 포함한다. CLI를 준수한다.
;**[[F 샤프|F#]]**
: 함수형 프로그래밍과 명령형 객체 지향 프로그래밍 규율을 지원하는 다중 패러다임 CLI 언어다. ML의 변형이며 OCaml과 크게 호환된다. 닷넷 프레임워크, 닷넷 코어, 모노에 의해 구현체가 제공된다.
;**[[F* (프로그래밍 언어)|F*]]**
: F#에 기반한 의존 타이핑(dependently typed) 언어다.
;**[[Go (프로그래밍 언어)|Go]]**
: RemObjects Gold 컴파일러 및 다중 플랫폼 타겟팅을 통해 지원된다.
;**[[IronPython]]**
: 동적 언어 런타임(DLR) 위에서 구축된 파이썬의 오픈 소스 CLI 구현체다.
;**[[IronScheme]]**
: DLR 위에서 구축된 R6RS 준수 스킴 구현체다.
;**[[자바 (프로그래밍 언어)|자바]]**
: RemObjects Iodine 컴파일러 및 다중 플랫폼 타겟팅을 통해 지원된다.
;**[[옥시즌 (프로그래밍 언어)|옥시즌]]**
: 오브젝트 파스칼 기반의 CLI 언어다.
;**[[PascalABC.NET]]**
: 닷넷 프레임워크 상에서 구현된 오브젝트 파스칼 기반 언어다.
;**[[PeachPie]]**
: 닷넷 및 닷넷 코어용 PHP 컴파일러다. Phalanger의 후속작이다.
;**[[파워빌더]]**
: 버전 11.1부터 CLI를 타겟팅할 수 있다.
;**[[파워셸]]**
: 객체 지향 명령줄 셸이다. 파워셸은 임의의 CLI 언어로 작성된 닷넷 어셈블리를 동적으로 로드할 수 있다. 파워셸 자체는 고유한 스크립팅 구문을 사용하며, 다른 C 기반 언어와 유사하게 중괄호를 사용한다.
;**[[머큐리 (RemObjects BASIC 프로그래밍 언어)|RemObjects Mercury]]**
: 비주얼 베이직 닷넷 기반의 CLI 언어다.
;**[[러스트 (프로그래밍 언어)|러스트]]**
: 러스트를 위한 실험적인 닷넷 백엔드 연구 프로젝트가 진행 중이다.
;**[[Silverfrost FTN95]]**
: 포트란 95의 구현체다.
;**[[마이크로소프트 스몰 베이직|스몰 베이직]]**
: 프로그래밍 교육을 위해 마이크로소프트에서 만든 BASIC 파생 언어다. 지원되는 릴리스는 닷넷 프레임워크 버전 3.5 및 4.5를 타겟팅한다.
;**[[스위프트 (프로그래밍 언어)|스위프트]]**
: RemObjects Silver 컴파일러 및 다중 플랫폼 타겟팅을 통해 지원된다.
;**[[Synergy DBL]] .NET**
: Synergex에서 제작한 DBL 및 DIBOL의 객체 지향 CLI 준수 구현체다.
;**[[유니파이 코퍼레이션|팀 디벨로퍼]]**
: 팀 디벨로퍼(Team Developer) 6.0부터 SQLWindows 애플리케이션 언어(SAL)를 지원한다.
;**[[비주얼 베이직 닷넷|비주얼 베이직.NET]]**
: 클래식 비주얼 베이직을 재설계한 방언이다. 닷넷 프레임워크, 닷넷 코어, 모노에 의해 구현체가 제공된다.
;**비주얼 코볼**
: 마이크로 포커스에서 제작한, 닷넷 프레임워크 및 JVM으로 포팅된 코볼의 향상된 버전이다.
;**XSharp**
: X#는 xBase 언어에 기반한 마이크로소프트 닷넷용 오픈 소스 개발 언어다. Core, Visual Objects, Vulcan.NET, xBase++, Harbour, Foxpro 등 다양한 변체(flavours)를 제공한다.

### 중단되거나 더 이상 사용되지 않는 언어
;**[[A 샤프|A#]]**
: 에이다의 CLI 구현체다.
;**[[Axum (프로그래밍 언어)|Axum]]**
: 행위자 모델 병행 프로그래밍 언어다.
;**[[코브라 (프로그래밍 언어)|Cobra]]**
: 정적 및 동적 타이핑, 계약에 의한 설계 및 내장된 유닛 테스트 기능을 갖춘 CLI 언어다.
;**[[Fantom (프로그래밍 언어)|Fantom]]**
: 닷넷(더 이상 활발히 개발되지 않음) 및 JVM용으로 컴파일되는 언어다. 
;**[[GrGen]].NET**
: 그래프 다시 쓰기를 위한 CLI 언어다.
;**[[IronRuby]]**
: 동적 언어 런타임(DLR) 위에서 구축된 루비의 오픈 소스 CLI 구현체다.
;**[[J 샤프|J#]]**
: 자바의 CLI 준수 구현체다. 컴파일러는 마이크로소프트에서 제공한다. J#은 생산이 중단되었다. 마지막 버전은 비주얼 스튜디오 2005와 함께 제공되었으며, 2015년까지 지원되었다.
;**[[JScript .NET]]**
: J스크립트와 호환되는 ECMA스크립트 버전 3의 CLI 구현체다. 정적 타이핑을 위한 확장을 포함한다. 매니지드 J스크립트를 위해 사용이 중단(deprecated)되었다.
;**[[C++용 관리 확장]]**
: 공통 언어 런타임(CLR)을 타겟팅하는 C++ 버전이다. C++/CLI를 위해 사용이 중단되었다.
;**[[매니지드 J스크립트]]**
: 동적 언어 런타임(DLR) 위에서 구축된 J스크립트의 CLI 구현체다. ECMA스크립트 버전 3을 준수한다.
;**[[Nemerle]]**
: C#, OCaml, Lisp와 유사한 다중 패러다임 언어다.
;**[[Niecza]]**
: 펄 6의 CLI 구현체다.
;**[[Phalanger (컴파일러)|Phalanger]]**
: ASP.NET용 확장을 포함한 PHP 구현체다. PeachPie의 전신이다.
;**[[유니티스크립트]]**
: 유니티 게임 엔진 전용의 자바스크립트와 유사한 언어다. C#을 위해 사용이 중단되었다.

## 관련 항목
;**[[IKVM]]**
: CLI 구현체 위에서 자바 및 기타 JVM 언어(예: Groovy, 스칼라 등)를 실행하는 데 사용할 수 있는 자바 가상 머신이다.

## 같이 보기
* 자바 가상 머신 지원 언어
* 오픈 소스 프로그래밍 언어 목록
* 닷넷 프레임워크: 오리지널 구현체로, 곧 중단될 예정이다.
** 공통 언어 기반 (CLI): 닷넷 프레임워크의 실행 환경(가상 머신 구성 요소)에 대한 개방형 사양.
** 공통 중간 언어 (CIL): CLI 구현체를 사용하여 실행할 수 있는 중간 언어.
** 공통 언어 런타임: 마이크로소프트의 닷넷 프레임워크 구현체 중 가상 머신 구성 요소.
** 닷넷 표준 라이브러리
*** 기본 클래스 라이브러리 (BCL)
* 모노: 유니티와 자마린을 포함한 많은 곳에서 사용되는 닷넷 프레임워크의 오픈 소스 구현체.
* 닷넷 코어: 닷넷 프레임워크의 오픈 소스 크로스 플랫폼 후속작.

## 각주

분류:프로그래밍 언어 목록
분류:공통 언어 기반