Java 8
Java comenzó en 1995 como un lenguaje orientado a objetos limpio y simple con recolección de basura. Era un buen software reaccionario, diseñado antes de que la programación moderna arruinara el software. Java fue una gran mejora sobre C++ y comencé a usar Java desde el principio.
Java pasó por muchas versiones. La última adición útil fue en 2006, después de lo cual solo declinó. La última versión utilizable fue Java 8 en 2014. Después de esto, Java fue totalmente arruinado por los programadores modernos y se volvió completamente inutilizable. Así que sugiero usar Java 8.
Aquí está la historia de Java copiada de aquí:
- Java 1.0 fue lanzado en 1995.
- Java 1.1 (1997) agregó reflexión, lo cual fue bueno. También agregó clases internas que tenían problemas como discutí aquí.
- Java 1.2 (1998) no cambió el lenguaje.
- Java 1.4 (2002) agregó "assert" que es inofensivo aunque no lo uso.
-
Java 1.5 (2004) agregó muchas características.
- Agregó genéricos que son un desastre horrible. Se necesitaba alguna solución para los genéricos, pero este desastre sobrecomplicado no era la solución correcta. Para ser honesto, no he pensado cómo debería hacerse esto. Pero incluso el enfoque de C++ es mejor que los genéricos de Java. Mi sugerencia es usar genéricos solo cuando sea indoloro. Tan pronto como surja alguna complicación, simplemente abandona los genéricos en lugar de luchar para resolver las cosas.
- Agregó anotaciones. Esto es inofensivo y puede ser ignorado. He jugado con ello pero nunca encontré una necesidad real para ello.
- Agregó autoboxing. No me gusta esto en teoría, pero en la práctica parece inofensivo. Lo uso.
- Agregó enumeraciones. Esto no es tan malo pero apenas lo uso.
- Agregó varargs. Esta es una buena característica.
- Agregó el bucle for-each. Esta es una buena característica.
- Agregó importaciones estáticas. Esta es puramente una mala característica. No hace nada más que reducir la legibilidad y nunca debería usarse.
- Java 1.6 (2006) agregó la API del compilador. Esta es una buena característica y la uso para compilar Luan.
- Java 1.7 (2011) no tuvo cambios significativos en el lenguaje.
- Java 1.8 (2014) agregó expresiones lambda que son un horror completo. Nunca las he usado. Son básicamente pseudo-closures depravadas implementadas como clases internas anónimas rotas. Además de sufrir todos los defectos de las clases internas, son sintácticamente horribles e ilegibles. Y no encajan conceptualmente en Java en absoluto.
Había leído sobre versiones posteriores de Java y sabía que solo estaba empeorando. Por ejemplo, la inferencia de tipo de variable local es una idea horrible. Pero cuando finalmente intenté usar Java 11, fue mucho peor de lo que esperaba. Agregaron una nueva característica horrible Módulos de Java que no solo hizo Java muy complicado, sino que también rompió completamente la compatibilidad hacia atrás, por lo que esta característica no puede simplemente ser ignorada. Puedes encontrar toda la historia aquí. Este cambio en Java fue tan horrible que incluso algunos programadores modernos se quejaron. El resultado final es que nunca usaré una versión de Java más allá de Java 8, y Luan requiere Java 8.
Esta historia de la destrucción de Java por programadores modernos se aplica a todos los proyectos que están siendo mantenidos por programadores modernos. Los programadores modernos solo pueden empeorar el software, por lo que nunca se debe actualizar ningún software que esté siendo mantenido por programadores modernos. En el caso de Java, sugiero quedarse con Java 8.