Comparación de lenguajes de programación por sistema de tipos

Esta es una comparación de las características de los sistemas de tipos y la verificación de tipos de múltiples lenguajes de programación .

Definiciones breves

  • Un sistema de tipos nominales significa que el lenguaje decide si los tipos son compatibles y/o equivalentes basándose en declaraciones y nombres explícitos.
  • Un sistema de tipos estructurales significa que el lenguaje decide si los tipos son compatibles y/o equivalentes basándose en la definición y las características de los tipos.
  • La verificación de tipos determina si se verifican los tipos y cuándo. La verificación estática significa que los errores de tipo se informan en función del texto de un programa (código fuente). La verificación dinámica significa que los errores de tipo se informan en función del comportamiento dinámico (tiempo de ejecución) de un programa.
IdiomaTipo de seguridadExpresión de tipoCompatibilidad y equivalencia de tiposComprobación de tipos
A+fuertedinámica
ActionScript 3.0fuerteimplícito con tipado explícito opcionalestático
abecedariofuerte
ABAPfuertenominalestático
Adafuerte [TS 1]explícitonominalestático
Agadéfuertenominalestático
Aldordébilparcialmente implícito [1]estático
Aleffuerteestático
ALGOL 58fuerteexplícitoestático
ALGOL 60fuerteexplícitoestático
ALGOL 68fuerteexplícitoestructuralUniones estáticas y etiquetadas
ALGOL Wfuerteestático
Aliciafuerteimplícito con explícito opcionalestático
Alma-0estático
Charla ambientalfuertedinámica
AMOS BÁSICOestático
Escritura de ángelfuerteestático
APLfuertedinámica
Script de Appledébildinámica
Arcodinámica
Asamblea????
Tecla de acceso rápido automáticasin tipo
AutoLISPdinámica
Ateji PXfuerteexplícitonominalestático
AWKdébilimplícitodinámica
Bsin tipo
Bailarinafuerteestructuralestático
Intento????
BÁSICOfuerteexplícitonominalestático
BCPsin tipo
Cáscara de frijolfuertenominaldinámica
DICHAsin tipo
Abucheofuerteimplícito con tipado explícito opcionalestático con tipado dinámico opcional
Hermanofuerteimplícito con tipado explícito opcionalnominalestático
dodébilexplícitonominalestático
DO--débilestático
C++ ( ISO/IEC 14882 )débilexplícito con tipado implícito opcional (mediante el uso de auto en C++11)nominalestático [TS 2]
DO*débilexplícitoestático
DO#débil [TS 3]implícito con tipado explícito opcionalnominalestático [TS 4]
C-shell (concha C)????
Camillafuerteimplícito con tipado explícito opcionalestático
CecilioDinámico con tipado estático opcional
Limpiofuerteimplícitoestático
Ceilánfuerteestático
Capillaimplícito con tipado explícito opcionalestático
ENFRIARfuerteestático
Arrojarfuerte
Cilkdébilexplícitoestático
Clarafuerteimplícito con tipado explícito opcionalDinámico con tipado estático opcional
Limpiofuerte?
Clojurefuerteimplícito con tipado explícito opcionaldinámica
CLUfuerte
COBOLfuerteexplícitonominalestático
Cobrafuerteexplícito con tipificación implícita opcionalestático con tipado dinámico opcional
Script de caféimplícitodinámica
Fusión fría (CFML)fuerteimplícitodinámica
COMALfuerte
Ceceo comúnfuerteimplícito con tipado explícito opcionalestructural para tipado implícito, nominal para tipado explícitoDinámico, alguna comprobación estática (dependiendo de la implementación)
Componente Pascalfuerteestático
Frescofuerteexplícitoestático
CORALfuerteestático
Cristalimplícito con tipado explícito opcional [2]estructuralestático
Cuneiformeexplícitoestático
Rizofuertenominal
Curryfuerteimplícito con tipado explícito opcionalestático
Citónfuerteimplícito con tipado explícito opcionalnominal (tipos de extensión) y estructural (Python)Dinámico con tipado estático opcional
Ddébil [TS 3]explícitonominalestático
Dardofuerte [3]mecanografía gradualnominalestático con tipado dinámico opcional
Dylanfuertedinámica
Torre Eiffelfuertenominalestático
Elixirfuerteimplícitodinámica
Erlangfuerteimplícitodinámica
Euforiafuerteexplícito, implícito con objetosnominalestático, dinámico con objetos
F#fuerteimplícitonominalestático
Adelantesin tipo
Fortranfuerteexplícito [TS 5]nominalestático
Gambasfuerteexplícitonominal
GL BásicofuerteDeclaraciones no explícitas disponibles a través de las opciones del proyectonominalestático
Destellofuerteimplícito con explícito opcionalnominalestático
Ir [4]fuerteparcialmente implícito ( inferencia de tipo local )estructuralestático
Gosufuerteparcialmente implícito ( inferencia de tipo local )nominal (subclasificación) y estructuralestático
Genialfuerteimplícito con tipado explícito opcionalDinámico con tipado estático opcional
Puertofuerteimplícito con tipado explícito opcionaldinámica
Haskellfuerteimplícito con tipado explícito opcionalnominal [5] [6]estático
Hachafuerteimplícito con tipado explícito opcionalnominal (subclasificación) y estructuralestático con tipado dinámico opcional
Yofuerteimplícitodinámica
iconofuerteimplícitodinámica
ISLISPfuertedinámica
Yofuertedinámica
Javafuerte [7]explícitonominalestático
JavaScriptdébilimplícitodinámica
Juliafuerteimplícito con tipado explícito opcional [8]estructural para tipado implícito, nominal para tipado explícitodinámica
Alegríafuertedinámica
Kotlinfuerteparcialmente implícito (inferencia de tipo local)nominalestático
LabVIEWfuerte
Luafuerteimplícitodinámica
Arcefuertedinámica
Mercuriofuerteestático
Matemáticafuertedinámica
Código M de MATLABfuertedinámica
Módulo-2débil [TS 3]explícitonominalestático
Módulo-3débil [TS 3]explícitoestructuralestático
PAPERAS (M)sin tipo
Nekodinámica
Nemerlefuerteimplícitonominalestático
Logotipo de Netfuerteimplícitodinámica
NetRexxfuerteimplícito con explícito opcionalDinámico con tipado estático opcional
nuevoLispimplícitodinámica
NUEVOPfuerteestático
Neolenguadinámica
Escritura de Newtondinámica
Nialdinámica
Nimfuerteparcialmente implícito (inferencia de tipo)estático
Níquelfuerte
Ahoradinámica
Oberónfuerteexplícitonominalestática y parcialmente dinámica [TS 6]
Objetivo-CfuerteexplícitonominalDinámico con tipado estático opcional [9]
OCamlfuerteimplícito con tipado explícito opcionalnominal para registros, [10] estructural para objetos [6] [11]estático
Objeto Pascalfuerteexplícitonominalestático
Abuelofuerteimplícito con tipado explícito opcionalestructuralestático
Oxígenodébilimplícitoestático
Oz-Mozartfuerteimplícitoestructuraldinámica
Pascaldébil [TS 3]explícitonominalestático
Perl 5implícitodinámica
PHPdébilimplícito con tipado explícito opcionalnominaldinámica
Másfuerteexplícitoestructuralestático, dinámico (opcional)
Prólogodinámica
Purodinámica
Puro Scriptfuerteimplícito con tipado explícito opcionalnominalestático
Pitónfuerteimplícito (con tipificación explícita opcional a partir de 3.5)nominaldinámica
Rimplícitodinámica
Rakuparcialmente implícito [TS 7]Dinámico con tipado estático opcional
REBOLfuerteimplícitodinámica
Rexxsin tipo—, implícito en relación con los númerosestático+dinámico con respecto a los números
Juego de roldébilestático
Rubífuerteimplícitodinámica
Óxidofuerteexplícito con tipificación implícita opcional [12]mayormente nominalestático
Sdinámica
Jergafuerteimplícitodinámica
Escalafuerteparcialmente implícito (inferencia de tipo local)nominal (subclasificación) y estructuralestático
Esquemafuerteimplícitodinámico ( latente )
Semilla7fuerteexplícitonominalestático
Simulafuerteestático [TS 8]
Charla informalfuerteimplícitodinámica
Rápidofuerteparcialmente implícito (inferencia de tipo local)nominal (subclasificación) y estructuralestático
ML estándarfuerteimplícito con tipado explícito opcionalestructuralestático
Tcldinámica
Mecanografiado?opcionalestructuralestático
Uníconofuerteimplícitodinámica
Visual Basicfuerteimplícito con tipado explícito opcionalnominalestático
Visual Basic (.NET)débil [TS 3]explícitoestático
Prólogo visualfuerteparcialmente implícitonominalestático
Lenguaje Wolframfuertedinámica
Windows PowerShellfuerteimplícitodinámica
SGfuertenominalestático
Xojofuerteexplícitonominalestático
XPath / XQueryfuerteparcialmente implícitonominalDinámico con tipado estático opcional
IdiomaTipo de seguridadExpresión de tipoCompatibilidad y equivalencia de tiposComprobación de tipos

Notas

  1. ^ Las operaciones inseguras están bien aisladas mediante un prefijo "Unchecked_".
  2. ^ con conversión de tipo dinámico opcional (ver conversión de tipo dinámico )
  3. ^ abcdef Es casi seguro, las funciones inseguras no se utilizan comúnmente.
  4. ^ con tipo dinámico opcional (ver búsqueda de miembro dinámico )
  5. ^ Opcionalmente, la tipificación puede implicarse explícitamente mediante la primera letra del identificador (conocido como tipificación implícita dentro de la comunidad Fortran).
  6. ^ comprobación dinámica de extensiones de tipo, es decir, tipos heredados
  7. ^ explícito para tipos estáticos
  8. ^ opcional para trámites formales y virtuales

Referencias

  1. ^ Guía del usuario de Aldor (PDF) . Aldor.org. 2002. págs. 40, 61 . Consultado el 3 de junio de 2021 .
  2. ^ "Cristal de inferencia de tipos". Referencia del lenguaje Crystal . Consultado el 3 de junio de 2021 .
  3. ^ "El sistema de tipos Dart". dart.dev . Consultado el 8 de abril de 2020 .
  4. ^ La especificación del lenguaje de programación Go
  5. ^ Löh, Andres. "¿Por qué Haskell no tiene registros con tipado estructural?". Stack Overflow . Archivado desde el original el 2016-03-14 . Consultado el 2020-04-13 .
  6. ^ ab King, Alexis (19 de enero de 2020). "No, los sistemas de tipos dinámicos no son inherentemente más abiertos". lexi-lambda.github.io . Archivado desde el original el 1 de marzo de 2020 . Consultado el 13 de abril de 2020 .
  7. ^ Sheng Liang, Gilad Bracha. Carga dinámica de clases en la máquina virtual Java. Volumen 33, número 10 de ACM SIGPLAN Notices, octubre de 1998.
  8. ^ "Tipos · el lenguaje Julia". Archivado desde el original el 24 de julio de 2018. Consultado el 24 de julio de 2018 .
  9. ^ Developer.apple.com Archivado el 10 de junio de 2009 en Wayback Machine.
  10. ^ "Registro · Razón". reasonml.github.io . Archivado desde el original el 2020-03-31 . Consultado el 2020-04-13 .
  11. ^ "Sistema de tipos estructurales", Wikipedia , 29 de marzo de 2019 , consultado el 13 de abril de 2020
  12. ^ "rust-lang/rustc-dev-guide". GitHub . Consultado el 8 de abril de 2020 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Comparison_of_programming_languages_by_type_system&oldid=1251010622"