Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=89e786b6-31ba-49a5-8f82-a9fef443b267

Swift vs Objective-C: 5 preguntas indispensables para aprender a programar para iOS

Swift es el nuevo lenguaje de Apple, llamado a sustituir al vetusto Objective-C en el que se han basado históricamente todos los desarrollos para iPhone/IPad y Mac OS X. Se lanzó oficialmente durante el verano de 2014, o sea, ya hace casi dos años, pero sigue siendo el "nuevo" y todavía quedan dudas sobre todo lo que lo rodea, especialmente si vas a iniciarte en la programación para iPhone/iPad o Mac OS X.

Swift-vs-ObjectiveC

En este artículo vamos a tratar de contestar a las dudas más habituales para ayudarte a comparar mejor ambos lenguajes y a tomar decisiones respecto a su aprendizaje.

¡Vamos allá!

1.- Estoy empezando a programar para iOS, ¿debo aprender solo uno de los dos lenguajes o ambos?

Bueno, como casi siempre, la respuesta depende de muchos factores, pero principalmente de qué tipo de desarrollos esperes realizar en el futuro:

  1. Si eres un desarrollador freelance y vas a empezar ahora a trabajar creando tus propias aplicaciones desde cero, entonces aprender solamente Swift puede ser una opción. El motivo es que al no tener aplicaciones antiguas que mantener puedes permitirte el lujo de trabajar solamente con el nuevo lenguaje, despreocupándote del código heredado.
  2. Si vas a trabajar para una empresa (o varias), entonces es casi indispensable que aprendas ambos lenguajes. salvo que tengas la suerte de que te toque una empresa que empieza de cero el desarrollo, lo normal será que exista mucho código anterior escrito en Objective-C y que no sea fácil (ni incluso viable) migrarlo a Swift. Si no sabes Objective-C tienes un handicap respecto a otros desarrolladores. Además, incluso aunque tu nueva empresa parta de cero, es más que probable que no te quedes en ella toda la vida, y la siguiente es muy probable tenga código heredado.

En cualquier caso, y sea cual sea tu circunstancia o la idea que tengas, aprender Swift es indispensable, pero aprender Objective-C es más que recomendable porque tarde o temprano tendrás que pelearte con él, puesto que existen miles de bibliotecas y código abierto que solo existe en este lenguaje. De hecho la propia base del desarrollo para iOS y Mac, Cocoa, está escrito en Objective-C, y es útil conocer algunos de sus conceptos para entender mejor su funcionamiento cuando programes en Swift.

En unos cuantos años sí que es probable que, finalmente, puedas prescindir de Objective-C y usar solamente Swift. Hoy por hoy todavía es complicado.

2.- ¿Cuál es más fácil de aprender?

Aquí se da frecuentemente una confusión de dos conceptos que no tienen nada que ver: una cosa es que Swift sea más fácil de escribir y de leer, y otra muy diferente que sea más fácil de aprender.

De hecho hay mucha gente que opina todo lo contrario al saber popular: que Objective-C es más fácil de aprender que Swift.

En primer lugar, Objective-C no es más que una extensión de C, que es uno de los lenguajes más utilizados del mundo y mucha gente ya conoce. En ese sentido saltar de C a Objective-C debería ser bastante sencillo a pesar de sus "cosas".

Incluso aunque partas de cero, si lo comparamos con Swift, este último tiene muchas más construcciones y reglas "esotéricas" específicas que debes aprender que en el caso del antiguo lenguaje. Por ejemplo todo lo relacionado con los valores opcionales y el uso de ? y ! para indicar tus intenciones respecto a éstos. O los propios genéricos, que si bien son muy potentes y permiten hacer cosas interesantes, son más complejos de entender que algunos conceptos de Objective-C y hacen a Swift más complicado de aprender.

Otro punto a favor de Objective-C es que Apple tuvo que crear muchos conceptos de Swift pensando en Objective-C para que pudieran interoperar. Por eso muchas cosas, desde los objetos, la herencia, las referencias fuertes y débiles... están creados a imagen y semejanza de Objective-C, por lo que no te quedará más remedio que aprenderlo un poco aunque no quieras.

