Cover Image for Los encantos subjetivos de Objective-C.

Los encantos subjetivos de Objective-C.

El lenguaje de programación, que parecía ser una forma universal de comunicación, dejó de percibirse de esa manera.

Gottfried Leibniz, conocido por su invención del cálculo, las tablas actuariales y la calculadora mecánica, entre otras contribuciones, sentía que su labor no estaba completa. Desde su infancia, este polímata del siglo XVII anhelaba desarrollar lo que denominó una characteristica universalis: un idioma capaz de representar perfectamente todas las verdades científicas, facilitando así el descubrimiento de nuevas ideas mediante la simple acción de redactar oraciones gramaticalmente correctas. Este "alfabeto del pensamiento humano" debería eliminar la confusión y la falacia, y Leibniz se dedicó a esta tarea hasta su muerte.

Hoy en día, un eco de su ambición persiste en los lenguajes de programación. Aunque estos no abarcan la totalidad del universo físico y filosófico, se asemejan a su sueño al permitir un manejo de los ceros y unos que constituyen el estado interno de una computadora, una invención también atribuida a Leibniz. Los informáticos que osan crear nuevos lenguajes buscan su propia characteristica universalis, anhelando desarrollar un sistema tan expresivo que elimine cualquier posibilidad de errores, haciendo innecesarios los comentarios y las pruebas de unidad.

La expresividad de un lenguaje de programación es tanto una cuestión de gusto personal como de teoría de la información. Mi afición por ciertos lenguajes fue forjada por el primero que aprendí por mi cuenta: Objective-C. Definir Objective-C como un idioma con características divinas sería como afirmar que Shakespeare se aprecia mejor en pig latin. Este lenguaje es, en el mejor de los casos, polarizante. A menudo criticado por su verbosidad y sus extraños corchetes, se usa exclusivamente para aplicaciones de Mac y iPhone, y habría caído en el olvido en los años 90 de no ser por un giro inesperado en la historia. Sin embargo, durante mi tiempo como ingeniero de software en San Francisco a principios de la década de 2010, me vi en múltiples ocasiones debatiendo en bares o en la sección de comentarios de plataformas tecnológicas sobre sus elecciones de diseño más engorrosas.

Objective-C llegó a ser parte de mi vida en un momento crucial. Como estudiante a punto de graduarse, descubrí mi interés por la informática demasiado tarde para especializarme en ello. Veía a adolescentes superar mis conocimientos en clases de ingeniería de software, pero mi universidad no ofrecía cursos de desarrollo móvil. Así, encontré un nicho y aprendí Objective-C durante ese verano, guiado por una serie de libros con temática vaquera titulada The Big Nerd Ranch. Al escribir mi primer código y ver cómo iluminaba los píxeles en la pantalla de un dispositivo, me enamoré de Objective-C. Sentí que poseía el poder de expresarme sin límites y creía que podía crear cualquier cosa que imaginara.

Sin embargo, Objective-C surgió en los frenéticos días iniciales de la programación orientada a objetos, y, por muchos motivos, no debería haber sobrevivido a esa era. Durante los años 80, los proyectos de software crecieron demasiado para que una sola persona o un único equipo pudieran desarrollarlos en solitario. Para facilitar la colaboración, el científico Alan Kay desarrolló la programación orientada a objetos, un paradigma clasificando el código en "objetos" reutilizables que interactúan mediante "mensajes". En 1983, Tom Love y Brad Cox, ingenieros de International Telephone & Telegraph, combinaron este paradigma con la sintaxis legible del lenguaje C para crear Objective-C.

Los primeros años de mi experiencia con este lenguaje fueron fascinantes. Admiraba cómo los objetos y mensajes tomaban una estructura similar a oraciones, marcadas por corchetes como [self.timer increaseByNumberOfSeconds:60]. Sin embargo, con el tiempo, la naturaleza verbosa de Objective-C comenzó a reflejarse en mi propia perspectiva. ¿Cómo puede un ingeniero indicarle a una computadora qué hacer sin emplear un lenguaje extenso? Objective-C era, sin duda, prolijo; a medida que el código crecía, su estructura se volvía cada vez más confusa y propensa a errores.

A principio de 2014, Apple anunció Swift, un nuevo lenguaje que debía resolver los problemas que los desarrolladores de iPhone y Mac habían encontrado en Objective-C. Este nuevo lenguaje eliminó las características que más odiaban de su predecesor: los molestos corchetes y la necesidad de prefijos como “NS”. A pesar de mi desdén creciente por Objective-C, no me emocionaba la idea de aprender Swift, pues sabía que mi tiempo como ingeniero de software estaba llegando a su fin.

Al final, el esfuerzo por encontrar mi propia characteristica universalis continuó, aunque era evidente que siempre estaría inalcanzable, tal como le sucedió a Leibniz. Antes de dejar mi trabajo, un nuevo graduado en ciencias de la computación se unió a mi equipo y había pasado un verano aprendiendo Swift. Con entusiasmo, vio en este lenguaje una forma divina de expresión, limpia y efectiva.