Swift vs. Objective-C: 10 razones por las que el futuro favorece a Swift

los lenguajes de programación no mueren fácilmente, pero las tiendas de desarrollo que se aferran a paradigmas que se desvanecen sí lo hacen. Si está desarrollando aplicaciones para dispositivos móviles y no ha investigado Swift, tome nota: Swift no solo reemplazará a Objective-C cuando se trata de desarrollar aplicaciones Para Mac, iPhone, iPad, Apple Watch y dispositivos futuros, sino que también reemplazará a C para la programación integrada en plataformas Apple.,

Gracias a varias características clave, Swift tiene el potencial de convertirse en el lenguaje de programación de facto para crear aplicaciones inmersivas, receptivas y orientadas al consumidor en los próximos años.

Apple parece haber grandes objetivos para Swift. Ha optimizado el compilador para el rendimiento y el lenguaje para el desarrollo, y alude a que Swift está «diseñado para escalar de ‘Hola, mundo’ a todo un sistema operativo» en la documentación de Swift., Si bien Apple aún no ha establecido todos sus objetivos para el lenguaje, los lanzamientos de Xcode 6, Playgrounds y Swift juntos señalan la intención de Apple de hacer que el desarrollo de aplicaciones sea más fácil y más accesible que con cualquier otra cadena de herramientas de desarrollo.

Aquí hay 10 razones para salir adelante en el juego por empezar a trabajar con Swift ahora.

Swift es más fácil de leer

Objective-C sufre todas las verrugas que cabría esperar de un lenguaje construido en C., Para diferenciar las palabras clave y los tipos de los tipos C, Objective-C introdujo nuevas palabras clave utilizando el símbolo@. Debido a que Swift no está construido en C, puede unificar todas las palabras clave y eliminar los numerosos símbolos @ delante de cada tipo Objective-C u palabra clave relacionada con objetos.

Swift elimina las convenciones heredadas. Por lo tanto, ya no necesita punto y coma para terminar las líneas o paréntesis para rodear las expresiones condicionales dentro de las sentencias if/else. Otro gran cambio es que las llamadas a los métodos no se anidan entre sí, lo que resulta en el corchete hell—bye-bye, ]]., Las llamadas a métodos y funciones en Swift utilizan la lista estándar de parámetros separados por comas entre paréntesis. El resultado es un lenguaje más limpio y expresivo con una sintaxis y gramática simplificadas.

el Código Swift se parece más al Inglés natural, además de otros lenguajes de programación populares modernos. Esta legibilidad hace que sea más fácil para los programadores existentes de JavaScript, Java, Python, C# y c++ adoptar Swift en su cadena de herramientas, a diferencia del patito feo que era Objective—C.,

Swift es más fácil de mantener

Legacy es lo que retiene a Objective-C: el lenguaje no puede evolucionar sin que c evolucione. C requiere que los programadores mantengan dos archivos de código para mejorar el tiempo de compilación y la eficiencia de la creación de la aplicación ejecutable, un requisito que se transfiere a Objective-C.

Swift elimina el requisito de dos archivos. Xcode y el compilador LLVM pueden averiguar dependencias y realizar compilaciones incrementales automáticamente en Swift 1.2., Como resultado, la tarea repetitiva de separar la tabla de contenido (archivo de encabezado) del cuerpo (archivo de implementación) es cosa del pasado. Swift combina la cabecera Objective-C (.h) y archivos de implementación (.m) en un único archivo de código (.Swift).

El sistema de dos archivos de Objective-C impone trabajo adicional a los programadores—y es el trabajo que distrae a los programadores del panorama general., En Objective-C debe sincronizar manualmente los nombres de los métodos y los comentarios entre los archivos, con suerte utilizando una convención estándar, pero esto no está garantizado a menos que el equipo tenga reglas y revisiones de código en su lugar.

Xcode y el compilador LLVM pueden trabajar entre bastidores para reducir la carga de trabajo del programador. Con Swift, los programadores hacen menos contabilidad y pueden pasar más tiempo creando lógica de aplicaciones. Swift elimina el trabajo repetitivo y mejora la calidad del Código, los comentarios y las funciones compatibles.,

