Swift vs. Objective-C: 10 raisons pour lesquelles L’avenir favorise Swift

les langages de programmation ne meurent pas facilement, mais les ateliers de développement qui s’accrochent à des paradigmes en déclin le font. Si vous développez des applications pour Appareils mobiles et que vous n’avez pas étudié Swift, prenez note: Swift supplantera non seulement Objective-C lorsqu’il s’agira de développer des applications pour Mac, iPhone, iPad, Apple Watch et les appareils à venir, mais il remplacera également C pour la programmation intégrée sur les plates-formes Apple.,

grâce à plusieurs fonctionnalités clés, Swift a le potentiel de devenir le langage de programmation de facto pour créer des applications immersives, réactives et axées sur le consommateur pour les années à venir.

Apple semble avoir de grandes ambitions pour Swift. Il a optimisé le compilateur pour les performances et le langage pour le développement, et il fait allusion à Swift étant « conçu pour évoluer de” Bonjour, monde » à un système d’exploitation entier  » dans la documentation de Swift., Bien Qu’Apple n’ait pas encore déclaré tous ses objectifs pour le langage, les lancements de Xcode 6, Playgrounds et Swift indiquent ensemble L’intention D’Apple de rendre le développement d’applications plus facile et plus accessible qu’avec toute autre chaîne d’outils de développement.

Voici 10 raisons pour obtenir une longueur d’avance en commençant à travailler avec Swift maintenant.

Swift est plus facile à lire

Objective-C souffre de toutes les verrues que vous attendez D’un langage construit sur C., Pour différencier les mots-clés et les types des types C, Objective – C a introduit de nouveaux mots-clés en utilisant le symbole@. Comme Swift n’est pas construit sur C, il peut unifier tous les mots-clés et supprimer les nombreux symboles @ devant chaque type Objective-C ou mot-clé lié à un objet.

Swift gouttes héritage des conventions. Ainsi, vous n’avez plus besoin de points-virgules pour terminer les lignes ou de parenthèses pour entourer les expressions conditionnelles dans les instructions if/else. Un autre grand changement est que les appels de méthode ne s’imbriquent pas les uns dans les autres, ce qui entraîne un support hell—bye-bye, ]]., Les appels de méthode et de fonction dans Swift utilisent la liste standard de paramètres séparés par des virgules entre parenthèses. Le résultat est un langage plus propre et plus expressif avec une syntaxe et une grammaire simplifiées.

Le Code Swift ressemble davantage à l’anglais naturel, en plus des autres langages de programmation populaires modernes. Cette lisibilité permet aux programmeurs existants de JavaScript, Java, Python, C# et c++ D’adopter plus facilement Swift dans leur chaîne d’outils—contrairement au vilain petit canard qui était Objective-C.,

Swift est plus facile à maintenir

L’héritage est ce qui retient Objective-C—le langage ne peut pas évoluer sans que C évolue. C oblige les programmeurs à maintenir deux fichiers de code afin d’améliorer le temps de construction et l’efficacité de la création de l’application exécutable, une exigence qui porte sur Objective-C.

Swift supprime l’exigence de deux fichiers. Xcode et le compilateur LLVM peuvent comprendre les dépendances et effectuer des builds incrémentaux automatiquement dans Swift 1.2., En conséquence, la tâche répétitive de séparer la table des matières (fichier d’en-tête) du corps (fichier d’implémentation) appartient au passé. Swift combine L’en-tête Objective-C (.h) et les fichiers de mise en œuvre (.m) dans un seul fichier de code (.Swift).

Le système à deux fichiers D’Objective-C impose un travail supplémentaire aux programmeurs-et c’est un travail qui distrait les programmeurs de l’image plus grande., Dans Objective – C, vous devez synchroniser manuellement les noms de méthodes et les commentaires entre les fichiers, espérons-le en utilisant une convention standard, mais cela n’est pas garanti à moins que l’équipe n’ait mis en place des règles et des revues de code.

Xcode et le compilateur LLVM peuvent travailler en coulisses pour réduire la charge de travail sur le programmeur. Avec Swift, les programmeurs font moins de comptabilité et peuvent passer plus de temps à créer une logique d’application. Swift réduit le travail standard et améliore la qualité du code, des commentaires et des fonctionnalités pris en charge.,

Swift est plus sûr

