Vientos de cambio en el desarrollo móvil: ¿Swift u Objective C?

Autor: | Última modificación: 15 de noviembre de 2022 | Tiempo de Lectura: 2 minutos
Temas en este post: ,

Desde que Apple anunció el año pasado su nuevo lenguaje de programación llamado Swift (que significa golondrina y también rápido y ágil) han llovido ríos de tinta sobre el mismo. A los más viejos del lugar, nos recuerda mucho la “marea Java” que recorrió nuestra industria hace ya algunos años. Pase lo que pase con Swift, está claro que está entre nosotros para quedarse y para rato. Entonces, ¿Swift u Objective C?

Swift u Objective C

Swift u Objective C

Swift es un lenguaje muy distinto (en muchos casos totalmente opuesto) a Objective-C, el lenguaje usado hasta ahora para desarrollo Mac e iOS. No es un sustituto, sino una alternativa:se puede desarrollar en ambos e incluso mezclarlos en un mismo proyecto.

Mientras que Objective-C es un lenguaje muy pequeño con una sintaxis peculiar, Swift es un lenguaje muy grande con una sintaxis más habitual. Tiene muchos conceptos que están de moda en lenguajes que se están desarrollando en estos momentos (como es Rust de Mozilla o Scala) y otros que están pasando por un “lifting” como es el caso de Java 9 y C++ 11. Para muestra un botón: genéricos, “interfaces” (aquí llamados protocolos), tipado estricto, tuplas, reconocimiento de patrones, “associated types” para protocolos genéricos, Optionals (mecanismo para “ocultar” referencias nulas). Swift tiene una clarísima influencia de C++ y Haskell en su diseño y se nota que sus creadores son usuarios de dichos lenguajes.

swiftEs un lenguaje de cara más familiar que Objective-C, pero también muchísimo mayor y más complejo. Aquí hay que tener cuidado y no crear falsas expectativas de sencillez en base a los mensajes de Apple respecto a su nuevo lenguaje.

Mientras dominar Objective-C requería, como mucho, un par de semanas, dominar de verdad el nuevo pájaro de Cupertino implicará meses de trabajo con él, incluso para desarrolladores iOS ya experimentados.

La ventaja de estos últimos es que no tienen que volver a la casilla de salida, como en el Juego de la Oca. Por supuesto que todo el conocimiento acumulado sigue siendo válido, y todo lo que tienen que hacer es aprender cómo mapear su sabiduría de Objective C a Swift (delegados en Swift, inicializadores designados y de conveniencia, Core Data, GCD, etc) y dedicar tiempo a estudiar desde cero solo aquellos conceptos que de verdad son nuevos.

Swift es además un lenguaje con una filosofía totalmente opuesta a la de Objetive-C. Mientras éste es dinámico, como Ruby o Python, Swift es furiosamente estático, como C++ o Java.

Esto nos lleva a la pregunta del millón: ¿por qué? ¿Por qué Apple crea un lenguaje totalmente distinto del que lleva usando desde hace tantos años y con el que ha cosechado tantos éxitos? En mi opinión hay dos razones de peso, y tienen que ver, no con el pasado, sino con el futuro que quiere labrarse la empresa de Cupertino, pero eso ya lo trataremos en la siguiente entrada.