Descripción
Originalmente, me acerqué a Java como “simplemente otro lenguaje de programación”, que en muchos sentidos lo es. Pero a medida que pasó el tiempo y lo estudié más profundamente, comencé a ver que la intención fundamental de este idioma era diferente de otros idiomas que había visto hasta ese momento. La programación se trata de gestionar la complejidad: la complejidad del problema que desea resolver, sobre la complejidad de la máquina en la que se resuelve. Debido a esta complejidad, la mayoría de nuestros proyectos de programación fallan. Y, sin embargo, de todos los lenguajes de programación que conozco, casi ninguno ha hecho todo lo posible y decidió que su principal objetivo de diseño sería conquistar la complejidad de desarrollar y mantener programas.
1 Por supuesto, muchas decisiones de diseño de lenguajes se tomaron con en mente la complejidad, pero en algún momento siempre había otros temas que se consideraban esenciales para ser agregados a la mezcla. Inevitablemente, esos otros problemas son los que hacen que los programadores eventualmente “toquen la pared” con ese lenguaje. Por ejemplo, C++ tenía que ser compatible con versiones anteriores de C $para permitir una migración fácil para los programadores de C$, además de ser eficiente. Ambos son objetivos muy útiles y explican gran parte del éxito de C++, pero también exponen una complejidad adicional que impide que se terminen algunos proyectos $ciertamente, puede culpar a los programadores y a la gerencia, pero si un lenguaje puede ayudarlo a detectar sus errores, ¿por qué no debería?$. Como otro ejemplo, Visual BASIC $VB$ estaba vinculado a BASIC, que en realidad no estaba diseñado para ser un lenguaje extensible, por lo que todas las extensiones acumuladas en VB han producido una sintaxis verdaderamente imposible de mantener. Perl es compatible con versiones anteriores de awk, sed, grep y otras herramientas de Unix que debía reemplazar y, como resultado, a menudo se le acusa de producir “código de solo escritura” $es decir, después de un tiempo no puede leer él$.
Por otro lado, C++, VB, Perl y otros lenguajes como Smalltalk tuvieron algunos de sus esfuerzos de diseño centrados en el problema de la complejidad y, como resultado, tienen un éxito notable en la resolución de ciertos tipos de problemas. Lo que más me impresionó a medida que llegué a entender Java es que en algún lugar de la combinación de los objetivos de diseño de Sun, parece que había una meta de reducir la complejidad para el programador. Como si dijera: “Nos preocupamos por reducir el tiempo y la dificultad de producir un código robusto”.
En los primeros días, este objetivo dio como resultado un código que no se ejecutaba muy rápido $aunque esto ha mejorado con el tiempo$, pero de hecho ha producido reducciones asombrosas en el tiempo de desarrollo: la mitad o menos del tiempo que lleva crear un equivalente. Programa C++. Este resultado por sí solo puede ahorrar cantidades increíbles de tiempo y dinero, pero Java no se detiene ahí. Continúa envolviendo muchas de las tareas complejas que se han vuelto importantes, como los subprocesos múltiples y la programación de redes, en funciones de lenguaje o bibliotecas que a veces pueden facilitar esas tareas. Y, por último, aborda algunos problemas de gran complejidad: programas multiplataforma, cambios dinámicos de código e incluso seguridad, cada uno de los cuales puede encajar en su espectro de complejidad desde “impedimento” hasta “espectáculo”. Entonces, a pesar de los problemas de rendimiento que hemos visto, la promesa de Java es enorme: puede convertirnos en programadores significativamente más productivos.
En todos los sentidos: creando los programas, trabajando en equipos, creando interfaces de usuario para comunicarse con el usuario, ejecutando los programas en diferentes tipos de máquinas y escribiendo fácilmente programas que se comunican a través de Internet, Java, aumenta el ancho de banda de comunicación entre las personas. Creo que los resultados de la revolución de las comunicaciones pueden no verse en los efectos de mover grandes cantidades de bits. Veremos la verdadera revolución porque todos nos comunicaremos más fácilmente: uno a uno, pero también en grupos y como planeta. He oído sugerir que la próxima revolución es la formación de una especie de mente global. Eso resulta de suficientes personas y suficiente interconexión. Java puede ser o no la herramienta que fomente esa revolución, pero al menos la posibilidad me ha hecho sentir que estoy haciendo algo significativo al intentar enseñar el lenguaje.
¿Qué piensas de este libro?
No hay comentarios