Brad Cox, creador de Objective-C, In Memoriam

La generación sin abuelos

Hace relativamente poco, oí hablar de la que empiezan a llamar “la generación sin abuelos”.  Una víctima más de la tragedia que estamos viviendo, más allá de aquellos cuya vida se está llevando por delante el COVID, son aquellos niños que se están viendo privados antes de tiempo, de la compañía de sus abuelos. 

Además de ésta, parece ser que habrá otra generación también marcada por la pandemia: la generación sin ídolos. Cada vez son más los grandes profesionales que nos van dejando y en este caso, ha tocado Brad Cox, uno de los programadores más influyentes del final del siglo pasado y del siglo XXI.

La píldora roja del pueblo

Cuando Alan Kay creó el concepto e incluso acuñó el término “Programación Orientada a Objetos”, salieron al mercado algunos pocos entornos y lenguajes que representaban de forma fiel la ideas de Kay, como por ejemplo Smalltalk o CLOS.  

También surgieron otras implementaciones, aunque a menudo no tenían casi nada que ver con lo que había ideado Alan Kay, excepto en cierta terminología. Eran las “píldoras azules”.

I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.
Alan Kay

 

Las píldoras azules te convencen que lo nuevo es igual a lo antiguo, que no es necesario cambiar nada, y lo que es peor, que no ganas nada con adoptar nuevas ideas. Sigue feliz, y produciendo electricidad para las máquinas. Duerme, Neo.

Las píldoras rojas ya mencionadas, tenían una enorme barrera de acceso: eran caras de cojones. Por si fuera poco, con frecuencia se ejecutaban sobre hardware específico, escaso y caro de conseguir. Así no hay quien despierte, Morfeo.

Brad Cox cambió precisamente eso. Su libro que describe Objective-C (por aquel entonces era un pre-procesador), se publicó en 1986. Como referencia, ¡GCC salió al mercado en 1987! 

Objective-C implementa de forma brillante y muy eficiente, las ideas clave de Alan Kay en su concepto de OOP: todo son mensajes. 

“OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.”

~ Alan Kay

 Es decir, para el inventor de la OOP, ésta consiste exclusivamente en:

  • Intercambio de mensajes
  • Encapsulación
  • “Late-binding”

Brad Cox, con Objective-C, nos proporcionó una píldora roja para las masas: todo aquél que tuviese un compilador de C, podría aventurarse por la elegante y sencilla senda que era la OOP original.

La Web, las Apps, los FPS y mucho más, hasta el M1

Armados de este “arma elegante, para tiempos más civilizados”, los programadores más brillantes de la época no se hicieron de rogar. Usando la obra de Brad Cox, crearon entre otras cosas:

  • La Web: el primer browser y el primer servidor de http fueron creados por Tim Berners Lee en Objective-C.
  • NeXT y NeXTSTEP: Steve Jobs seleccionó la tecnología creada por Brad Cox para su empresa NeXT y terminó comprando la empresa de Cox. Esto fue la base de prácticamente toda la tecnología de Apple actual.
  • Los FPS (first person shooters): DOOM fue creado en ordenadores NeXT, usando las tecnologías que Cox había impulsado.
  • macOS, iOS y la revolución de las Apps

Lo cierto es que como currículo, no está demasiado mal.

Aunque Apple hoy da más énfasis a Swift, el espíritu de Cox sigue deambulando por todos los macs, iPhones y Apple Watches. Swift usa el runtime de Objective-C y el 90% de todo el código de Apple está hecho en dicho lenguaje.

 

Fantasmas de la Fuerza

Si usas alguna tecnología de Apple, o la web, el espiritu de Cox estará contigo… siempre.

 

Su legado está presente incluso en los nuevos procesadores M1 de Apple. Una de las razones por las cuales resulta tan eficiente al ejecutar código de Apple, es que tiene rutas especialmente optimizadas para una función en concreto: objc_msgSend(). Esa es la función que se encarga, dentro del runtime de Objective-C, de ¡enviar los mensajes de los que hablaba Alan Kay!

Hay otro último legado, vital para mi y todos los que formamos la comunidad de KeepCoding. KeepCoding nació precisamente cuando yo empecé a dar clases de Objective-C.

Soy Brad Cox, encantado

Los que lo conocieron, dicen que era una persona muy sencilla, y se demuestra en una anécdota encantadora de uno de sus muchos viajes a Belice. Al parecer, era muy aficionado al submarinismo, y acudía con frecuencia a dicho país con su esposa. Al regresar al hotel de una inmersión, se puso a charlar con una pareja de alemanes que volvían en el mismo barco. Le preguntó al alemán a qué se dedicaba, y éste contestó que era desarrollador de iOS y que había hecho tal y cual Apps.

Pues yo también soy programador, dijo Brad. Cuando el otro le preguntó “qué había hecho”, éste contestó: Objetive-C.

Tomándolo por un embustero, el alemán dijo, ¡anda ya, eso lo hizo Brad Cox!

Sin pensarlo dos veces, extendió la mano y con una sonrisa, le dijo: “yo soy Brad Cox, encantado de conocerte”.

En fin Brad, ha sido un honor frecuentar tu templo de sabiduría. Encantado y ¡hasta siempre!

 

 

Acerca de Fernando Rodriguez

Fundador & Editor Jefe de justcodeit, Fernando Rodríguez (@frr149 & Linkedin) es desarrollador & un experto en la enseñanza de máxima calidad en programación y desarrollo para dispositivos iOS, Cocoa Touch, Objective C, Swift, Python, entre otros, aunque su mejor carta de presentación, es la opinión de sus alumnos: http://keepcoding.io/es/testimonio/ CLO en KeepCoding & Arunovo. Instructor de iOS Avanzado del Big Nerd Ranch. Profesor Asociado de la U-tad, autor invitado de revistas como iPhoneWorld, Applesfera.com & ponente habitual en conferencias dentro y fuera de España (iOSDevUK, CodeMotion, BCNDevCon, etc). En sus vidas anteriores fue un nerd de Python y Django, mago de Smalltalk, y para su pesar, galeote de C++ y un gran cocinero.

Share this:

Leave a comment