Swift es más seguro

Un aspecto interesante de Objective-C es la forma en que se manejan los punteros, en particular los punteros nulos. En Objective-C, no pasa nada si intenta llamar a un método con una variable puntero que es nil (no inicializada). La expresión o línea de código se convierte en una no-operation (no-op), y aunque puede parecer beneficioso que no se bloquee, ha sido una gran fuente de errores. Un no-op conduce a un comportamiento impredecible, que es el enemigo de los programadores que tratan de encontrar y corregir un accidente aleatorio o detener el comportamiento errático.,

Los tipos opcionales hacen que la posibilidad de un valor opcional nil sea muy clara en el Código Swift, lo que significa que puede generar un error del compilador al escribir código incorrecto. Esto crea un bucle de retroalimentación corto y permite a los programadores codificar con intención. Los problemas se pueden solucionar a medida que se escribe el código, lo que reduce en gran medida la cantidad de tiempo y dinero que gastará en corregir errores relacionados con la lógica de puntero de Objective-C.,

tradicionalmente, en Objective-C, si un valor era devuelto por un método, era responsabilidad del programador documentar el comportamiento de la variable puntero devuelta (usando comentarios y convenciones de nomenclatura de métodos). En Swift, los tipos opcionales y los tipos de valor dejan explícitamente claro en la definición del método si el valor existe o si tiene el potencial de ser opcional (es decir, el valor puede existir o puede ser nulo).

para proporcionar un comportamiento predecible Swift desencadena un bloqueo en tiempo de ejecución si se utiliza una variable opcional nil., Este bloqueo proporciona un comportamiento consistente, lo que facilita el proceso de corrección de errores porque obliga al programador a solucionar el problema de inmediato. El bloqueo de Swift runtime se detendrá en la línea de código donde se haya utilizado una variable opcional nil. Esto significa que el error se solucionará antes o se evitará por completo en el Código Swift.

Swift está unificado con gestión de memoria

Swift unifica el lenguaje de una manera que Objective-C nunca ha tenido. El soporte para el conteo automático de referencias (ARC) está completo en todas las rutas de código de procedimiento y orientadas a objetos., En Objective-C, ARC es compatible con las API de Cocoa y el código orientado a objetos; sin embargo, no está disponible para el código C procedimental y las API como Core Graphics. Esto significa que es responsabilidad del programador manejar la administración de memoria cuando se trabaja con las API de gráficos principales y otras API de bajo nivel disponibles en iOS. Las enormes fugas de memoria que un programador puede tener en Objective-C son imposibles en Swift.

un programador no debería tener que pensar en la memoria para cada objeto digital que crea., Debido a que ARC maneja toda la administración de memoria en tiempo de compilación, la capacidad intelectual que habría ido hacia la administración de memoria puede centrarse en la lógica de la aplicación Central y las nuevas características. Debido a que ARC en Swift funciona tanto en código de procedimiento como orientado a objetos, no requiere más cambios de contexto mental para los programadores, incluso cuando escriben código que toca API de nivel inferior, un problema con la versión actual de Objective-C.

La administración automática y de memoria de alto rendimiento es un problema que se ha resuelto, y Apple ha demostrado que puede aumentar la productividad., El otro efecto secundario es que tanto Objective-C como Swift no sufren de un recolector de basura que se ejecuta limpiando la memoria no utilizada, como Java, Go o C#. Este es un factor importante para cualquier lenguaje de programación que se utilizará para gráficos receptivos y la entrada del usuario, especialmente en un dispositivo táctil como el iPhone, Apple Watch o iPad (donde el retraso es frustrante y hace que los usuarios perciban que una aplicación está rota).

Swift requiere menos Código

Swift reduce la cantidad de código que se requiere para las instrucciones repetitivas y la manipulación de cadenas., En Objective-C, trabajar con cadenas de texto es muy detallado y requiere muchos pasos para combinar dos piezas de información. Swift adopta características modernas del lenguaje de programación como agregar dos cadenas junto con un operador»+», que falta en Objective-C. El soporte para combinar caracteres y cadenas como este es fundamental para cualquier lenguaje de programación que muestre texto a un usuario en una pantalla.

