Une introduction au nouveau langage de programmation d’Apple: Swift



Lors de la WWDC de cette année, l’attention s’est tellement focalisée sur iOS 8 et OS X Yosemite que la véritable grande annonce de l’événement a été quelque peu éclipsée. Apple a en effet dévoilé au monde son nouveau langage de programmation, Swift. Pour l’utilisateur lambda, cette nouveauté peut sembler anecdotique, mais pour la communauté des développeurs, elle pourrait bien être révolutionnaire. Certains langages de programmation se distinguent par leurs avantages spécifiques : la rapidité, l’efficacité, la simplicité ou encore la lisibilité du code. Après Google avec Go (Golang) et Microsoft avec .Net Framework, Apple est la dernière entreprise à créer son propre langage. Swift prétend s’inspirer de ces prédécesseurs, tout en restant fidèle à Objective-C, son ancêtre. Apple affirme avoir conçu le langage de haut niveau le plus rapide et le plus robuste qui soit. Voyons cela de plus près.

Pourquoi les langages de programmation sont-ils indispensables ?

Il existe différentes méthodes pour faire exécuter des tâches à un appareil électronique. Qu’il s’agisse d’un gadget portable ou d’un ordinateur traditionnel, on peut opter pour une approche bas niveau, utilisant le langage machine ou l’assembleur, où chaque instruction est codée manuellement. On peut également recourir à des langages de haut niveau qui automatisent une partie de ce processus fastidieux. La tendance actuelle est de rapprocher les langages de développement du langage naturel, ce qui facilite la tâche des programmeurs. Bien que le nom de Swift attire davantage les développeurs que les simples spectateurs, nous allons simplifier l’explication afin que vous puissiez mieux comprendre cette technologie qui façonnera les futures générations de produits Apple.

Pour faire simple, les appareils électroniques sont, sans programmation, des objets inertes. C’est le code qui leur donne une utilité. À un niveau fondamental, il faut dicter à l’électronique, action par action, ce qu’elle doit faire. C’est ce qu’on faisait autrefois avec les cartes perforées, puis avec le langage machine. Par la suite, nous avons développé des langages qui nous permettent de communiquer avec les machines de manière plus naturelle (le code est en fait une version simplifiée du langage machine). Nous écrivons le code, ce code est ensuite compilé en un format compréhensible par l’ordinateur, puis il est exécuté. En résumé : code – compilation – exécution.

Pourquoi Swift est-il pertinent ?

La question qui se pose naturellement est : « Pourquoi ? ». Le langage C date des années 70 et a constitué une avancée considérable à l’époque. Il a été suivi par Objective-C dans les années 80, langage qu’Apple utilise depuis pour son développement. La logique voudrait que l’on s’en tienne au principe : « si ça fonctionne, ne change rien ». Si Objective-C a fait ses preuves pendant 30 ans, quel est le problème ? Justement, c’est là que le bât blesse. Apple a utilisé Objective-C pendant des décennies. Il est temps d’adopter une solution plus rapide, plus puissante et plus simple : Swift.

Selon l’eBook officiel sur Swift (disponible gratuitement sur iTunes), « Swift est un nouveau langage de programmation destiné aux applications iOS et OS X qui s’appuie sur les atouts de C et d’Objective-C, sans les contraintes de compatibilité avec C. Swift adopte des modèles de programmation sûrs et introduit des fonctionnalités modernes afin de rendre la programmation plus facile, plus flexible et plus agréable. La combinaison de Swift avec les frameworks robustes et populaires que sont Cocoa et Cocoa Touch offre une occasion de réinventer le développement logiciel. »

Qu’est-ce qui rend Swift important ?

Bien qu’Apple veuille nous faire croire à une innovation sans faille, l’idée d’un langage de « script » est dans l’air depuis un moment. Traditionnellement, le code doit être compilé avant de pouvoir être exécuté et ainsi voir le résultat. La compilation révèle le potentiel du code et les éventuelles erreurs qui entraîneront un comportement imprévisible ou des plantages. Le travail du codeur consiste alors à identifier l’erreur, la corriger et relancer la compilation. Ce processus est laborieux et chronophage, mais il est inhérent au monde de la programmation. Les langages de script, eux, s’exécutent ligne par ligne, ce qui permet de voir les résultats au fur et à mesure que l’on écrit, éliminant ainsi la nécessité de chercher les erreurs après coup. Ce qui rend le processus plus rapide et beaucoup plus simple.

