El borde entre un tipo fundamental y un objeto es borroso y, a menudo, se introduce artificialmente. Por ejemplo, en C, una estructura es solo un conjunto de registros, solo un tipo no objeto derivado. En C ++, una estructura es una clase con todos los campos públicos, un objeto. Aún así, C ++ es casi totalmente compatible con C ... el borde es realmente suave aquí.
Para la programación basada en prototipos, debe tener objetos mutables en tiempo de ejecución. DEBEN ser de tipo suave porque cada uno cambia en tiempo de ejecución, una clase de un tipo cambia a otra, su tipo cambia.
Sin embargo, puede mantener los tipos no objetos fundamentales y derivados como estáticos. Pero esto introduce una extraña disparidad, los objetos son de tipo suave, los no objetos son de tipo estático, y se debe establecer una barrera dura entre los dos. ¿Deberías poder transformar una estructura? ¿Una cuerda? ¿Debe Number ser una clase o un tipo fundamental, o un conjunto de tipos fundamentales, int / float / bignum / etc?
Es más natural y fácil de aprender, usar y escribir para tener este uniforme, todos los tipos son mutables o ningún tipo es mutable en tiempo de ejecución. Si declaras que solo un tipo (Objeto) es mutable, terminas con dolores de cabeza y problemas de ambos mundos.
De tipo estático es:
- más fácil de implementar
- más rápido / más eficiente
- mas seguro
- más fácil de mantener / documentar grandes sistemas debido a la abstracción.
De tipo dinámico es:
- más rápido para escribir,
- mas conciso
- lenguaje más fácil de aprender
- más indulgente por errores de diseño.
Al mezclar los dos, sacrificas mucho.
- La implementación se vuelve más difícil que cualquiera de las dos anteriores.
- la velocidad depende si usa los tipos suaves o no ... Si lo hace, es bajo, si no lo hace, ¿por qué elegir el idioma?
- type safety está fuera de la ventana para todos los tipos de objetos.
- Seguir cómo un tipo se transforma en otro es una tarea bastante difícil. Documentarlo, muy difícil.
- Todavía necesita hacer toda la contabilidad con tipos fundamentales, lo que mata la concisión y la velocidad de escritura.
- La complejidad del lenguaje es mayor (más difícil de aprender) que cualquiera de los "específicos",
- "perdonar" a un tipo dinámico se reemplaza por la tendencia a algunos errores muy complicados en los tipos de atributos que no coinciden.