유형별 프로그래밍 언어 비교
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.