Jusqu’à présent, les langages de script ont été limités dans leurs capacités. Prenons l’exemple de Python, qui est extrêmement rapide, mais limité à des tâches simples. C’est un peu comme une Formule 1, idéale pour la course, mais pas pour faire ses courses au supermarché.

Si vous souhaitez créer un jeu, Python n’est pas l’outil approprié. Objective-C (ou C++ sous Windows) sera plus pertinent. Swift promet de combiner le meilleur de ces deux mondes (et bien d’autres), en s’inspirant d’Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, et bien d’autres encore (selon Chris Lattner, développeur et expert Swift Chris Lattner). Swift vise à conserver les points positifs des langages précédents et à se débarrasser des aspects négatifs. Les tests démontrent que Swift est plus rapide que Python et beaucoup plus rapide qu’Objective-C, ce qui est un bon début.

Quels sont ses autres atouts ?

Swift introduit également un environnement visuel en temps réel, appelé « terrain de jeu », où l’on peut visualiser le résultat de la compilation instantanément, comme avec un langage de script. En fonction de la conception de l’application, cela peut réduire la durée des processus à quelques minutes, car si un problème se présente, on peut en identifier immédiatement la cause et la corriger dans la foulée. C’est un peu comme corriger une faute d’orthographe sur une impression plutôt que de la corriger dans un traitement de texte au fur et à mesure. Cela permet de développer des applications complexes plus rapidement.

Swift va encore plus loin. Dans les langages de haut niveau, il fallait déclarer et accéder à des classes et des bibliothèques pour exécuter des fonctions, même basiques. En C++, il faudrait inclure et pour utiliser les types d’entrée, de sortie et de données de base dans le code. Avec Swift, rien de tout cela n’est nécessaire. Inutile de déclarer des bibliothèques, car Swift gère lui-même les besoins de chaque type de données et fonction E/S (entrée/sortie) et active les bibliothèques correspondantes. Ainsi, pour afficher le simple message « Hello world », le code passe de :

#include<stdio.h>
int main(void)
{
  printf("Hello Worldn");
  return0;
}

à un simple :

println("Hello, world")

C’est tout le code nécessaire. On notera également que le code n’utilise pas le fameux « ; » comme signe universel de fin de déclaration.

Quels sont les inconvénients ?

L’arrivée de Swift n’annonce pas la disparition immédiate d’Objective-C. Les applications peuvent toujours être développées en Objective-C, et les utilisateurs de ce langage ne seront pas complètement perdus, car il existe des similitudes entre les deux environnements. Bien entendu, Apple, après avoir passé quatre ans à travailler sur ce nouveau langage, mettra tout en œuvre pour promouvoir et soutenir Swift, maintenant et à l’avenir. Un jour, peut-être, Objective-C disparaîtra des annales des langages de programmation d’Apple, mais ce jour n’est pas encore arrivé. Cependant, si un nouveau langage est disponible, facile à apprendre et beaucoup plus rapide, pourquoi s’en tenir à Objective-C ?

Bien sûr, il y a quelques inquiétudes. La principale étant les bouleversements que cela va engendrer dans le secteur. Des carrières entières ont été construites autour de l’enseignement du développement d’applications iPhone, et ces carrières, ainsi que leurs étudiants, sont immédiatement devenues obsolètes. Il y aura donc une importante restructuration à prévoir. Nous allons également assister à l’émergence d’une nouvelle génération d’adeptes de Swift (des jeux comme Flappy Birds ont déjà été créés en Swift), ce qui est à la fois positif et négatif. Le point positif est que cela injecte du sang neuf dans le système, le point négatif est que ces nouveaux acteurs seront inexpérimentés et risquent d’inonder le marché d’applications mal conçues.

Nous aborderons prochainement la question du framework Metal d’Apple, ses avantages et ses inconvénients, notamment dans le domaine des jeux iOS.

En conclusion

Si vous vous demandez pourquoi aucun nouveau matériel n’a été annoncé lors de la conférence de la WWDC, nous vous renvoyons à notre observation précédente : le matériel seul n’a aucune utilité sans le logiciel qui le fait fonctionner. Swift était donc la véritable grande annonce de cet événement. Une nouvelle approche du développement logiciel qui façonnera l’avenir du matériel. Pour utiliser Swift, vous aurez besoin de Xcode 6 beta et d’un identifiant de développeur.

Téléchargez Swift ici