el sistema de tipos en Swift reduce la complejidad de las instrucciones de código, ya que el compilador puede calcular los tipos., Como ejemplo, Objective-C requiere que los programadores memoricen tokens de cadena especiales (%s, %d, %@) y proporcionen una lista de variables separadas por comas para reemplazar cada token. Swift admite la interpolación de cadenas, lo que elimina la necesidad de memorizar tokens y permite a los programadores insertar variables directamente en línea en una cadena orientada al usuario, como una etiqueta o un título de botón. El sistema de inferencia de tipos y la interpolación de cadenas mitigan una fuente común de bloqueos que son comunes en Objective-C.,

con Objective-C, desordenar el orden o usar el token de cadena incorrecto hace que la aplicación se bloquee. Aquí, Swift nuevamente le libera del trabajo de contabilidad, traduciendo a menos código para escribir (código que ahora es menos propenso a errores) debido a su soporte en línea para manipular cadenas de texto y datos.

Swift es más rápido

eliminar las convenciones de C heredadas ha mejorado mucho Swift bajo el capó. Los puntos de referencia para el rendimiento del código de Swift siguen apuntando a la dedicación de Apple para mejorar la velocidad a la que Swift puede ejecutar la lógica de la aplicación.,

según Primate Labs, fabricantes de la popular herramienta de rendimiento GeekBench, Swift estaba abordando las características de rendimiento de C++ para tareas de cómputo en diciembre de 2014 utilizando el algoritmo Mandelbrot.

en febrero de 2015, Primate Labs descubrió que el Xcode 6.3 Beta mejoró el rendimiento de Swift del algoritmo GEMM, un algoritmo vinculado a la memoria con acceso secuencial de grandes matrices, por un factor de 1.4. La implementación inicial de FFT-un algoritmo vinculado a la memoria con acceso aleatorio de matrices grandes—tuvo una mejora del rendimiento de 2,6 veces.,

Se observaron mejoras adicionales en Swift mediante la aplicación de las mejores prácticas, lo que resultó en un aumento de 8,5 veces para el rendimiento del algoritmo FFT (dejando a C++ con solo una ganancia de rendimiento de 1,1 veces). Las mejoras también permitieron a Swift superar A C++ para el algoritmo Mandelbrot por un factor de solo 1.03.

Swift está casi a la par con C++ para los algoritmos FFT y Mandelbrot., Según Primate Labs, el rendimiento del algoritmo GEMM sugiere que el compilador Swift no puede vectorizar el código que el compilador C++ puede, una ganancia de rendimiento fácil que se podría lograr en la próxima versión de Swift.

menos colisiones de nombres con proyectos de código abierto

Un problema que ha plagado el código de Objective-C es su falta de soporte formal para los espacios de nombres, que era la solución de C++para las colisiones de nombres de archivo de código. Cuando esta colisión de nombres ocurre en Objective-C, es un error de enlazador y la aplicación no puede ejecutarse. Existen soluciones alternativas, pero tienen posibles escollos., La Convención común es usar prefijos de dos o tres letras para diferenciar el código Objective-C que está escrito, por ejemplo, por Facebook frente a su propio código.

Swift proporciona espacios de nombres implícitos que permiten que el mismo archivo de código exista en varios proyectos sin causar un error de compilación y requerir nombres como NSString (Next Step — Compañía de Steve Jobs después de ser despedido de Apple) o CGPoint (Core Graphics). En última instancia, esta característica en Swift mantiene a los programadores más productivos y significa que no tienen que hacer la contabilidad que existe en Objective-C., Puede ver la influencia de Swift con nombres simples como Array, Dictionary y String en lugar de NSArray, NSDictionary y NSString, que nacieron de la falta de espacios de nombres en Objective-C.

con Swift, los espacios de nombres se basan en el destino al que pertenece un archivo de código. Esto significa que los programadores pueden diferenciar clases o valores usando el identificador de espacio de nombres. Este cambio en Swift es enorme. Facilita enormemente la incorporación de proyectos de código abierto, marcos y bibliotecas en su código., Los espacios de nombres permiten a diferentes compañías de software crear los mismos nombres de archivo de código sin preocuparse por las colisiones al integrar proyectos de código abierto. Ahora tanto Facebook como Apple pueden usar un archivo de código objeto llamado FlyingCar.swift sin errores ni fallos de compilación.