Un aspect intéressant D’Objective-C est la façon dont les pointeurs—en particulier les pointeurs nuls (null)—sont gérés. En Objective-C, rien ne se passe si vous essayez d’appeler une méthode avec une variable de pointeur qui est nulle (non initialisée). L’expression ou la ligne de code devient une no-operation (no-op), et bien qu’il puisse sembler bénéfique qu’il ne plante pas, il a été une énorme source de bugs. Un no-op conduit à un comportement imprévisible, qui est l’ennemi des programmeurs qui tentent de trouver et de corriger un crash aléatoire ou d’arrêter un comportement erratique.,

Les types optionnels rendent la possibilité d’une valeur facultative nulle très claire dans le code Swift, ce qui signifie qu’il peut générer une erreur de compilateur lorsque vous écrivez un mauvais code. Cela crée une courte boucle de rétroaction et permet aux programmeurs de coder avec intention. Les problèmes peuvent être résolus à mesure que le code est écrit, ce qui réduit considérablement le temps et L’argent que vous dépenserez pour corriger les bogues liés à la logique de pointeur D’Objective-C.,

traditionnellement, en Objective-C, si une valeur était renvoyée par une méthode, il était de la responsabilité du programmeur de documenter le comportement de la variable de pointeur renvoyée (en utilisant des commentaires et des conventions de nommage de méthode). En Swift, l’option types et les types de valeur indiquent clairement dans la définition de la méthode si la valeur existe ou s’il a le potentiel pour être facultatif (c’est la valeur peut exister ou il peut être nul).

pour fournir un comportement prévisible, Swift déclenche un plantage d’exécution si une variable facultative nil est utilisée., Ce plantage fournit un comportement cohérent, ce qui facilite le processus de correction des bogues car il oblige le programmeur à résoudre le problème immédiatement. Le crash D’exécution Swift s’arrêtera sur la ligne de code où une variable facultative nil a été utilisée. Cela signifie que le bogue sera corrigé plus tôt ou évité entièrement dans le code Swift.

Swift est unifié avec la gestion de la mémoire

Swift unifie le langage d’une manière que Objective-C n’a jamais eu. La prise en charge du comptage automatique des références (ARC) est complète sur les chemins de code procéduraux et orientés objet., Dans Objective-C, ARC est pris en charge dans les API Cocoa et le code orienté objet; il n’est cependant pas disponible pour le code C procédural et les API telles que Core Graphics. Cela signifie qu’il devient de la responsabilité du programmeur de gérer la gestion de la mémoire lorsque vous travaillez avec les API Core Graphics et d’autres API de bas niveau disponibles sur iOS. Les énormes fuites de mémoire qu’un programmeur peut avoir dans Objective-C sont impossibles dans Swift.

un programmeur ne devrait pas avoir à penser à la mémoire pour chaque objet numérique qu’il crée., Comme ARC gère toute la gestion de la mémoire au moment de la compilation, le cerveau qui aurait été orienté vers la gestion de la mémoire peut plutôt se concentrer sur la logique de base de l’application et les nouvelles fonctionnalités. Comme ARC dans Swift fonctionne à la fois sur du code procédural et orienté objet, il ne nécessite plus de commutateurs de contexte mentaux pour les programmeurs, même s’ils écrivent du code qui touche des API de niveau inférieur-un problème avec la version actuelle D’Objective—C.

La gestion automatique et haute performance de la mémoire est, L’autre effet secondaire est que Objective-C et Swift ne souffrent pas d’un Garbage Collector exécutant le nettoyage de la mémoire inutilisée, comme Java, Go ou C#. C’est un facteur important pour tout langage de programmation qui sera utilisé pour les graphiques réactifs et la saisie utilisateur, en particulier sur un appareil tactile comme l’iPhone, L’Apple Watch ou l’iPad (où le décalage est frustrant et fait percevoir aux utilisateurs qu’une application est cassée).

Swift nécessite moins de code

Swift réduit la quantité de code requise pour les instructions répétitives et la manipulation de chaînes., En Objective-C, travailler avec des chaînes de texte est très verbeux et nécessite de nombreuses étapes pour combiner deux informations. Swift adopte des fonctionnalités de langage de programmation moderne comme l’ajout de deux chaînes avec un opérateur »+”, ce qui est manquant dans Objective-C. La prise en charge de la combinaison de caractères et de chaînes comme celle-ci est fondamentale pour tout langage de programmation qui affiche du texte à un utilisateur sur un écran.

