La inferencia de tipos tiene problemas de usabilidad

Fuentes: Type inference has usability problems

La inferencia de tipos —la capacidad de un compilador de deducir automáticamente el tipo de una variable a partir de una asignación, sin que el programador lo declare— se ha convertido en una característica estándar en los lenguajes modernos. Go, Rust, Swift, Scala, Kotlin, Zig o Nim la incluyen de fábrica, y otros más veteranos como C++11, C# 3.0 y Java 10 la incorporaron después. Sin embargo, apenas existen estudios rigurosos que demuestren sus supuestos beneficios y, según argumenta el autor, podría incluso perjudicar la comprensión del código y aumentar la carga cognitiva del programador.

En la práctica, al leer código ajeno, el desarrollador necesita conocer el tipo de cada expresión para entender qué hace. Con inferencia, ese dato no aparece en pantalla: hay que situar el ratón sobre la variable o navegar hasta la declaración de la función para descubrirlo. Acciones aparentemente rápidas que, sumadas a la complejidad habitual del código, incrementan el esfuerzo mental. En entornos sin editor —como revisar un repositorio en GitHub— esa información directamente no está disponible.

El artículo también señala que en algunos lenguajes evitar la inferencia genera advertencias del propio linter, como ocurre en Go, o que Microsoft cambió la recomendación por defecto de Visual Studio para C# en 2017, sugiriendo usar tipos explícitos para mejorar la legibilidad. Los defensores de la inferencia replican que elimina redundancias y facilita la lectura. Para zanjar el debate, el autor propone que las comunidades de lenguajes de programación, ingeniería del software e interacción persona-ordenador investiguen empíricamente la cuestión. Menciona, por último, que está desarrollando el lenguaje Knox para experimentar con programas explícitos frente a breves.