Joshua Bloch

Joshua Bloch: La conciencia de la plataforma Java

"El lenguaje de programación Java ha agotado su presupuesto de complejidad con los cambios introducidos en la versión 5.0". Es una frase sorprendente, sobre todo por quién la dijo. Joshua Bloch pasó años en Sun Microsystems diseñando las adiciones en cuestión, y la versión JDK 5.0 que ayudó a dar forma fue la expansión más ambiciosa que jamás haya tenido el lenguaje. Luego le dijo al mundo que era suficiente. Ese instinto —de vigilar un sistema que él mismo había ampliado, y de pensar en presupuestos en lugar de características— es todo él en una sola línea.

Southampton, Columbia, Pittsburgh

Bloch nació el 28 de agosto de 1961 en Southampton, Nueva York. Obtuvo una licenciatura en informática en la Escuela de Ingeniería y Ciencias Aplicadas de la Universidad de Columbia, y luego fue a Carnegie Mellon para realizar un doctorado, que completó en 1990. Su tesis, "Un enfoque práctico para la replicación de objetos de datos abstractos", fue nominada para el Premio ACM a la Disertación Doctoral Distinguida.

El título merece ser leído dos veces. Incluso como estudiante de posgrado, la palabra operativa en el trabajo de Bloch era práctico. No estaba atacando la replicación como un problema teórico en sistemas distribuidos; buscaba una versión que los ingenieros pudieran implementar realmente contra objetos de datos abstractos. Ha pasado el resto de su carrera en esa misma brecha estrecha y poco convencional entre lo que es demostrablemente correcto y lo que se puede confiar que use un programador en activo.

Sun y el Collections Framework

Después de un período en Transarc como diseñador senior de sistemas, Bloch se unió a Sun Microsystems, donde se convirtió en Ingeniero Distinguido y lideró el diseño y la implementación de varias de las piezas que hacen que Java sea reconociblemente Java. El Java Collections Framework es la mayor de ellas: el conjunto de interfaces e implementaciones —listas, conjuntos, mapas y los algoritmos que operan sobre ellos— sobre los que se ha construido cada programa Java desde entonces. También dirigió el paquete java.math y el mecanismo de aserción del lenguaje, e impulsó mejoras importantes en JDK 5.0.

Este es un tipo peculiar de autoría. Una biblioteca de colecciones no es una aplicación; es un vocabulario. Millones de programadores que nunca han oído el nombre de Bloch pasan sus vidas laborales dentro de los sustantivos y verbos que él eligió, y la forma de su pensamiento está limitada por la forma de sus interfaces. Hacerlo mal no habría producido un mal programa; habría producido un mal lenguaje para escribir programas, permanentemente.

LA PRUEBA GRATUITA
¿Cuánto es el tuyo?

Veinte preguntas, ocho minutos de reloj y un percentil medido frente a todos los que la han hecho. Sin registro.

Hacer la prueba de CI →

Effective Java

En 2001 publicó Effective Java, y logró algo que los libros sobre lenguajes de programación rara vez hacen: se convirtió en la autoridad moral de una comunidad. Estructurado como una serie numerada de elementos independientes, cada uno de los cuales establece una regla y luego la defiende a partir de modos de falla reales, ganó el premio Jolt en 2001. La segunda edición, en 2008, creció de cincuenta y siete elementos a setenta y ocho sin volverse más difícil de leer; una tercera llegó en 2017.

Escribió dos libros más con colaboradores. Java Puzzlers, con Neal Gafter en 2005, es una antología de las trampas del lenguaje —código que se comporta correctamente según la especificación e insensatamente según la intuición— presentado como un ejercicio de diagnóstico. Java Concurrency in Practice, en 2006, fue escrito con cinco colaboradores, incluido Doug Lea, y se convirtió en la referencia estándar sobre lo más difícil que la plataforma pide a sus usuarios.

Google y el diseño de API

Bloch fue el arquitecto jefe de Java de Google desde junio de 2004 hasta agosto de 2012. Fue allí donde su preocupación central cristalizó en un argumento público. Su artículo de conferencia de 2006, "Cómo diseñar una buena API y por qué es importante", trata el diseño de interfaces como una disciplina con riesgos en lugar de una cuestión de gusto, sobre la base de que una API es un contrato que no se puede renegociar. Describió la frustración de forma concreta: en Google no podía proporcionar implementaciones alternativas para ciertas clases porque se habían declarado como tipos concretos en lugar de interfaces —una decisión tomada años antes por otra persona, lo cual, como él dijo, es el tipo de limitación que "los desarrolladores comunes sienten todos los días".

Su consejo tiene un sabor constante: humildad sobre el propio juicio. No te repitas; busca una biblioteca establecida, particularmente para concurrencia, en lugar de escribir la tuya propia. Desconfía de la sensación de que las advertencias generales sobre la optimización prematura se aplican a otras personas —"es fácil sentir que las advertencias generales sobre la optimización prematura no se aplican a ti, porque simplemente sabes qué código es crítico en cuanto al tiempo". Y lee The Elements of Style, porque "la buena programación y la buena escritura tienen que ver con la claridad y la economía de expresión".

Por qué a Joshua se le llama genio

La facultad en cuestión no es la invención pura, sino algo más raro: la capacidad de ver una pieza de software desde la posición del extraño que tendrá que usarla, y diseñar para los errores probables de ese extraño en lugar de para la propia competencia. Una API, en el marco de Bloch, es un lenguaje impuesto a personas que nunca dieron su consentimiento y no pueden modificarlo, lo que hace que diseñar una sea un ejercicio de anticipación del mal uso a escala, décadas antes. El Collections Framework es la evidencia: un vocabulario utilizado por una enorme fracción de todos los programadores en activo, lo suficientemente correcto como para haber sobrevivido en gran medida sin cambios. La segunda pieza es la codificación: Effective Java tomó la experiencia tácita que antes solo vivía en las cabezas de unos pocos ingenieros de plataforma y la convirtió en reglas transferibles y discutibles.

El contraargumento merece ser expuesto. Bloch no produjo nueva ciencia informática. Su tesis fue nominada para un premio de disertación distinguida, no recibió uno; su trabajo más conocido es un libro de mejores prácticas, que es curaduría y juicio en lugar de descubrimiento. Los honores registrados son un premio de publicación comercial y una lista de revistas, no los principales premios de investigación del campo, y ninguna fuente consultada aquí registra a nadie llamándolo genio. El Collections Framework fue un gran esfuerzo de equipo que él lideró, no una composición en solitario. El veredicto justo es que Bloch es un practicante y maestro supremo del juicio de ingeniería —una disciplina que importa más que la novedad en el software y recibe mucho menos crédito.

Legado

Continuó dando forma al lenguaje después de dejar Sun, co-proponiendo bloques de Gestión Automática de Recursos y Expresiones de Creación de Instancias Concisas como enfoques para los cierres; los bloques ARM llegaron a JDK 7. En diciembre de 2004, el Java Developer's Journal lo nombró entre las cuarenta personas de software más importantes del mundo. Desde entonces ha regresado a Carnegie Mellon, donde es profesor de práctica en el Departamento de Sistemas de Software y Sociales —un título que se lee como un resumen de su carrera, ya que la práctica siempre fue el punto.

La medida del trabajo es que su influencia no se atribuye. En algún lugar hoy, un programador que nunca ha leído una línea de la prosa de Bloch buscará una interfaz en lugar de una clase concreta, o se negará a crear manualmente una primitiva de concurrencia, porque un colega una vez le dijo que no lo hiciera, después de haberlo leído en un elemento numerado de un libro.

Compara con los grandes

Adam Smith vs MichelangeloAristotle vs Variste GaloisCarl Friedrich Gauss vs Vincent Van GoghHenri Poincar vs Leonhard Euler
Ver el Ranking →Todas las comparaciones →

Niños prodigio

Shakuntala DeviShakuntala DeviMultiplied two 13-digit numbers in her head in 28 secondsJeremy ShulerCornell University at 12 — Reading at 21 Months, Top-Decile SAT…Akiane KramarikSelf-Taught Painter from Age 4 — Paintings Sold for Up to…Marko ČalasanWorld's Youngest Microsoft Certified Systems Engineer — Age 8…
Niños prodigio →

Juega y vuelve mañana

Desafío diario del genio · Brain teaser
A farmer has 17 sheep. All but 9 run away. How many are left?
Toca tu respuesta ↓
¿Qué genio eres? Test de CI gratis