Utilizamos cookies propias y de terceros para el correcto funcionamiento del sitio web, y si nos da su consentimiento, también utilizaremos cookies para recopilar datos de sus visitas para obtener estadísticas agregadas para mejorar nuestros servicios.

Objective-C y los inicios de la programación para iOS

La entrada de las stores de aplicaciones supuso una explosión de programadores para estas. El primer kit de desarrollo para aplicaciones iOS surgió en 2008. Utilizaba el lenguaje de programación Objective-C.

Objective-C fue adoptado por Apple para el desarrollo de aplicaciones en OS X y rescatado por Steve Jobs durante su etapa en NeXT. Hasta ese momento, la presencia de Objective-C era meramente anecdótica así como el desarrollo con Xcode (IDE propio de Apple para desarrollos).

En aquel momento, la gestión de memoria era completamente manual, la sintaxis como lenguaje era demasiado explícita y larga. Además, probablemente el punto más negativo de caras al usuario, era que la estructura daba problemas de programación que desembocaban en muchos errores inesperados.

Muchos desarrolladores utilizaban librerías de Java y de C++ sin profundizar ni pelearse con los elemento propios del sistema.

Con la entrada del kit de desarrollo iPhone OS (que más tarde pasó a llamarse iOS), Apple introdujo muchas mejoras en el lenguaje. Son ejemplos la reducción de escritura de los programas y la incorporación d’ARC (Automatic Reference Counting), un sistema automático de gestión de memoria que permetía olvidarse de ir liberando los elementos que ya no interesaban.

Apple también ha ido mejorando su IDE añadiendo nuevas funcionalidades y librerías para enriquecer las posibilidades de iOS y Objective-C. A pesar de eso, estadísticamente, las aplicaciones de iOS eran menos estables que las de Android. Esto no quiere decir que las aplicaciones de Android fueran mejores, únicamente que el lenguaje de programación que se utilizaba para el desarrollo de aplicaciones para Android (Java) era más seguro delante de errores de programación.

Al desarrollar un programa, se tiene que ir con cuidado para no cometer errores. En especial, hay que evitar errores que provocan que nuestra aplicación se cierre inesperadamente. Con tal de arreglar esto, un programador tiene que seguir unas buenas prácticas y una ordenación de su código para intentar errar lo menos posible. No todo el mundo aplica estas metodologías. Cuando un lenguaje no prevee errores como estos al desarrollador, aparecerán cuando se llegue a ellos, no antes. Probablemente ya será demasiado tarde y la aplicación habrá caído.

El gran problema de Objective-C es que delega la mayor parte del trabajo al programador, otorgándole así la responsabilidad de control de errores a la hora de programar, forzando que sea metódico en su trabajo. A la hora de codificar el programa (cuando las líneas de código se convierten en código máquina para que lo entienda el hardware), no se pasan suficientes controles para detectar los problemas que llegarán en fase de ejecución.

Apple necesitaba arreglar este punto. La solución se presentó el pasado 2014 en la conferencia anual de desarrolladores de Apple. Llegaba Swift.

Captura de pantalla durante desarrollo con Swift

Swift

Swift parte de la idea de crear un lenguaje moderno, seguro y superior a Objective-C, donde se trasladen al momento de codificación y compilación la mayoría de errores que antes no estaban controlados.

Punteros vacíos, desbordamientos de buffers, variables no utilizadas, referencias ambiguas, etc. Todos los errores que un programador podía provocar en Objective-C pasan a manos del lenguaje con Swift, dando mucha parte de la responsabilidad al lenguaje y a su procesamiento para pasarlo a código máquina.

Por otra parte, Swift incorpora todos los elementos de un lenguaje moderno que permite identificar dónde y por qué está fallando el código. Donde el rendimiento y la optimización del lenguaje van un paso más allá, donde Objective-C no podía llegar, a través de un alivio de la compilación con nuevos flujos de programación como los genéricos y la programación funcional.

Porque cuando una cosa no puede evolucionar es mejor empezar desde cero y partir de las bases, para poder tener unos desarrollos más eficientes y seguros. Así Apple lo hizo con su lenguaje de programación.

Apple define Swift como un lenguaje moderno y flexible que introduce nuevos conceptos de programación aparecidos últimamente en muchos otros lenguajes como Phyton o Ruby y otros más antiguos y complejos como Haskell. También se define como una mezcla de C y Objective-C pero sin restricciones de compatibilidad con C.

Swift es un lenguaje creado a base de lenguajes de escripting con la potencia de un alto nivel que utiliza herramientas como los genéricos, opcionales, estructuras, tuples, programación funcional y más. Un lenguaje que a finales de este año pasará a ser de código abierto y, se supone, que también tendrá compiladores para sistemas Linux que facilitarán la expansión del mismo.

Swift es más potente y ligero que Objective-C que, a diferencia de este, es una super clase de C y eso hace que tenga menos capas de compilación y no reste tanto al rendimineto, donde se aumenta la calidad del código que se genera y, posteriormente, se tiene que ejecutar en la máquina o en el código intermedio.

Swift se posiciona en una posición intermedia entre los lenguajes más ligeros como Ruby, Phyton o Lua, donde son productivos pero a la vez poco eficientes por la cantidad de capas de compilación que requieren (están diseñados para trabajar a un alto nivel). Y entre los otros más potentes como Objective-C, C# y Java, que están más cerca del código máquina pero que, por contra, requieren más código, componentes y son más complejos a la hora de conseguir los resultados que se requieren.

Swift se encuentra en un punto intermedio ya que se caracteriza por asimilarse a un lenguaje de escripting pero, a la vez, se encuentra muy cerca del código máquina, disfrutando así de las características de los dos grupos pero sin llevarse los inconvenientes.

Captura de pantalla durante desarrollo con Swift

Desarrollar en Swift

Un desarrollo en Swift mejora el rendimiento y lo posiciona en una zona donde el lenguaje evoluciona y mejora con un código de más calidad evitando caídas y errores inesperados.

En un principio Swift puede ser difícil de entender ya que parece más críptico aunque es menos semántico que Objective-C y, una vez acostumbrados a la sintaxis, es mucho más óptimo para trabajar. Además, nos proporciona muchas posibilidades a través de las nuevas estructuras sacadas de otros lenguajes y nos permite olvidarnos de muchos elementos que se auto gestionan pudiendo llegar así a cotas que no se podían alcanzar hasta ahora.

Swift tiene muchos detalles que hacen que el software sea más seguro, como las variables de opcionales para evitar valores vacíos, la obligación de inicializar variables o contemplar todas las posibilidades del flujo de nuestro programa.

Todo esto implica más seguridad en el desarrollo y más garantías de calidad y facilidad, ya que muchos de los problemas se trasladan al lenguaje ahorrando mucho tiempo al programador.

No se debe olvidar que en un desarrollo en Swift podemos utilizar las librerías y clases que solemos utilizar y se encuentran en Objective-C. Paso a paso, Apple está migrando todas sus librerías a Swift haciéndolas, a la vez, más seguras y ágiles. Además, Objective-C ha mejorado con la salida de Swift adoptando la idea de las variables no-nulles o los genéricos.

Apple está apostando todas las cartas a Swift para poder ir un paso más allá en el mundo de la programación y el desarrollo de software.