Le système de type dans Swift réduit la complexité des instructions de code — car le compilateur peut comprendre les types., Par exemple, Objective-C nécessite que les programmeurs mémorisent des jetons de chaîne Spéciaux (%s, %d, %@) et fournissent une liste de variables séparées par des virgules pour remplacer chaque jeton. Swift prend en charge l’interpolation de chaîne, ce qui élimine le besoin de mémoriser des jetons et permet aux programmeurs d’insérer des variables directement en ligne dans une chaîne orientée utilisateur, telle qu’une étiquette ou un titre de bouton. Le système d’inférence de type et l’interpolation de chaîne atténuent une source commune de plantages qui sont communs dans Objective-C.,

avec Objective-C, gâcher l’ordre ou utiliser le mauvais jeton de chaîne provoque le crash de l’application. Ici, Swift vous soulage à nouveau du travail de comptabilité, se traduisant par moins de code à écrire (code qui est maintenant moins sujet aux erreurs) en raison de sa prise en charge en ligne de la manipulation des chaînes de texte et des données.

Swift est plus rapide

La suppression des conventions c héritées a grandement amélioré Swift sous le capot. Les Benchmarks pour les performances du Code Swift continuent de montrer L’engagement d’Apple à améliorer la vitesse à laquelle Swift peut exécuter app logic.,

selon Primate Labs, fabricant du populaire outil de performance GeekBench, Swift approchait les caractéristiques de performance de C++ pour les tâches liées au calcul en décembre 2014 en utilisant L’algorithme Mandelbrot.

en février 2015, Primate Labs a découvert que la version bêta de Xcode 6.3 améliorait les performances de Swift de L’algorithme GEMM—un algorithme lié à la mémoire avec un accès séquentiel de grands tableaux-d’un facteur 1.4. L’implémentation initiale de FFT – un algorithme lié à la mémoire avec un accès aléatoire de grands tableaux-a eu une amélioration des performances de 2,6 fois.,

D’autres améliorations ont été observées dans Swift en appliquant les meilleures pratiques, ce qui a entraîné une augmentation de 8,5 fois les performances de L’algorithme FFT (laissant C++ avec seulement un gain de performance de 1,1 fois). Les améliorations ont également permis à Swift de surpasser C++ pour L’algorithme Mandelbrot d’un facteur de seulement 1.03.

Swift est presque à égalité avec C++ pour les algorithmes FFT et Mandelbrot., Selon Primate Labs, les performances de L’algorithme GEMM suggèrent que le compilateur Swift ne peut pas vectoriser le code du compilateur C++ — Un gain de performance facile qui pourrait être atteint dans la prochaine version de Swift.

moins de collisions de noms avec des projets open source

un problème qui a frappé le code Objective-C est son manque de support formel pour les espaces de noms, qui était la solution de C++pour coder les collisions de noms de fichiers. Lorsque cette collision de noms se produit dans Objective-C, il s’agit d’une erreur d’éditeur de liens et l’application ne peut pas s’exécuter. Des solutions de contournement existent, mais elles ont des pièges potentiels., La convention commune est d’utiliser un préfixe de deux ou trois lettres pour différencier le code Objective – C qui est écrit, disons, par Facebook par rapport à votre propre code.

Swift fournit des espaces de noms implicites qui permettent au même fichier de code d’exister sur plusieurs projets sans provoquer d’échec de construction et nécessitant des noms tels que NSString (Next Step — la société de Steve Jobs après avoir été renvoyée D’Apple) ou CGPoint (Core Graphics). En fin de Compte, cette fonctionnalité dans Swift maintient les programmeurs plus productifs et signifie Qu’ils n’ont pas à faire la comptabilité qui existe dans Objective-C., Vous pouvez voir L’influence de Swift avec des noms simples comme Array, Dictionary et String au lieu de NSArray, NSDictionary et NSString, qui sont nés du manque d’espaces de noms dans Objective-C.

avec Swift, les espaces de noms sont basés sur la cible à laquelle appartient un fichier de code. Cela signifie que les programmeurs peuvent différencier les classes ou les valeurs en utilisant l’identifiant d’espace de noms. Ce changement dans Swift est énorme. Cela facilite grandement l’intégration de projets, de frameworks et de bibliothèques open source dans votre code., Les espaces de noms permettent à différentes sociétés de logiciels de créer les mêmes noms de fichiers de code sans se soucier des collisions lors de l’intégration de projets open source. Maintenant, Facebook et Apple peuvent utiliser un fichier de code objet appelé FlyingCar.swift sans aucune erreur ou Échec de construction.