Objective-C obliga a los programadores a ser más explícitos respecto a lo que quieren hacer en muchas ocasiones.  Esto puede parecer malo y que dificulta el aprendizaje, pero en realidad no es así. En Swift se delegan muchas cosas al compilador y esto hace que el código sea más limpio, pero que sea necesario conocer a fondo el contexto en el que se está ejecutando para entender las implicaciones. Y esto es más difícil de aprender. Se puede ver fácilmente con un ejemplo real: las matrices. En Objective-C puedes definir un NSArray cuando no quieres modificar sus contenidos, y un NSMutableArray si tienes intención de añadir, quitar o modificar elementos más adelante. En el primer caso se producirá un error si intentas modificar la matriz, y en el segundo caso la intención está clara a partir del nombre, por lo que es mucho más sencillo y menos propenso a errores. En el caso de Swift la cosa cambia bastante. Puedes declarar una matriz con let (inmutable) o con var (mutable), pero incluso en el primer caso te permitirá cambiar el contenido de la matriz mientras no la redimensiones. Es decir, aunque en teoría es inmutable porque la declaras con let, en la práctica puedes cambiar sus contenidos porque son referencias. En Objective-C las intenciones son más claras.

En definitiva, es cierto que Objective-C es un lenguaje más "duro" de escribir y de leer que Swift, que es mucho más agradable. Pero eso no quiere decir que sea más complicado de aprender, sino incluso puede significar justo lo contrario.

3.- Ya sé Objective-C. Si ahora quiero aprender Swift ¿tengo que partir de cero?

En absoluto. Si ya sabes Objective-C significa que ya sabes también Cocoa y/o Cocoa Touch, así como XCode, y por lo tanto tienes mucho camino andado.

La parte más grande y complicada de aprender a programar aplicaciones para iOS o Mac OS X, es sin duda conocer los cientos (o miles) de APIs y bibliotecas específicas que existen y el manejo de XCode. Así que si esa parte la tienes cubierta solo te queda aprender el lenguaje. Éste tiene sus conceptos y técnicas particulares, además de una sintaxis muy diferente a Objective-C, pero tienes mucho camino ya andado.

Una vez que domines los conceptos básicos y te acostumbres a escribir con la sintaxis de Swift, ya no habrá vuelta atrás. Y podrás aprovechar casi todo lo que ya sabes.

4.- ¿Hay cosas que se puedan hacer en Objective-C que no se puedan hacer en Swift, y viceversa?

Pues sí; en ambos casos, lo cual refuerza la tesis de que es bueno conocer los dos lenguajes.

Por ejemplo, Swift tiene muchas cosas nuevas que no existían en Objective-C o no se podían hacer fácilmente, como: genéricos, tuplas, inferencia de tipos, espacios de nombres, parámetros opcionales...

Pero Objective-C tiene algunas cosas específicas que no hay en Swift, como la potente capacidad de reflexión que tiene este lenguaje, la posibilidad de enviar mensajes a nil, enlazar y embeber código escrito en C, declarar y exponer estructuras C...

Aunque es cierto que algunas de estas cuestiones son algo esotéricas y no tendrán importancia en el día a día, disponer de un conjunto de herramientas más amplio siempre es recomendable.

Es interesante consultar la guía de Apple para interoperatividad entre Swift y Cocoa y Objective-C.

5.- ¿Con qué lenguaje me quedo para trabajar?

De entrada, como se deduce de todo lo anterior, lo recomendable sería que aprendieras los dos. De hecho aprendiendo primero Objective-C y en paralelo las APIs más importantes, pasar a Swift te resultará mucho más fácil.

Ahora bien, a la hora de escoger tu lenguaje principal en el que trabajar, sin duda debería ser Swift por muchos motivos, entre los que destacan los siguientes:

  • Es más sencillo de escribir y de leer, y el código es más escueto.
  • Es más fácil de mantener.
  • Es más seguro para desarrollar, ya que oculta mucha complejidad y gestiona la memoria de manera automática.
  • Tus aplicaciones se ejecutarán más rápido. Al no tener que depender de ciertas cuestiones heredades de C, Apple ha optimizado mucho el lenguaje y el compilador pudiendo ganar rendimiento en casi todos los casos.
  • Swift permite evolucionar las aplicaciones más rápido ya que soporta bibliotecas dinámicas.
  • Es más fácil hacer pruebas, gracias a los Playgrounds.

Esperamos que estas preguntas y sus respuestas te ayuden a la hora de decidirte por uno u otro lenguaje (o mejor, por los dos). Y recuerda que si quieres aprender de verdad a programar para iOS, tenemos el curso que necesitas.

Fecha de publicación:
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Alberto Llaguno
Alberto Llaguno

Tal vez me podrían ayudar, no he podido encontrar la manera mas idónea de convertir a texto legible, a través de los OCR tanto de google como de microsoft para poder reconocer de manera coherente lo que está escrito en una factura de compra. Sé que se puede porque vi el software de una empresa española que hace exactamente eso e indica que tiene un porcentaje de más del 90% de acierto en el texto reconocido. Tengo desarrollado un software que requiere de la información leída para evitar la digitación y poder hacer cálculos  con los valores reconocidos, si alguien me puede ayudar a encontrar el recurso o la empresa que me pueda proveer estaré muy agradecido por la información. Gracias

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.