Escritura estática

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 25 de febrero de 2021; las comprobaciones requieren 5 ediciones .

La tipificación estática  es una técnica ampliamente utilizada en los lenguajes de programación , en la que una variable , un parámetro de subrutina, un valor de retorno de función se asocia con un tipo en el momento de la declaración y el tipo no se puede cambiar más tarde (la variable o parámetro aceptará, y la función devolverá valores solo de este tipo). Ejemplos de lenguajes tipificados estáticamente son Ada , C , C++ , C# , D , Java , ML , Pascal , Solidity , Go , Fortran. La técnica opuesta es la escritura dinámica .

Algunos lenguajes escritos estáticamente ganaron más tarde la capacidad de usar también escritura dinámica con la ayuda de subsistemas especiales. Por ejemplo, Varianten Delphi , paquetes en AliceML [1] , Data.Dynamicen Haskell [2] .

La escritura estática produce el código de máquina más simple , por lo que es útil para los lenguajes que producen ejecutables del sistema operativo o código intermedio compilado por JIT . Muchos errores ya se eliminan en la etapa de compilación, por lo que la escritura estática es buena para escribir código complejo pero rápido. En un IDE , el autocompletado más relevante es factible , especialmente si el tipo es estático fuerte: se pueden descartar muchas opciones por no coincidir con el tipo. Cuanto más grande y complejo sea el proyecto, mayor será la ventaja de la escritura estática, y viceversa.

Al mismo tiempo, los lenguajes tipificados estáticamente con una base matemática insuficientemente desarrollada resultan bastante detallados: cada vez que necesita especificar qué tipo tendrá la variable. Algunos lenguajes tienen inferencia de tipo automática , pero esto puede conducir a errores sutiles. Esto no es cierto para los lenguajes de la familia ML , basados ​​en el llamado  " esquema de tipado principal [3] ", que infiere automáticamente el tipo más general de cualquier expresión y verifica estrictamente la coincidencia de tipos de dependencia. Esto le da al lenguaje la expresividad de los escritos dinámicamente, al tiempo que proporciona un mejor rendimiento y seguridad de tipo [3] .

Notas

  1. Paquetes AliceML . Consultado el 13 de febrero de 2015. Archivado desde el original el 15 de febrero de 2015.
  2. Dinámica en Haskell . Consultado el 13 de febrero de 2015. Archivado desde el original el 13 de febrero de 2015.
  3. 1 2 Pierce, 2012 , 22 Reconstrucción de tipos, p. 360-361.

Literatura