Swift prend en charge les bibliothèques dynamiques

Le plus grand changement dans Swift qui n’a pas reçu suffisamment d’attention est le passage des bibliothèques statiques, qui sont mises à jour lors des principales versions ponctuelles (iOS 8, iOS 7, etc.), aux bibliothèques dynamiques., Les bibliothèques dynamiques sont des morceaux de code exécutables qui peuvent être liés à une application. Cette fonctionnalité permet aux applications Swift actuelles de se lier à des versions plus récentes du langage Swift à mesure qu’il évolue au fil du temps.

Le développeur soumet l’application avec les bibliothèques, qui sont tous deux signés numériquement avec le certificat de développement pour assurer l’intégrité (bonjour, NSA). Cela signifie que Swift peut évoluer plus rapidement qu’iOS, ce qui est une exigence pour un langage de programmation moderne. Les modifications apportées aux bibliothèques peuvent toutes être incluses avec la dernière mise à jour d’une application sur L’App Store, et tout fonctionne simplement.,

les bibliothèques dynamiques n’ont jamais été prises en charge sur iOS jusqu’au lancement de Swift et iOS 8, même si les bibliothèques dynamiques sont prises en charge sur Mac depuis très longtemps. Les bibliothèques dynamiques sont externes à l’exécutable de l’application, mais sont incluses dans le bundle d’Applications téléchargé depuis L’App Store. Il réduit la taille initiale d’une application lorsqu’elle est chargée en mémoire, car le code externe n’est lié que lorsqu’il est utilisé.

la possibilité de différer le chargement dans une application mobile ou une application intégrée sur Apple Watch améliorera les performances perçues par l’utilisateur., C’est l’une des distinctions qui rendent l’écosystème iOS plus réactif. Apple s’est concentré sur le chargement uniquement des actifs, des ressources et maintenant du code compilé et lié à la volée. Le chargement à la volée réduit les temps d’attente initiaux jusqu’à ce qu’une ressource soit réellement nécessaire pour s’afficher à l’écran.

les bibliothèques dynamiques de Swift permettent aux changements et améliorations de langage de programmation de se propager plus rapidement que jamais. Les utilisateurs n’ont plus besoin d’attendre les versions iOS point pour bénéficier des améliorations de performances ou de fiabilité introduites par Apple dans Swift.,

Swift Playgrounds encourage le codage interactif

Les Nouveaux Playgrounds de Swift sont une aubaine pour les développeurs expérimentés. Les terrains de jeux ont été partiellement inspirés par le travail de L’ancien employé D’Apple Brett Victor. Playgrounds permet aux programmeurs de tester un nouvel algorithme ou une nouvelle routine graphique, disons 5 à 20 lignes de code, sans avoir à créer une application iPhone entière.

Apple a ajouté l’exécution de code en ligne à Playgrounds pour aider les programmeurs à créer un morceau de code ou à écrire un algorithme tout en obtenant des commentaires en cours de route., Cette boucle de rétroaction peut améliorer la vitesse à laquelle le code peut être écrit parce que le modèle mental dont un programmeur traditionnel a besoin peut être remplacé par des visualisations de données dans les terrains de jeux. La programmation est un processus itératif, et toute contrainte pouvant être réduite ou utilisée pour compléter le processus créatif rendra les programmeurs plus productifs et les libérera pour résoudre des problèmes plus importants, plutôt que de se concentrer sur des détails ennuyeux que les compilateurs traditionnels ont imposés aux programmeurs.,

Remarque: d’après mon expérience dans l’enseignement des programmeurs novices, les terrains de jeux ne sont pas aussi puissants pour les débutants que pour les programmeurs expérimentés. Le simple fait de montrer comment une variable fonctionne dans Swift playground n’aide pas un débutant à comprendre le besoin d’une variable à virgule flottante par rapport à une variable entière. Le besoin devient évident lorsque vous montrez une application qui peut se souvenir de votre dernière position de défilement dans le fil D’actualité Facebook. Pour les débutants, la question” Pourquoi  » ne peut être répondue qu’avec un exemple de travail: une application iPhone.,

