유형별 프로그래밍 언어 비교
Comparison of programming languages by type system비교요인 프로그래밍 언어의 |
---|
|
이것은 여러 프로그래밍 언어의 유형 시스템과 유형 확인의 특징을 비교한 것이다.
간략한 정의
- 명목형식제란 명시적 선언과 이름에 기초하여 유형이 호환되는지 또는 동등한지를 언어가 결정하는 것을 의미한다.
- 구조형식제란 유형의 정의와 특성에 따라 유형이 호환되는지 또는 동등한지를 언어가 결정하는 것을 의미한다.
- 형식 확인은 형식 확인 여부 및 시기를 결정한다. 정적 점검은 프로그램의 텍스트(소스 코드)를 기반으로 유형 오류를 보고하는 것을 의미한다. 동적 점검은 프로그램의 동적(런타임) 동작을 기반으로 유형 오류가 보고되는 것을 의미한다.
언어 | 유형안전 | 형식식 | 유형 호환성 및 동등성 | 유형확인 |
---|---|---|---|---|
A+ | 힘이 센 | 동적인 | ||
ActionScript 3.0 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 정태의 | |
ABC | 힘이 센 | |||
ABAP | 힘이 센 | 명목상의 | 정태의 | |
에이다 | 힘이[TS 1] 센 | 노골적인 | 명목상의 | 정태의 |
아그다 | 힘이 센 | 명목상의 | 정태의 | |
알도르 | 힘이 없는 | 부분적으로 함축된[1]. | 정태의 | |
알레프 | 힘이 센 | 정태의 | ||
알골로58번길 | 힘이 센 | 노골적인 | 정태의 | |
알골 60 | 힘이 센 | 노골적인 | 정태의 | |
알골 68 | 힘이 센 | 노골적인 | 구조상의 | 정적 & 태그가 지정된 조합 |
알골 W | 힘이 센 | 정태의 | ||
앨리스야. | 힘이 센 | 선택적으로 명시되어 있는. | 정태의 | |
알마-0 | 정태의 | |||
앰비언트토크 | 힘이 센 | 동적인 | ||
아모스 베이직 | 정태의 | |||
엔젤스크립트 | 힘이 센 | 정태의 | ||
APL | 힘이 센 | 동적인 | ||
애플스크립트 | 힘이 없는 | 동적인 | ||
호 | 동적인 | |||
오토핫키 | 활자가 없는 | 해당 없음 | 해당 없음 | 해당 없음 |
AutoLISP | 동적인 | |||
아쯔지PX | 힘이 센 | 노골적인 | 명목상의 | 정태의 |
AWK | ? | ? | ? | ? |
B | 활자가 없는 | |||
발레리나 | 힘이 센 | 구조상의 | 정태의 | |
배쉬 | ? | ? | ? | ? |
기본 | 힘이 센 | 노골적인 | 명목상의 | 정태의 |
BCPL | 활자가 없는 | |||
빈셸 | 힘이 센 | 명목상의 | 동적인 | |
블리스 | 활자가 없는 | 해당 없음 | 해당 없음 | 해당 없음 |
Boo | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 동적 타이핑(선택 사항)이 있는 정적 | |
형제 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 명목상의 | 정태의 |
C | 힘이 없는 | 노골적인 | 명목상의 | 정태의 |
C- | 힘이 없는 | 정태의 | ||
C++(ISO/IEC 14882) | 힘이 없는 | 선택적 암묵적 타이핑으로 명시적(C++11에서 자동 사용) | 명목상의 | 정태의[TS 2] |
C* | 힘이 없는 | 노골적인 | 정태의 | |
C# | 힘이[TS 3] 없는 | 선택적 명시적 타이핑으로 함축된 | 명목상의 | 정태의[TS 4] |
C 껍데기 | ? | ? | ? | ? |
캠 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 정태의 | |
세실 | 옵션 정적 타이핑으로 동적 | |||
깨끗하다 | 힘이 센 | 함축성 있는 | 정태의 | |
실론 | 힘이 센 | 정태의 | ||
예배당 | 선택적 명시적 타이핑으로 함축된 | 정태의 | ||
CHIGH | 힘이 센 | 정태의 | ||
추크 | 힘이 센 | |||
킬크 | 힘이 없는 | 노골적인 | 정태의 | |
클레어. | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 옵션 정적 타이핑으로 동적 | |
깨끗하다 | 힘이 센 | ? | ||
클로저 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 동적인 | |
CLU | 힘이 센 | |||
코볼 | 힘이 센 | 노골적인 | 명목상의 | 정태의 |
코브라 | 힘이 센 | 선택적 암묵적 타이핑으로 명시적 | 동적 타이핑(선택 사항)이 있는 정적 | |
커피스크립트 | 함축성 있는 | 동적인 | ||
CFML(ColdFusion) | 힘이 센 | 함축성 있는 | 동적인 | |
코말 | 힘이 센 | |||
커먼 리스프 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 암시적 타이핑의 구조, 명시적 타이핑의 공칭 | 동적 정적 점검(실행 시 필요) |
컴포넌트 파스칼 | 힘이 센 | 정태의 | ||
멋지다 | 힘이 센 | 노골적인 | 정태의 | |
코랄 | 힘이 센 | 정태의 | ||
크리스털 | 선택적 명시적[2] 타이핑으로 함축된 | 구조상의 | 정태의 | |
쿠네오페어 | 노골적인 | 정태의 | ||
컬 | 힘이 센 | 명목상의 | ||
카레 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 정태의 | |
사이튼 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 공칭(연장 유형) 및 구조(피톤) | 옵션 정적 타이핑으로 동적 |
D | 힘이[TS 3] 없는 | 노골적인 | 명목상의 | 정태의 |
다트 | 힘이[3] 센 | 점진적인 타이핑 | 명목상의 | 동적 타이핑(선택 사항)이 있는 정적 |
딜런 | 힘이 센 | 동적인 | ||
에펠 | 힘이 센 | 명목상의 | 정태의 | |
엘리시르 | 힘이 센 | 함축성 있는 | 동적인 | |
얼랑 | 힘이 센 | 함축성 있는 | 동적인 | |
행복증 | 힘이 센 | 명시적, 사물에 함축적 | 명목상의 | 정적, 동적 객체 |
F# | 힘이 센 | 함축성 있는 | 명목상의 | 정태의 |
포스 | 활자가 없는 | 해당 없음 | 해당 없음 | 해당 없음 |
포트란 | 힘이 센 | 노골적인[TS 5] | 명목상의 | 정태의 |
감바스 | 힘이 센 | 노골적인 | 명목상의 | |
글바식 | 힘이 센 | 노골적인 프로젝트 옵션을 통해 사용할 수 있는 명확하지 않은 선언 | 명목상의 | 정태의 |
가다[4] | 힘이 센 | 부분 암묵적(로컬 유형 추론) | 구조상의 | 정태의 |
고수 | 힘이 센 | 부분 암묵적(로컬 유형 추론) | 공칭(하위 분류) 및 구조 | 정태의 |
그루비 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 옵션 정적 타이핑으로 동적 | |
하버 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 동적인 | |
하스켈 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 명목상의[5][6] | 정태의 |
헥시 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 공칭(하위 분류) 및 구조 | 동적 타이핑(선택 사항)이 있는 정적 |
이오 | 힘이 센 | 함축성 있는 | 동적인 | |
아이콘 | 힘이 센 | 함축성 있는 | 동적인 | |
ISLISP | 힘이 센 | 동적인 | ||
J | 힘이 센 | 동적인 | ||
자바 | 힘이[7] 센 | 노골적인 | 명목상의 | 정태의 |
자바스크립트 | 힘이 없는 | 함축성 있는 | 해당 없음 | 동적인 |
줄리아. | 힘이 센 | 선택적 명시적[8] 타이핑으로 함축된 | 암시적 타이핑의 구조, 명시적 타이핑의 공칭 | 동적인 |
조이 | 힘이 센 | 동적인 | ||
코틀린 | 힘이 센 | 부분 암묵적(로컬 유형 추론) | 명목상의 | 정태의 |
랩뷰 | 힘이 센 | |||
루아 | 힘이 센 | 함축성 있는 | 동적인 | |
단풍나무 | 힘이 센 | 동적인 | ||
수성. | 힘이 센 | 정태의 | ||
매스매티카 | 힘이 센 | 동적인 | ||
MATLAB M-코드 | 힘이 센 | 동적인 | ||
모둘라-2 | 힘이[TS 3] 없는 | 노골적인 | 명목상의 | 정태의 |
모둘라-3 | 힘이[TS 3] 없는 | 노골적인 | 구조상의 | 정태의 |
MUMP(M) | 활자가 없는 | 해당 없음 | 해당 없음 | 해당 없음 |
네코 | 동적인 | |||
네멜레 | 힘이 센 | 함축성 있는 | 명목상의 | 정태의 |
넷로고 | 힘이 센 | 함축성 있는 | 동적인 | |
넷렉스 | 힘이 센 | 선택적으로 명시되어 있는. | 옵션 정적 타이핑으로 동적 | |
뉴리스프 | 함축성 있는 | 동적인 | ||
NEWP | 힘이 센 | 정태의 | ||
뉴스피크 | 동적인 | |||
뉴턴스크립트 | 동적인 | |||
니알 | 동적인 | |||
님 | 힘이 센 | 부분적으로 암시(유형추론) | 정태의 | |
니클 | 힘이 센 | |||
누 | 동적인 | |||
오베론 | 힘이 센 | 노골적인 | 명목상의 | 정적이고 부분적으로 동적인[TS 6] |
목표-C | 힘이 센 | 노골적인 | 명목상의 | 옵션 정적 타이핑으로[9] 동적 |
OCAML | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 기록의 경우 공칭,[10] 물체의[6][11] 경우 구조 | 정태의 |
객체 파스칼 | 힘이 센 | 노골적인 | 명목상의 | 정태의 |
오파 | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 구조상의 | 정태의 |
옥시겐 | 힘이 없는 | 함축성 있는 | 정태의 | |
오즈모차르트 | 힘이 센 | 함축성 있는 | 구조상의 | 동적인 |
파스칼 | 힘이[TS 3] 없는 | 노골적인 | 명목상의 | 정태의 |
펄 5 | 함축성 있는 | 동적인 | ||
PHP | 힘이 없는 | 선택적 명시적 타이핑으로 함축된 | 명목상의 | 동적인 |
더하기 | 힘이 센 | 노골적인 | 구조상의 | 정적, 동적(옵션) |
서언, 머리말 | 동적인 | |||
순수하다 | 동적인 | |||
파이톤 | 힘이 센 | 암시적(3.5 기준 선택적 명시적 타이핑 포함) | 해당 없음 | 동적인 |
라쿠 | 부분적으로 함축된[TS 7]. | 옵션 정적 타이핑으로 동적 | ||
리볼 | 힘이 센 | 함축성 있는 | 동적인 | |
렉시 | 활자가 없는 | 해당 없음, 암시적 wrt 숫자 | 해당 없음 | 정적+불규칙 wrt 수 |
RPG | 힘이 없는 | 정태의 | ||
루비 | 힘이 센 | 함축성 있는 | 해당 없음 | 동적인 |
녹 | 힘이 센 | 선택적 암묵적 타이핑으로[12] 명시적 | 대부분 명목상의 | 정태의 |
S | 동적인 | |||
에스랑 | 힘이 센 | 함축성 있는 | 동적인 | |
스칼라 | 힘이 센 | 부분 암묵적(로컬 유형 추론) | 공칭(하위 분류) 및 구조 | 정태의 |
계략 | 힘이 센 | 함축성 있는 | 동적(동적) | |
씨드7 | 힘이 센 | 노골적인 | 명목상의 | 정태의 |
시물라 | 힘이 센 | 정태의[TS 8] | ||
스몰토크 | 힘이 센 | 함축성 있는 | 동적인 | |
스위프트 | 힘이 센 | 부분 암묵적(로컬 유형 추론) | 공칭(하위 분류) 및 구조 | 정태의 |
표준 ML | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 구조상의 | 정태의 |
Tcl | 동적인 | |||
타이프스크립트 | ? | 선택적 | 구조상의 | 정태의 |
유니콘 | 힘이 센 | 함축성 있는 | 동적인 | |
Visual Basic 입니다. | 힘이 센 | 선택적 명시적 타이핑으로 함축된 | 명목상의 | 정태의 |
Visual Basic 입니다.네트 | 힘이[TS 3] 없는 | 노골적인 | 정태의 | |
비주얼 프롤로그 | 힘이 센 | 부분적으로 함축된. | 명목상의 | 정태의 |
울프람어 | 힘이 센 | 동적인 | ||
Windows PowerShell | 힘이 센 | 함축성 있는 | 동적인 | |
XL | 힘이 센 | 명목상의 | 정태의 | |
소조 | 힘이 센 | 노골적인 | 명목상의 | 정태의 |
XPath/XQuery | 힘이 센 | 부분적으로 함축된. | 명목상의 | 옵션 정적 타이핑으로 동적 |
언어 | 유형안전 | 형식식 | 복합 재료 간 유형 호환성 | 유형확인 |
메모들
참조
- ^ Aldor User Guide (PDF). Aldor.org. 2002. pp. 40, 61. Retrieved 3 June 2021.
- ^ "Type Inference Crystal". Crystal Language Reference. Retrieved 3 June 2021.
- ^ "The Dart type system". dart.dev. Retrieved 2020-04-08.
- ^ IMT-2000 3GPP-Go Programming 언어 규격
- ^ Löh, Andres. "Why does Haskell not have records with structural typing?". Stack Overflow. Archived from the original on 2016-03-14. Retrieved 2020-04-13.
- ^ a b King, Alexis (2020-01-19). "No, dynamic type systems are not inherently more open". lexi-lambda.github.io. Archived from the original on 2020-03-01. Retrieved 2020-04-13.
- ^ 성량, 길라드 브라차. Java 가상 시스템에서 동적 클래스 로드. 1998년 10월 ACM SIGPlan Notice 제33권 제10호.
- ^ https://docs.julialang.org/en/latest/manual/types/
- ^ Developer.apple.com 2009년 6월 10일 웨이백 머신에 보관
- ^ "Record · Reason". reasonml.github.io. Archived from the original on 2020-03-31. Retrieved 2020-04-13.
- ^ "Structural type system", Wikipedia, 2019-03-29, retrieved 2020-04-13
- ^ "rust-lang/rustc-dev-guide". GitHub. Retrieved 2020-04-08.