유형별 프로그래밍 언어 비교

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 힘이 센 부분적으로 함축된. 명목상의 옵션 정적 타이핑으로 동적
언어 유형안전 형식식 복합 재료 간 유형 호환성 유형확인

메모들

  1. ^ 안전하지 않은 작동은 "확인되지 않음" 접두사로 잘 격리된다.
  2. ^ 옵션인 동적 유형 주물 포함(동적 주조물 참조)
  3. ^ a b c d e f 그것은 거의 안전하며 안전하지 않은 기능은 일반적으로 사용되지 않는다.
  4. ^ 옵션 동적 유형 포함(동적 멤버 조회 참조)
  5. ^ 선택적으로, 타이핑은 식별자의 첫 글자(Fortran 커뮤니티 내에서 암시적 타이핑으로 알려져 있음)에 의해 명시적으로 암시될 수 있다.
  6. ^ 유형 확장의 동적 확인(예: 상속된 유형)
  7. ^ 정적 형식에 대해 분명한.
  8. ^ 공식 및 가상 절차의 경우 선택 사항

참조

  1. ^ Aldor User Guide (PDF). Aldor.org. 2002. pp. 40, 61. Retrieved 3 June 2021.
  2. ^ "Type Inference Crystal". Crystal Language Reference. Retrieved 3 June 2021.
  3. ^ "The Dart type system". dart.dev. Retrieved 2020-04-08.
  4. ^ IMT-2000 3GPP-Go Programming 언어 규격
  5. ^ 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.
  6. ^ 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.
  7. ^ 성량, 길라드 브라차. Java 가상 시스템에서 동적 클래스 로드. 1998년 10월 ACM SIGPlan Notice 제33권 제10호.
  8. ^ https://docs.julialang.org/en/latest/manual/types/
  9. ^ Developer.apple.com 2009년 6월 10일 웨이백 머신보관
  10. ^ "Record · Reason". reasonml.github.io. Archived from the original on 2020-03-31. Retrieved 2020-04-13.
  11. ^ "Structural type system", Wikipedia, 2019-03-29, retrieved 2020-04-13
  12. ^ "rust-lang/rustc-dev-guide". GitHub. Retrieved 2020-04-08.