Sistema de tipos

Los tipos de datos normalmente tienen asociaciones tanto con valores en la memoria o con objetos como con variables.Ejemplos de lenguajes que usan tipado estático son C, C++, Java y Haskell.Ejemplos de lenguajes que usan tipado dinámico son Perl, Python y Lisp.Por ejemplo, los lenguajes como Java y los parecidos al C tienen una "conversión de tipos de datos forzada (cast)"; estas operaciones pueden ser inseguras durante la ejecución, porque pueden causar comportamientos indeseados cuando el programa se ejecuta.La elección entre sistemas de tipificación dinámico y estático requiere algunas contraprestaciones.[1]​ El tipado estático resulta, normalmente, en un código compilado que se ejecuta más rápidamente.Cuando el compilador conoce los tipos de datos exactos que están en uso, puede producir código máquina optimizado.Además, los compiladores en los lenguajes de tipado estático pueden encontrar atajos más fácilmente.Ver optimización de software En contraste, el tipado dinámico permite a los compiladores e intérpretes ejecutarse más rápidamente, debido a que los cambios en el código fuente en los lenguajes dinámicamente tipados puede resultar en menores comprobaciones y menos código que revisar.Por ejemplo, la función eval de Python, la cual ejecuta datos arbitrarios como si fueran código.Por ejemplo, los genéricos de C++ requiere una escritura más descriptiva que su equivalente en Ruby o Python, precisamente porque es necesario especificar los tipos implicados.