Swift : les enjeux du nouveau langage annoncé par Apple
Séduire les développeurs coûte que coûte
Le 13 juin 2014 à 07h00
14 min
Logiciel
Logiciel
Le 2 juin, parmi les annonces dédiées à iOS 8 et OS X Yosemite, Apple a créé la surprise en annonçant un nouveau langage de programmation : Swift. Une décision qui peut paraître étonnante, mais que nous avons voulu analyser. L'occasion de faire le point, et de demander à des développeurs et des entreprises vivant de l'écosystème Apple ce qu'elles en pensent.
On peut se demander pourquoi Apple avait besoin d’un nouveau langage. On ne sait pas exactement ce qui a poussé réellement la firme à se diriger vers cette solution, mais on connait en revanche les limitations auxquelles elle faisait face et les bénéfices qu’elle devrait en tirer.
Pour développer une application sur iOS et OS X, les développeurs emploient le plus souvent un mélange de deux langages : le C et l’Objective-C. Le premier est impératif, procédural et est plus proche du langage machine, tandis que le second est orienté objet et, bien que hérité du C, tend vers le fonctionnel : le développement se fait par l’intermédiaire de fonctions emboitées les unes dans les autres.
Pourquoi un nouveau langage et pas un langage existant ?
Devant le succès rencontré par la plateforme mobile d’Apple, on peut se demander pourquoi introduire un nouveau langage alors que les développeurs iOS sont nombreux. Il faut savoir en fait que l’Objective-C est très largement basé sur le C et en garde donc une bonne partie des problèmes. C’est en particulier le cas des pointeurs, qui sont tout simplement les adresses mémoire du premier octet d’un objet. Plus la taille d’une application augmente, plus leur nombre croît en proportion. Lorsqu’une erreur survient avec un pointeur, il y a essentiellement deux conséquences : un crash de l’application ou l’ouverture d’une faille de sécurité.
Pourquoi alors ne pas utiliser directement un langage existant et plus moderne ? Parce que l’utilisation d’Objective-C a réellement explosé avec l’avènement des frameworks Cocoa et Cocoa Touch, pensés et développés pour lui. Ce sont pour rappel les deux infrastructures réunissant les API (Application Programming Interface) pour OS X et iOS. Aussi, utiliser un autre langage n’est pas si simple car il aurait fallu revoir les interactions avec ces deux infrastructures.
Apple a donc choisi de créer un langage répondant spécifiquement à ses besoins, et il ne faudra pas s’y tromper : Swift a bien été créé par Apple et pour Apple. Il a pour ambition de devenir la voie royale (et sans aucun doute à terme la seule voie) pour créer des applications sur iOS et OS X. Un langage unifié reprenant en fait à son compte plusieurs paradigmes de programmation et des idées provenant d’autres langages. Mais au bout du chemin, Apple contrôle toute la chaine du développement pour ses systèmes : son IDE (Xcode), son langage, ses API, son compilateur.
Avant tout, un code plus sûr
Swift doit permettre à terme un développement plus rapide des applications et surtout plus sûr. La rapidité vient en partie de la réduction de code nécessaire pour obtenir le même résultat qu’avec Objective-C. Elle vient également d’une compilation optimisée au maximum via LLVM, déjà utilisé dans Objective-C. Autre reprise, la gestion de la mémoire par ARC (Automatic Reference Counting) Mais le grand but de Swift est avant tout de rendre le développement plus sûr en éliminant les problèmes inhérents au C et à l’Objective-C.
Swift restreint ainsi l’accès aux pointeurs mémoires, éliminant d’office de nombreux risques d’erreurs et de failles de sécurité. Une sûreté de typage est également introduite via l’inférence de types, qui permet de déduire, au moment de la compilation, les types associés aux expressions utilisées. Il s'agit d’une caractéristique que l’on retrouve souvent dans les langages fonctionnels, mais pas seulement puisque le C# de Microsoft (pourtant impératif) le permet également. D’autres ajouts concernant la sécurité ont été faits, notamment l’initialisation obligatoire des variables, l’utilisation par défaut des points d’arrêts conditionnés ainsi que la vérification des limites des zones mémoire pour réduire le risque de dépassement de mémoire tampon.
Apple tente évidemment l’opération séduction massive auprès des développeurs qui connaissent déjà l’Objective-C en indiquant que Swift reprend des concepts modernes de programmes, dont certains existent en fait déjà dans Objective-C. C’est le cas notamment des clôtures ou encore de l’interpolation des variables. Apple aime également comparer certains aspects de Swift au Python et on retrouve ainsi les tuples, qui sont des collections de données.
Éléments d’autres langages et compilation dynamique
Apple vante également la facilité induite par Swift avec un argument de poids : le développeur peut observer directement le résultat produit par son code grâce à une compilation à la volée (mode Playgrounds). Il est intéressant d’observer qu’une annonce similaire a eu lieu du côté de Microsoft récemment avec la compilation dynamique pour la future version d’ASP.NET. Un apport qui peut clairement faire gagner du temps aux développeurs existants mais qui pourrait également motiver de nouveaux venus. Et c'est sans doute là son objectif.
Mais qu’on ne s’y trompe pas : Swift n’est pas une grande cassure avec l’existant. Les développeurs qui connaissent Objective-C retrouveront rapidement leurs marques, même s’ils devront repasser par une phase obligatoire d’apprentissage. Ceux qui n’aimaient pas l’aspect peu lisible du langage ne risquent pas plus d’aimer Swift, les points virgules et les parenthèses étant par exemple totalement optionnels dans le code, même si Apple les recommande fortement. En fait, le langage autorise des « facilités » d’écriture qui, si elles permettront de gagner du temps, pourraient se faire au détriment de la lisibilité générale du code.
Le nom même du langage signifiant « rapide », il y a des chances qu’Apple ait conçu sa technologie pour aller directement à l’essentiel. Le renforcement de la sécurité est clairement un élément positif qui servira d’autant mieux les développeurs qu’ils seront moins expérimentés. Il ne faut pas oublier en outre qu’il s’agit dans tous les cas d’une première version du langage, qui nécessite la bêta de Xcode 6.0 pour fonctionner.
Pour mieux cerner l'impact potentiel d'un nouveau langage, nous avons demandé à des développeurs et des entreprises de nous donner leur avis sur l’arrivée de Swift. Comme on va le voir, certains aspects reviennent souvent, mais chacun s’oriente vers des réflexions propres, en fonction de l’utilisation qu’il pourrait en faire.
EVERYDAYiPLAY : le besoin de solutions multi-plateformes
Nous nous sommes entretenus avec Vincent Vergonjeanne, fondateur et PDG de la société EVERYDAYiPLAY, spécialisée dans le jeu mobile. L’avis général est plutôt mitigé, et ce pour une raison simple : « c’est encore un nouveau langage ». Il estime qu'il « aura du mal à trouver un large public ». Pour le PDG, la question du multiplateforme se pose en permanence.
Le constat général est en effet que le marché obéit à certaines pressions : « Dans le marché d’aujourd’hui, presque tous les jeux sont développés grâce au moteur Unity, Coco2D et ainsi de suite. Parce que le besoin d’exister sur iOS, Android et sur le web simultanément est un élément clé de la survie de leurs éditeurs » indique Vincent Vergonjeanne. Il ajoute d’ailleurs : « Nous utilisons Unity de notre côté », illustrant la nécessité pour lui de pouvoir coder partout à la fois.
L'éditeur était en revanche beaucoup plus intéressé par la technologie Metal, annoncée en même temps que Swift, et d'ailleurs soutenue par Unity. Pour le PDG, la technologie va permettre d’augmenter le nombre de polygones à l’écran ainsi que d’images par seconde. Il aborde également un point intéressant de l’impact de Metal : il est réservé à la puce A7 et ses versions ultérieures, ce qui devrait pousser les utilisateurs vers des modèles récents d’appareils afin de profiter des avantages offerts. La technologie pourrait réduire la fragmentation, et Vincent Vergonjeanne en rappelle tout l’intérêt : « Nous sommes toujours sur un marché avec une forte segmentation d’appareils. Nous aurons toujours besoin de nous appuyer sur le plus petit dénominateur commun ».
Vikings Gone Wild, édité par EVERYDAYiPLAY
VideoLAN : une syntaxe étrange, mais des avantages notables
Du côté de l’association VideoLAN, qui édite le célèbre lecteur multimédia VLC, le ton est plutôt optimiste. Felix Paul Kuehne, l’un des principaux développeurs, trouve ainsi que Swift est « clairement inspiré de Go et d’autres langages modernes ». Rappelons que Go est inspiré du C et avait été annoncé par Google il y aura bientôt cinq ans.
Pour Kuehne, l’arrivée de Swift va manifestement se faire en douceur : « Il est entièrement compatible avec les bibliothèques Objective-C. Il ne possède pas directement de ramasse-miettes mais utilise quand même ARC ». Il estime également le langage « plus rapide que l’Objective-C », notant au passage la possibilité de « le mélanger avec du code Objective-C et C ». On peut « même l’utiliser comme un langage de script dans le compilateur JIT du terminal ». Le développeur semble particulierement apprécier le mode Playgrounds dans Xcode, « qui permet de déboguer le code sans l’exécuter d’abord ». Du coup, « vous pouvez voir les erreurs logiques tout de suite quand vous écrivez votre code ».
Concernant l’utilisation proprement dite, Kuehne trouve que « la syntaxe est peu étrange » mais précise qu’il s’y « fera ». Il note en tout cas un point qui met décidément tout le monde d’accord : « Objective-C était terriblement verbeux mais la syntaxe est énormément raccourcie avec Swift », ajoutant qu’il « n’a pas besoin des points-virgules comme dans Go ». En tant que tel, il estime que Swift sera le langage d’Apple « pour au moins les dix prochaines années ».
Il reste cependant du chemin d’ici la version finale, « attendue pour l’automne après quatre ans de développement ». Il indique en effet : « Je connais une quinzaine de façons de faire planter le compilateur jusqu’ici ».
VLC sur iOS
Stéphane Sibué : Objective-C n'est pas mort
Stéphane Sibué est un développeur chevronné, habitué aux plateformes mobiles depuis longtemps, et est le directeur technique de la société SoftElite. Il a été MVP Microsoft de 2003 à 2012 mais développe sur l’ensemble des systèmes mobiles, notamment via sa structure Guyzmo. Il nous indique à ce titre s’être tout de suite intéressé à Swift et a d’ailleurs commencé à ingérer la documentation d'environ 500 pages sur le langage, publiée par Apple sur iBooks.
Sibué note un certain nombre de points positifs au sujet de Swift, notamment son aspect « moderne et pratique ». Lui aussi note « le code beaucoup plus court » quand on le compare à Objective-C. Tout comme la « vraie gestion de la mémoire », la « disparition des pointeurs » et un « compilateur très intelligent ». Des améliorations qui pourraient d’ailleurs « inciter les nouveaux développeurs à s’y intéresser ».
Mais en tant que langage parmi d’autres, la place de Swift n’est pas acquise. Pour Stéphane Sibué, le langage est notamment « une réponse d’Apple aux problématiques d’asynchronisme » dans les applications. Swift suppose par ailleurs de « laisser la main à certaines automatisations, notamment dans la gestion de la mémoire ». De fait, le langage, même s’il permet de coder plus rapidement (une fois maîtrisé), pourrait avoir un impact négatif sur les performances. Le développeur indique cependant que l’on manque de recul et que « la version 1.0 finale ne doit pas arriver avant plusieurs mois ». Il estime dans tous les cas que « l’Objective-C sera là encore longtemps ».
La concurrence face aux autres langages sera donc un point intéressant. Pour Stéphane Sibué, Apple veut peut-être « ramener à elle les développeurs indécis ». Car selon lui, l’une des questions importantes à se poser est : « Que choisiront les nouveaux développeurs qui sortiront de l’école ? Que choisira le gars au fond de son garage ? ». Il pense en outre que Swift est une réponse partielle à l’attraction grandissante que représentent les outils de développement de Microsoft et l’augmentation progressive de la part de marché de Windows Phone.
Lui-même trouve quoi qu’il en soit le langage « très intéressant ». Il « ne se pressera pas » pour son utilisation mais continuera d’observer les avancées qui seront faites.
Applidium : Swift ne va changer les habitudes que pour une minorité du code
Applidium est une entreprise française comptant une trentaine d’employés. La société est spécialisée dans la création d’applications mobiles, avec une orientation particulière : il n’est pas question de développeurs multiplateforme, ceux-ci préférant créer du code natif et aussi optimisé que possible pour chaque plateforme. Nous nous sommes entretenus avec Romain Goyet, co-fondateur de l’entreprise et lui-même contributeur de VLC. Son avis est particulièrement marqué : « Contrairement à d’autres, nous sommes très, très contents de l’annonce de Swift ». Un optimisme qui n’est pas nécessairement étonnant puisque Applidium utilise intensivement l’Objective-C dans ses projets.
Il expose cependant son point de vue en notant une série de points forts. « Déjà, Swift n’est pas imposé, en tout cas pour l’instant » indique-t-il ainsi. « Objective-C sera de toute façon soit maintenu encore des années, soit laissé en l’état, mais il ne sera pas retiré ». Comme Felix Paul Kuehne de VideoLAN, il note d’ailleurs la possibilité de brasser Swift avec l’Objective-C et le C. Conséquence : « Tout ce qu’on connait actuellement ne devient pas d’un coup obsolète ».
Il tient ensuite à expliquer un point important : « Quand les gens pensent Objective-C, il faut savoir que ce n’est que la partie émergée de l’iceberg. Vis-à-vis des frameworks et des API, on peut dire qu’il ne représente que 10 % de l’apprentissage nécessaire ». Du coup, Swift ne fait que remplacer ces 10 %, car « le reste ne change pas et est partagé entre tous les langages ».
L'application iTélé, réalisée par Applidium
Comme Stéphane Sibué, il trouve en outre que Swift est « très intéressant », notamment parce qu’il est « plus facile ». D’ici un ou deux mois, il pense que les développeurs seront prêts à l’utiliser et « l’investissement sera rentabilisé », avec plusieurs bénéfices : « Un code plus court, donc moins de bugs, surtout avec un compilateur plus intelligent ». Applidium compte d’ailleurs utiliser Swift, « soit pour des nouveaux projets, soit à travers l’ajout de fonctionnalités dans des produits existants ». Les utilisateurs ne devraient cependant pas s’attendre à voir réellement des différences : « Dans la pratique, on ne peut pas dire si une application a été codée en Objective-C ou en Swift une fois qu’elle a été compilée ».
Romain Goyet pointe également dans une autre direction : la véritable rentabilité de l’apprentissage de Swift. Ainsi, même si le nouveau langage peut faire gagner du temps aux développeurs Objective-C, « il reste fermé car destiné uniquement à l’environnement Apple ». Un point important alors que le nombre d’outils de développement multiplateforme augmente. Le fondateur renchérit : « Si Swift devenait open source, les acquis pourraient être réutilisés sur d’autres plateformes ». Et pourquoi pas sur Android avec les API de Google par exemple ? « Peut-être ! Théoriquement, c’est possible ».
Swift : les enjeux du nouveau langage annoncé par Apple
-
Pourquoi un nouveau langage et pas un langage existant ?
-
Avant tout, un code plus sûr
-
Éléments d’autres langages et compilation dynamique
-
EVERYDAYiPLAY : le besoin de solutions multi-plateformes
-
VideoLAN : une syntaxe étrange, mais des avantages notables
-
Stéphane Sibué : Objective-C n'est pas mort
-
Applidium : Swift ne va changer les habitudes que pour une minorité du code
Commentaires (50)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 13/06/2014 à 09h19
Le 13/06/2014 à 09h21
Le 13/06/2014 à 09h23
Le 13/06/2014 à 09h31
la véritable rentabilité de l’apprentissage de Swift. Ainsi, même si le nouveau langage peut faire gagner du temps aux développeurs Objective-C, « il reste fermé car destiné uniquement à l’environnement Apple ».
Tout est là: qui va vouloir faire l’effort de s’adapter à un écosystème de développement qui cible 10-20% du marché des smartphones, et ne peut être réutilisé ailleurs ?
Comme dit dans l’article,
la question du multiplateforme se pose en permanence.
Il reste quoi ?
Quelques concepteurs de framework multi-plateforme (et encore, ceux qui voudront lâcher C/Objective-C), quelques irréductibles qui ne désirent adresser que le marché Pommé.
En dehors de ça, point de salut. Dans ce contexte, je ne pense pas que le langage a vocation à se répandre comme une trainée de poudre.
Le 13/06/2014 à 09h41
Le 13/06/2014 à 09h47
Le 13/06/2014 à 09h56
Le 13/06/2014 à 09h58
Le 13/06/2014 à 10h07
Le 13/06/2014 à 10h34
Le 13/06/2014 à 10h45
Le 13/06/2014 à 11h18
Le 13/06/2014 à 11h37
Le 13/06/2014 à 11h38
Le 13/06/2014 à 12h04
Existe t il des devs courageux (dans le sens qui se levent tot, pas le genre fou) qui développent sous bbry pour avoir un avis comparatif ? Perso je ne connais que l assembleur saturn " />
Le 13/06/2014 à 12h56
Le 13/06/2014 à 07h09
Très bon article ! espérons que PlayCanvas/HTML5 nous simplifie tout ça. Mais l y aura de toutes façons toujours des applis en code “Natif”
Le 13/06/2014 à 07h14
Etant un petit dev indépendant, je me demande si ils vont enfin permettre de développer facilement sous d’autres systèmes d’exploitation. (je sais je rêve :p)
Le 13/06/2014 à 07h18
Enfin un article clair sur ce nouveau truc " />" />" />" />
Le 13/06/2014 à 07h36
Ca a l’air intéressant, mais moi qui n’y connais absolument rien en code, ben j’ai du mal à comprendre et à me rendre compte du véritable intérêt.
Dépassé je suis.
Le 13/06/2014 à 07h59
Pour l’instant le côté non-multiplateforme reste quand même un gros écueil, c’est du perdu pour toutes les boîtes qui font autre chose que de l’interface. Chez nous (startup eye tracking) tout l’algo est en c++ pour sa rapidité et sa compatibilité multiplateforme, Swift ne répond certainement pas à ce besoin là. Je comprends qu’ils fassent un truc sur mesure pour leurs besoins, mais la multiplication des langages est pénible, d’autant que Swift ne risque pas d’être très répandu en dehors des Apps iOS.
Il faut être un peu critique avec les annonces d’Apple : non, Swift ne remplacera certainement pas Python, et non Swift ne sera pas un raz de marée chez les devs, trop de défauts (aucun écosystème existant, pas aussi rapide que du c++, seulement utilisable chez Apple pour l’instant donc l’utilisation sur serveur est hors du spectre). Ceci n’est pas une révolution..
Le 13/06/2014 à 08h03
Le 13/06/2014 à 08h06
Le 13/06/2014 à 08h08
Apple n’avait pas encore de langage safe c’est une bonne chose " />
On voit une nouvelle génération de langages comme GO ou M# qui sont safe mais n’utilisent pas de compilation JIT.
Par contre je suis étonné du peu de réactions sur les performances. Apple a quand même annoncé à la conférence qu’il était plus rapide que C " />
Vu toutes les réactions sur les performances depuis 5 ans où je parle de bartok ,de M# et des langages safe, j’imaginais ce genre de débats débarquait " />
Le 13/06/2014 à 08h11
Le 13/06/2014 à 08h15
Le 13/06/2014 à 08h15
Le 13/06/2014 à 08h16
bon moi après lecture de l’actu je retourne à mon COBOL " />
Le 13/06/2014 à 08h42
l’Objective-C est très largement basé sur le C et en garde donc une bonne partie des problèmes. C’est en particulier le cas des pointeurs
C’est faux !
Les pointeurs en C, ce n’est pas un problème. Cela vient simplement des personnes programmant en C n’ayant pas le niveau de compétence requis.
Le 13/06/2014 à 08h45
Le 13/06/2014 à 08h50
Est-ce que les tuples peuvent être imbriqués ? par exemple :
var mon_tuple = (arg : 502, tab : (sub : 12))
Le 13/06/2014 à 08h56
Le 13/06/2014 à 08h57
Le 13/06/2014 à 08h58
Le 13/06/2014 à 09h03
Pourquoi un nouveau langage et pas un langage existant ?
Devant le succès rencontré par la plateforme mobile d’Apple, on peut se demander pourquoi introduire un nouveau langage alors que les développeurs iOS sont nombreux. Il faut savoir en fait que l’Objective-C est très largement basé sur le C et en garde donc une bonne partie des problèmes. C’est en particulier le cas des pointeurs, qui sont tout simplement les adresses mémoire du premier octet d’un objet. Plus la taille d’une application augmente, plus leur nombre croît en proportion. Lorsqu’une erreur survient avec un pointeur, il y a essentiellement deux conséquences : un crash de l’application ou l’ouverture d’une faille de sécurité.
En gros, un developpeur qui ne vaut rien va faire de la merde des qu’il sort de java.
Pour les autres ils peuvent faire des apply bien plus performante qui ne crash pas.
Le 13/06/2014 à 09h04
Le 13/06/2014 à 09h05
Le 13/06/2014 à 09h12
Le 13/06/2014 à 09h17
Le 13/06/2014 à 13h16
Le 13/06/2014 à 13h54
bon, ayé… j’ai craqué, abonné ^^ le commentaire constructif peut être plus tard après lecture de l’article " />
tiens, tant que j’y suis, quelqu’un aurait il un feedback sur dot42 ? légèrement hors sujet mais le bidule m’a l’air très intéressant et personne n’en parle ou presque
Le 13/06/2014 à 14h43
Le 13/06/2014 à 14h45
Le 13/06/2014 à 15h03
Le 13/06/2014 à 15h14
Le 13/06/2014 à 16h54
Le 13/06/2014 à 17h14
Le 13/06/2014 à 17h23
Erreur à supprimer
Le 13/06/2014 à 18h06
Le 14/06/2014 à 09h17