Swift admite bibliotecas dinámicas

El mayor cambio en Swift que no ha recibido suficiente atención es el cambio de bibliotecas estáticas, que se actualizan en las principales versiones puntuales (iOS 8, iOS 7, etc.), a bibliotecas dinámicas., Las bibliotecas dinámicas son trozos ejecutables de código que se pueden vincular a una aplicación. Esta función permite que las aplicaciones actuales de Swift se vinculen con las versiones más recientes del lenguaje Swift a medida que evoluciona con el tiempo.

el desarrollador envía la aplicación junto con las bibliotecas, ambas firmadas digitalmente con el certificado de desarrollo para garantizar la integridad (Hola, NSA). Esto significa que Swift puede evolucionar más rápido que iOS, que es un requisito para un lenguaje de programación moderno. Los cambios en las bibliotecas se pueden incluir con la última actualización de una aplicación en la App Store, y todo simplemente funciona.,

Las bibliotecas dinámicas nunca han sido compatibles con iOS hasta el lanzamiento de Swift e iOS 8, a pesar de que las bibliotecas dinámicas han sido compatibles con Mac durante mucho tiempo. Las bibliotecas dinámicas son externas al ejecutable de la aplicación, pero se incluyen en el paquete de aplicaciones descargado desde la App Store. Reduce el tamaño inicial de una aplicación a medida que se carga en la memoria, ya que el código externo solo se vincula cuando se usa.

la capacidad de aplazar la carga en una aplicación móvil o una aplicación integrada en el Apple Watch mejorará el rendimiento percibido por el usuario., Esta es una de las distinciones que hacen que el ecosistema iOS se sienta más receptivo. Apple se ha centrado en cargar solo activos, recursos y ahora código compilado y vinculado sobre la marcha. La carga sobre la marcha reduce los tiempos de espera iniciales hasta que realmente se necesita mostrar un recurso en la pantalla.

Las bibliotecas dinámicas de Swift permiten que los cambios y mejoras en el lenguaje de programación se propaguen más rápido que nunca. Los usuarios ya no tienen que esperar a que las versiones de iOS point se beneficien de las mejoras de rendimiento o fiabilidad que Apple introduce en Swift.,

Swift Playgrounds fomenta la codificación interactiva

Los nuevos Playgrounds de Swift son una bendición para los desarrolladores experimentados. Los parques infantiles se inspiraron parcialmente en el trabajo del ex empleado de Apple Brett Victor. Los parques infantiles permiten a los programadores probar un nuevo algoritmo o rutina gráfica, digamos de 5 a 20 líneas de código, sin tener que crear una aplicación completa para iPhone.

Apple ha añadido la ejecución de código en línea a Playgrounds para ayudar a los programadores a crear un fragmento de código o escribir un algoritmo mientras reciben comentarios en el camino., Este bucle de retroalimentación puede mejorar la velocidad a la que se puede escribir el código porque el modelo mental que necesita un programador tradicional puede reemplazarse con visualizaciones de datos en Parques Infantiles. La programación es un proceso iterativo, y cualquier esfuerzo que se pueda reducir o utilizar para complementar el proceso creativo hará que los programadores sean más productivos y los liberará para resolver problemas más grandes, en lugar de centrarse en detalles aburridos que los compiladores tradicionales han impuesto a los programadores.,

Nota: Desde mi experiencia en la enseñanza de programadores novatos, los Parques Infantiles no son tan poderosos para principiantes como lo son para programadores experimentados. Simplemente mostrar cómo funciona una variable en Swift playground no ayuda a un principiante a entender la necesidad de una variable de punto flotante frente a una variable entera. La necesidad se hace evidente cuando se muestra una aplicación que puede recordar su última posición de desplazamiento en el feed de noticias de Facebook. Para los principiantes, la pregunta «por qué» solo se puede responder con un ejemplo práctico: una aplicación para iPhone.,

Swift es un futuro en el que puedes influir