Swift est un avenir que vous pouvez influencer

Objective-C ne va nulle part, mais il ne verra pas autant de changements majeurs, grâce à L’introduction de Swift. Certaines fonctionnalités Swift migreront probablement vers Objective-C, mais L’héritage D’Objective-C en C signifie qu’il ne peut en absorber que beaucoup.

Swift fournit à la communauté de développement un moyen direct d’influencer un langage qui sera utilisé pour créer des applications, des systèmes embarqués (si jamais Apple accorde une licence pour un framework et une puce embarqués à des tiers) et des appareils comme L’Apple Watch.,

Apple se concentre sur la fourniture de la meilleure expérience client et ne construit que les fonctionnalités jugées dignes d’attention. Avec la version Swift 1.2 de Xcode 6.3, Apple a déjà corrigé des milliers de bugs signalés avec le populaire utilitaire Apple Bug Reporter. L’équipe qui soutient le développement et l’évolution de Swift est très intéressée par la façon dont le langage peut être amélioré pour mieux soutenir la communauté de développement qui construit des applications et des systèmes à l’aide de Swift.,

Swift: le langage le plus accessible et le plus complet

La majeure partie des changements qui permettent à Swift de dépasser Objective-C provient de l’abandon du langage hérité sur lequel Objective-C a été construit. Apple ne s’éloigne pas de Cocoa, qui est leur API et leur bibliothèque de code pour créer des expériences qui ressemblent à celles D’Apple. Au lieu de cela, ils fournissent une parité complète et facilitent l’interaction avec de nouvelles API prenant en charge des fonctionnalités telles que Force Touch ou Taptic Feedback.

de nombreuses décisions héritées ont été conçues pour faciliter la conception du compilateur., Swift se concentre sur rendre le travail du développeur d’applications plus facile en éliminant la tension mentale des pratiques de codage héritées. À mesure que les compilateurs modernes s’améliorent, plus d’informations peuvent être déduites de moins de code.

avec Swift, les programmeurs ont moitié moins de fichiers de code à gérer, aucune synchronisation manuelle du code et beaucoup moins de ponctuation à mal saisir—ce qui entraîne plus de temps passé à écrire des lignes de code de qualité., Le Code est maintenant auto-documenté dans Swift avec l’ajout de types facultatifs: un mécanisme de sécurité à la compilation pour renvoyer une valeur ou aucune valeur, ce qui est un problème courant avec les opérations asynchrones, les pannes réseau, les entrées utilisateur non valides ou les erreurs de validation des données. ARC est unifié dans Swift entre le code procédural de style C, ainsi que le code orienté objet utilisant le framework Cocoa D’Apple.

Les développeurs constateront qu’ils écrivent moins de code dans Swift, et les fonctionnalités du langage moderne les aident à garder les lignes de code plus lisibles., Swift maintiendra L’ensemble de L’écosystème Apple à l’avant-garde de la programmation au fur et à mesure de son évolution, grâce à la prise en charge de la Bibliothèque dynamique dans iOS et Swift. Les projets Open source, Les SDK tiers et les frameworks qui s’intègrent à la domotique, aux appareils et aux services sociaux seront plus faciles à intégrer sans augmenter les temps de construction. Swift est presque aussi rapide que C++ dans certains algorithmes et la dernière version de Xcode 6.3 et Swift 1.2 indique des optimisations de performances supplémentaires à l’horizon.,

ajoutez à cela le fait que Playgrounds et Swift permettent une nouvelle façon de programmer avec un retour visuel qui aide au développement d’algorithmes utilisant des visualisations de données en ligne. Une boucle de rétroaction plus courte et des descriptions graphiques rendent le processus de codage itératif encore plus facile à démarrer.

en fin de compte, Swift est un langage de programmation complet plus accessible qui permettra aux développeurs non seulement de créer des applications, mais aussi de cibler les systèmes embarqués comme la nouvelle Apple Watch à faible puissance pour de nombreuses années à venir.,

  • 10 Caractéristiques Apple « volé » pour le langage de programmation Swift
  • 9 choses que nous détestons Objective-C
  • examen: 7 excellents constructeurs d’applications mobiles
  • examen: AppStudio est comme Visual Basic pour mobile dev
  • examen: Appery.io associe le constructeur d’applications mobiles à des services back-end
  • Review: Alpha Anywhere aces offline mobile apps

Share

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *