voy a tratar de responder a sus preguntas:
Primero los más fáciles En qué lenguajes de programación es que esté disponible como una característica?
PHP, Python, Ruby, Perl, JavaScript ...
"¿Qué son dinámicos Tipo de encuadernación?"
Los lenguajes de programación que utilizan este enfoque para vincular un tipo de variable, como PHP, Python, Ruby, etc., son en general idiomas interpretados. Entonces, ellos no tienen un compilador. En esos idiomas, no especifica el tipo de variable y no tiene reglas de implicidad para esto, por lo que es "imposible" descubrir un tipo de variable antes del tipo de ejecución.
¿Por qué utilizar el enlace de tipo dinámico?
Para responder a esta pregunta, tengo que hablar sobre algunas ventajas de este enfoque. Para elegir utilizar el enlace de tipo dinámico es una decisión sobre el diseño de su idioma. Por lo tanto, depende de lo que desee para su idioma y de la situación en que se utilizará.
Ventajas
- Es más fácil escribir código genérico.
Ejemplo: piense en crear una estructura de datos genérica, por ejemplo, Pila. Desea usarlo para mantener todo tipo de variables utilizando diferentes pilas, por ejemplo, una pila para int, otra para cadena, etc. Para hacer esto en ** lenguajes de programación con enlace de tipo estático ** es más difícil.
En C, por ejemplo, tiene dos opciones:
- Escribir una pila para cada tipo que desea utilizar mantener en la pila
- Construir una pila que mantiene (void *), en otras palabras, una punto para cualquier cosa
Si intentas hacer esto en Python, solo escribes tu código de una vez. El lenguaje hace el trabajo duro para ti.
Puede discutir sobre Java y otros lenguajes, pero debe tener en cuenta que, el enlace de tipo dinámico es un concepto más antiguo que la Programación de objetos orientados, por lo que en ese momento, no existía el polimorfismo.
Desventajas
- alto costo para comprobar el tipo y la interpretación
Ejecutar un programa utilizando un archivo binario generado por la compilación es mucho más rápido que el mismo programa que se ejecuta por encima de un intérprete. Lo segundo es que cuando usa vinculante de tipo estático, "básicamente, el proceso de enlace se realiza solo una vez antes de su ejecución. Por otro lado, en idiomas con Enlace de tipo dinámico, el proceso de enlace se realiza o cada asignación . funcionamiento de cada variable
Otras desventajas mínimas se trata de algunos erros que un compilador pudo encontrar, pero utilizando tipo dinámico vinculante el intérprete no puede
Por ejemplo:. Como se puede cambiar el tipo de las variables tanto tiempo como necesites durante el tiempo de ejecución, es realmente posible crear una confusión, como cambiar una variable de int a cadena, y algún punto después, intente llamar a una función que reciba un int y llame a esta función usando la variable que ahora es cadena.
Esto es un problema mínimo, porque un desarrollador de experiencia nunca lo hará, pero aún es posible y en los idiomas con no está el enlace de tipo estático.
Debe tener en cuenta que estamos hablando de conceptos, y las implementaciones de esos conceptos están evolucionando junto con la informática, por lo que probablemente algunas Ventajas/Desventajas se puedan minimizar en la actualidad.
Estas diapositivas son terribles. Confunden la declaración implícita/explícita con tipos implícitos/explícitos. Puede tener declaraciones explícitas con tipos implícitos (estáticos), p. la mayoría de los lenguajes funcionales tipados presentan una inferencia de tipo completa.Además, la tipificación estática asigna tipos a las expresiones, no solo a las variables. (El término "tipo vinculante" tampoco es estándar.) –
@AndreasRossberg Estas diapositivas son notas de apoyo para "Conceptos de lenguajes de programación" de Robert Sebesta. – jsp99
Solo para agregar, encontré [esto] (https://cseweb.ucsd.edu/classes/sp05/cse130/lecture_notes/types_student.txt) que fue útil para mí. – Kulasangar