Objective-C no va a ninguna parte, pero no verá tantos cambios importantes, gracias a la introducción de Swift. Algunas características de Swift probablemente migrarán a Objective-C, pero el legado de Objective-C En C significa que solo puede absorber una cantidad limitada.

Swift proporciona a la comunidad de desarrollo una forma directa de influir en un lenguaje que se utilizará para crear aplicaciones, sistemas integrados (si Apple alguna vez licencia un marco integrado y un chip para terceros) y dispositivos como el Apple Watch.,

Apple se centra en proporcionar la mejor experiencia al consumidor y está construyendo solo aquellas características que se consideran dignas de atención. Con la versión 1.2 de Swift en Xcode 6.3, Apple ya ha corregido miles de errores reportados con la popular utilidad Apple Bug Reporter. El equipo que apoya el desarrollo y la evolución de Swift está muy interesado en cómo se puede mejorar el lenguaje para apoyar mejor a la comunidad de desarrollo que crea aplicaciones y sistemas utilizando Swift.,

Swift: el lenguaje más accesible y con todas las funciones

la mayor parte de los cambios que permiten a Swift elevarse por encima de Objective-C se derivan de la eliminación del lenguaje heredado sobre el que se construyó Objective-C. Apple no se está alejando de Cocoa, que es su API y biblioteca de código para crear las experiencias que se sienten como Apple. En su lugar, proporcionan paridad con todas las funciones y facilitan la interacción con las nuevas API que admiten funciones como Force Touch o Taptic Feedback.

muchas decisiones heredadas fueron diseñadas para facilitar el diseño del compilador., Swift se está centrando en facilitar el trabajo del desarrollador de aplicaciones eliminando la tensión mental de las prácticas de codificación heredadas. A medida que los compiladores modernos mejoran, se puede inferir más información de menos código.

con Swift, los programadores tienen la mitad de archivos de código que mantener, cero sincronización manual de código y mucha menos puntuación que escribir mal, lo que lleva más tiempo escribiendo líneas de código de calidad., El código ahora se documenta automáticamente en Swift con la adición de tipos opcionales: un mecanismo de seguridad en tiempo de compilación para devolver un valor o ningún valor, que es un problema común con operaciones asíncronas, fallas de red, entrada de usuario no válida o errores de validación de datos. ARC está unificado en Swift entre el código de procedimiento estilo C, así como el código orientado a objetos utilizando el framework Cocoa de Apple.

Los desarrolladores encontrarán que escriben menos código en Swift, y las características del lenguaje moderno los apoyan para mantener las líneas de código más legibles., Swift mantendrá todo el ecosistema de Apple a la vanguardia de la programación a medida que evoluciona, gracias a la compatibilidad con bibliotecas dinámicas en iOS y Swift. Los proyectos de código abierto, los SDK de terceros y los marcos que se integran con la automatización del hogar, los dispositivos y los servicios sociales serán más fáciles de integrar sin aumentar los tiempos de compilación. Swift es casi tan rápido como C++ En algunos algoritmos y la última versión de Xcode 6.3 y Swift 1.2 apunta a optimizaciones de rendimiento adicionales en el horizonte.,

agregue a eso el hecho de que Playgrounds y Swift permiten una nueva forma de programar con retroalimentación visual que ayuda al desarrollo de algoritmos utilizando visualizaciones de datos en línea. Un bucle de retroalimentación más corto y descripciones gráficas hacen que el proceso de codificación iterativa sea aún más fácil de comenzar.

en última instancia, Swift es un lenguaje de programación con todas las funciones más accesible que permitirá a los desarrolladores no solo crear aplicaciones, sino también apuntar a sistemas embebidos como el nuevo Apple Watch de menor potencia durante muchos años.,

  • 10 características de Apple ‘stole’ para el lenguaje de programación Swift
  • 9 cosas que odiamos de Objective-C
  • revisión: 7 excelentes creadores de aplicaciones móviles
  • revisión: AppStudio es como Visual Basic para Mobile dev
  • revisión: Appery.io combina mobile app builder con servicios back-end
  • revisión: Alpha Anywhere aces aplicaciones móviles sin conexión

Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *