Articulo de referencia

Tipografía de pato

En programación informática , el tipado pato es una aplicación de la prueba del pato — «Si camina como un pato y grazna como un pato, entonces debe ser un pato» — para determina...

En programación informática , el tipado pato es una aplicación de la prueba del pato «Si camina como un pato y grazna como un pato, entonces debe ser un pato» para determinar si un objeto puede usarse para un propósito particular. Con el tipado nominativo , un objeto es de un tipo dado si se declara como tal (o si la asociación de un tipo con el objeto se infiere a través de mecanismos como la herencia de objetos ). Con el tipado pato, un objeto es de un tipo dado si tiene todos los métodos y propiedades requeridos por ese tipo. [ 1 ] [ 2 ] El tipado pato puede verse como una equivalencia estructural basada en el uso entre un objeto dado y los requisitos de un tipo.

En lenguajes de tipado estático

En algunos lenguajes de tipado estático como Boo [ 3 ] y D , [ 4 ] [ 5 ] se puede especificar que la comprobación del tipo de clase ocurra en tiempo de ejecución en lugar de en tiempo de compilación.

C# puede invocar el tipado dinámico , que se comporta de forma similar al tipado pato, a través de la palabra clave dynamic.

Comparación con otros sistemas tipográficos

Sistemas de tipos estructurales

El tipado dinámico es similar al tipado estructural , pero distinto . El tipado estructural es un sistema de tipado estático que determina la compatibilidad y equivalencia de tipos mediante la estructura de un tipo, mientras que el tipado dinámico es y determina la compatibilidad de tipos únicamente mediante la parte de la estructura de un tipo a la que se accede durante el tiempo de ejecución .

Los lenguajes TypeScript , [ 6 ] Elm [ 7 ] y Python [ 8 ] admiten tipado estructural en distintos grados.

Protocolos e interfaces

Los protocolos e interfaces permiten declarar explícitamente que ciertos métodos, operadores o comportamientos deben estar definidos. Si una biblioteca de terceros implementa una clase que no se puede modificar, un cliente no puede usar una instancia de dicha clase con una interfaz desconocida para esa biblioteca, incluso si la clase cumple con los requisitos de la interfaz. Una solución común a este problema es el patrón adaptador . En cambio, con el tipado dinámico (duck typing), el objeto se aceptaría directamente sin necesidad de un adaptador.

Plantillas o tipos genéricos

Las funciones o métodos de plantilla (también llamados genéricos ) aplican la prueba del pato en un contexto de tipado estático ; esto conlleva todas las ventajas y desventajas de la comprobación de tipos estática frente a la dinámica . El tipado pato también puede ser más flexible, ya que solo se deben implementar los métodos que se llaman realmente en tiempo de ejecución, mientras que las plantillas requieren implementaciones de todos los métodos que no se pueden demostrar inaccesibles en tiempo de compilación.

En lenguajes como Java, Scala y Objective-C, se puede emplear la reflexión para inspeccionar si los objetos implementan métodos o agregar los métodos necesarios en tiempo de ejecución. Por ejemplo, la API MethodHandle de Java se puede usar de esta manera. [ 9 ]

Véase también

Referencias

  1. "Glosario — Documentación de Python 3.7.1" . docs.python.org . Archivado del original el 25 de junio de 2020. Consultado el 8 de noviembre de 2018 .
  2. "Ejemplo de tipado dinámico en Python" . Techie Hours . 28 de junio de 2020. Archivado del original el 31 de marzo de 2022. Consultado el 26 de julio de 2020 .
  3. Boo: Duck Typing Archivado el 6 de octubre de 2008 en Wayback Machine
  4. "Clases dinámicas y tipado dinámico" .
  5. "Metaprogramación: tipado dinámico en D" .
  6. "SE Radio Episodio 384: Boris Cherny sobre TypeScript" . se-radio.net . Consultado el 25 de octubre de 2019 .
  7. ^ Czaplicki, Evan. "Lenguaje central · Introducción a Elm" . Consultado el 30 de enero de 2017 .
  8. "PEP 544 – Protocolos: Subtipificación estructural (tipificación estática)" . Archivado del original el 19 de octubre de 2022. Consultado el 12 de noviembre de 2022 .
  9. "StackOverflow: Implementar tipado dinámico usando manejadores de métodos de Java" . Archivado del original el 1 de julio de 2020. Consultado el 13 de junio de 2020 .