Swift reste très minoritaire dans iOS 14

Nicolas Furno |

Swift est le nouveau langage de développement d’Apple et depuis sa première sortie en 2014, l’entreprise l’utilise chaque année plus fortement dans iOS (et macOS). Cette année encore, son utilisation a doublé avec 351 binaires et frameworks qui reposent au moins en partie sur lui. C’est une progression constante, mais cela ne veut pas dire que Swift est devenu majoritaire, très loin de là.

Le développeur Timac qui analyse tous les ans depuis iOS 10 la progression de Swift dans les binaires et frameworks conçus par Apple s’est lancé dans une tâche plus ambitieuse encore. Il est remonté à iPhone OS 1.01, la toute première version du système mobile d’Apple sortie en 2007, pour compter le nombre de binaires et le langage utilisé par chacun d’entre eux. Ses résultats ainsi que la méthode sont détaillés sur son blog.

Graphique de l’évolution du nombre de binaires pour chaque langage dans l’histoire d’iOS.

Sur ce graphique, les binaires codés Objective-C sont en bleu clair, ceux en Swift sont en rouge et ceux en SwiftUI en orange. Ce framework d’interface introduit l’an dernier n’est quasiment pas visible, mais c’est logique par rapport à sa jeunesse. Dans iOS 14, Apple l’utilise surtout pour ses propres widgets, et elle n’a pas le choix : c’est la seule technologie disponible dans ce cadre.

On note très bien l’apparition de Swift avec iOS 10 et l’augmentation régulière du nombre de binaires qui exploitent ce langage. Le graphique met bien en perspective ce chiffre par rapport aux binaires codés en Objective-C, le langage historique d’Apple. Non seulement il reste ultra-dominant, mais sa croissance n’a pas baissé avec l’apparition de Swift et il y a de plus en plus de binaires qui l’utilisent chaque année. De ce fait, les binaires d’iOS 14 reposent pour 8 % seulement d’entre eux sur Swift, contre 88 % encore pour Objective-C.

Dans le détail, on peut aussi noter qu’Apple utilise aussi beaucoup C et C++, deux langages plus bas niveau qui restent indispensables notamment pour le noyau du système et certaines fonctions liées au matériel. Si le nombre de binaires en C s’est stabilisé autour de 300 au fil des années, les binaires en C++ continuent d’augmenter chaque année. Dans iOS 14, ils représentent même le double des binaires en Swift.

Le nombre de binaires et leur langage dans chaque version d’iOS.

Au-delà des langages de développement utilisés, cette étude est un bon indicateur de la complexité croissante d’iOS, dont la dernière version repose sur vingt fois plus de binaires que la première. Imaginez qu’iPhone OS 1.0 ne permettait pas d’installer d’apps tierces et ne pouvait même pas changer le fond d’écran derrière les icônes de l’écran d’accueil ! À cette époque, même Objective-C était minoritaire derrière C, qui était probablement indispensable pour obtenir des performances correctes sur le matériel si limité des premiers iPhone et iPod Touch :

Comme à chaque fois, Timac rappelle que le système d’Apple n’étant pas open-source, on ne peut avoir qu’une idée limitée de ce qui le compose. En se basant sur le nombre de binaires, on n’a aucune idée de la complexité sous-jacente ou même du nombre de lignes pour chaque langage, ce qui changerait notre vision du système.

Malgré tout, c’est une plongée intéressante sous le capot d’iOS et un joli rappel que Swift est un langage jeune qui est encore loin de pouvoir répondre à tous les besoins. Il lui reste encore beaucoup de chemin pour devenir le langage universel, capable d’écrire un noyau, une app ou même des scripts. C’était, après tout, son objectif initial :


  1. iOS est né sous le nom d’iPhone OS. Ce n’est qu’avec l’arrivée de l’iPad que son nom a changé, avec iOS 4 en juin 2010.  ↩︎

avatar orio500 | 

Première sortie en 2014 il me semble non ?

avatar Nicolas Furno | 

@orio500

En effet, c'est corrigé !

avatar r e m y | 

Amusant de se repasser les Keynotes de la WWDC présentant SWIFT comme LE langage révolutionnaire qui va supplanter tous les autres tellement il simplifie la vie des développeurs 😊

Comme quoi, le champ de distorsion de la réalité si cher à Steve Jobs n'a pas quitté l'esprit maison à Cupertino 🥴

(Depuis les premières Keynotes, Apple a un peu mitigé son discours. Aujourd'hui ils parlent plutôt d'un langage qui "s’intègre naturellement au code Objective‑C existant.")

avatar Inconnu-Soldat | 

Mais bien sûr.
Lorsqu'Apple parle d'un langage qui prendra une place majeure, ce qui est évidemment le cas, Apple parle de nouveaux développements et non de tout refaire en SWIFT. Mais là, c'est votre déformation de la pensée qui est en jeu et non celui de la pensée d'Apple. Cet article parle d'un OS qui évolue. Il s'agit donc de son utilisation pour ajouter à ce qui existe et non tout remplacer. Et si on regarde sa progression, elle est exponentielle quand celle d'objective C est quasi linéaire. Le pourcentage passe de 2 % à plus de 10 % de l'un par rapport à l'autre entre le début et aujourd'hui. Pour C+ c'est de 10 à plus de 50 %. Ce qui compte c'est de regarder aujourd'hui la place de SWIFT, non sur l'ensemble des développements, mais sur ceux qui se font aujourd'hui partant de rien. Mais ça cela doit vous être difficile à comprendre. Mais vous êtes content de vous vous avez pu sortir un de ces poncifs, un de ces mantras : le champ de distorsion de la réalité. Ah un beau slogan, qui fait savant.
SWIFT est passé en trois ans de la 16è place à la la 10è en 2017. Tiens cadeau : https://htpratique.com/top-langages-programmation/
Dans un autre classement en juin 2020 SWIFT est passé devant objective C. Il est en 11è place.
De toutes façons comparer les solutions de programmation sans tenir compte des domaines d'application est un non sens. On peut faire 1 % de l'ensemble et 100 % de son secteur (genre pneus d'avion/ pneus de voiture/ensemble des pneus). Il reste donc à savoir où se situe SWIFT dans sa catégorie. Comparer SQL à SWIFT est un non sens. Comparer JavaScipt à SWIFT est un non sens.

avatar Scooby-Doo | 

@Inconnu-Soldat,

« Cet article parle d'un OS qui évolue. »

Okay ! Si l'utilisation de Swift a doublé, il resteTRÈS MINORITAIRE au sein d'iOS 14 !

Ce n'est pas moi qui l'affirme !

« Swift reste très minoritaire dans iOS 14 »

Merci de lire aussi le titre de l'article avant de commenter à l'emporte-pièce !

Comme d'habitude devrais-je ajouter vous concernant tellement le niveau est bas...

😁

avatar oomu | 

@Inconnu-Soldat

votre propos sur les projets nouveaux aurait été tout autant intéressant et pertinent sans la condescendance.

avatar Florent Morin | 

Swift pourrait rejoindre Objective-C parmi les langages « puissants » avec Swift 6. Dont la timeline reste indéterminée.

Aujourd’hui, c’est un excellent outil de productivité mais pas forcément de performances. Du moins, pas autant que son prédécesseur.

avatar BeePotato | 

@ Florent Morin : « Aujourd’hui, c’est un excellent outil de productivité mais pas forcément de performances. Du moins, pas autant que son prédécesseur. »

On peut obtenir les mêmes performance en Swift qu’en Objective C, en procédant exactement de la même façon : écrire en C les parties critiques.

La différence, c’est qu’en Objective C ça se fait facilement et ça s’intègre naturellement au reste du code, ce langage étant juste une extension du C.
Alors qu’en Swift, même s’il n’est pas difficile de s’interfacer avec du code C, ça n’a rien d’aussi naturel. C’est clairement un bout de code en langage alien auquel on fait appel.

J’aime beaucoup Objective C, en partie pour ça.
J’aime bien Siwft aussi, pour une partie de sa syntaxe, mais il faut bien avouer que c’est un langage bien plus complexe et subtil à maîtriser.

avatar djpoulet | 

Je suis en train de découvrir ce langage ainsi que la création d’interface avec SwiftUI, c’est vraiment un langage puissant, moderne et facile d’accès.
Pour ceux que ça intéresse, je recommande les cours de Maxime Britto sur Purple Giraffe, ils sont très pédagogiques et efficaces.

avatar smog | 

Merci, je'allais justement demander comment s'y mettre !

avatar RedMak | 

J’utilise swift à 100% depuis 3/4 ans, j’ai utilisé objective-c pendant 5/6 ans avant. Pour moi swift est un très bon langage mais il n’as pas changé ma façon de penser pour concevoir une app, j’ai juste changer de « tournevis » avec qq problème au passage comme la migration d’une version swift à une autre, la compilation plus lente que celle d’obj-c ..
Après pour SwiftUI et les widget, ils pouvaient être en obj-c (bien sure il faut mettre à jour le langage)
Je dis pas que obj-c est meilleur que swift (ou l’inverse d’ailleurs) mais l’effort pour créer un nouveau langage pouvait être mi pour upgreder obj-c. Mais il est vrai que pour quelqu’un qui débute, swift est plus facile à prendre en main que obj-c.

avatar BeePotato | 

@ RedMak : « Mais il est vrai que pour quelqu’un qui débute, swift est plus facile à prendre en main que obj-c. »

Pas d’accord avec ça.
Au premier abord, il est d’un aspect plus simple qu’Objective C, notamment grâce à l’inférence de type et à de nombreux raccourcis syntaxiques.

Mais on tombe vite sur le besoin de maîtriser les subtilités de son modèle de programmation, autrement plus complexe que celui d’Objective C : se demander si à tel endroit du code un CoW va se déclencher ou non, si à tel autre endroit on aura droit à un dispatch statique ou dynamique, etc.
Objective C et bien plus simple et constant sur ce plan (ce qui facilite sa prise en main et certains aspects du développement, mais se paye au niveau des performances que l’on peut atteindre).

avatar fte | 

@RedMak

"Pour moi swift est un très bon langage mais il n’as pas changé ma façon de penser pour concevoir une app"

Haskell ou, plus simple, F#, et ta façon de penser changera.

Grand Central Dispatch a plus d’influence sur la façon de structurer une app que Swift.

Swift n’est pas grand chose de plus que yet another object oriented programming language.

avatar RedMak | 

@fte

Toi t’as rien compris de ce que je disais..

La partie qui parle d’effort pour créer un nouveau langage ..

avatar fte | 

@RedMak

"Toi t’as rien compris de ce que je disais..

La partie qui parle d’effort pour créer un nouveau langage .."

Et toi "tu n’as pas compris" que je ne répondais pas à cette partie sur l’évolution des langages mais sur la première partie qui évoquait l’influence du langage sur la façon de concevoir une app.

Mais si on pouvait ne pas s’insulter en se traitant d’imbéciles qui ne comprennent rien, ce serait encore mieux. On pourrait même, folie ?, imaginer avoir une conversation intéressante sur les influences croisées des langages, frameworks et gestes des développeurs.

avatar RedMak | 

@fte

Je m’excuse, je croyais que vous étiez dans la provoque, désolé.

Pour revenir au sujet, en fait il faut lire le text en entier, je voulais dire que au lieu de « perdre » du temps pour créer in nouveau langage qui, justement, ne change pas la façon dont les dev code et dont les users utilise/interagissent avec l’app, il fallait peut-être se concentrer sur obj-c pour aller plus vite pour faire ce qu’ont voulait faire.
Voila :)

avatar BeePotato | 

@ RedMak : « je voulais dire que au lieu de « perdre » du temps pour créer in nouveau langage qui, justement, ne change pas la façon dont les dev code et dont les users utilise/interagissent avec l’app, il fallait peut-être se concentrer sur obj-c pour aller plus vite pour faire ce qu’ont voulait faire. »

Ça faisait justement partie des objectifs lors du développement de Swift, de le rendre parfaitement utilisable avec Cocoa, histoire de ne pas tout changer d’un coup. Le résultat est forcément que le principe de développement de la partie interface utilisateur d’une application reste le même.
Cependant, certaines nouveautés de Swift par rapport à Objective C ont pu permettre de changer d’approche pour la partie modèle de certaines applications.

Et depuis, on a pu assister à la sortie de SwiftUI, qui change nettement, par rapport à Cocoa, la façon de développer l’interface utilisateur.
Or je doute qu’il aurait été possible de créer quelque chose de similaire à SwiftUI sur la base d’Objective C (sauf à transformer le langage tellement en profondeur que ça reviendrait à… créer un nouveau langage).

Maintenant, que le changement apporté par SwiftUI soit un bien ou un mal, c’est une autre question. :-)

avatar marc_os | 

@ BeePotato
C'est sûr, SwiftUI c'est plus moderne que de l'HTML, mais c'est le même principe : Définir une interface utilisateur, non pas à l'aide d'un outil moderne et graphique, mais avec du code.
Et si on y tient, Objective C et juste le C auraient très bien pu servir de base, vu que :
struct Content : View {
var body: some View {
....
}
}
n'est qu'une variante de déclaration de structure.

avatar BeePotato | 

@ marc_os : « C'est sûr, SwiftUI c'est plus moderne que de l'HTML, mais c'est le même principe : Définir une interface utilisateur, non pas à l'aide d'un outil moderne et graphique, mais avec du code. »

Comme je l’ai dit, que cette approche soit une bonne ou mauvaise chose est une question différente de ce dont on discutait.
Pour ma part, j’avoue que je reste un fan d’Interface Builder et de Cocoa. :-)

« Et si on y tient, Objective C et juste le C auraient très bien pu servir de base, vu que :
struct Content : View {
var body: some View {
....
}
}
n'est qu'une variante de déclaration de structure. »

La partie non faisable avec ces langages sans une lourde modification est celle que tu as volontairement omise et remplacée par des points de suspension.

avatar marc_os | 

@ BeePotato
Justement. Cette partie là est un ajout et il aurait pu très bien être fait au dessus de Objective C qu'Apple n'était pas obligé de ne pas faire évoluer.

Mais tu ne réponds pas à l'essentiel : Alors qu'aux débuts du web, les gens cherchaient des outils graphiques pour générer de l'HTML (GoLive, etc.) au moins pour la structure générale des sites, Xcode a proposé dès le débug Interface Builder qui génère des fichiers XML décrivant l'interface et ses liens avec le code.
Là, c'est la démarche inverse: Le format XML brut étant imbuvable pour une édition à la main, ils proposent SwiftUI pour faire comme avec de l'HTML.
Quelles sera la prochaine avancée du même tupe ?
Réactiver le mot clef asm pour programmer en assembleur ?

avatar BeePotato | 

@ marc_os : « Justement. Cette partie là est un ajout et il aurait pu très bien être fait au dessus de Objective C qu'Apple n'était pas obligé de ne pas faire évoluer. »

Oui, comme je l’ai écrit, au prix d’une lourde modification du langage — que tu n’aurais peut-être pas plus aimée que Swift.

« Mais tu ne réponds pas à l’essentiel »

J’y ai répondu avant même que tu ne poses la question. ;-)
Puis encore une fois (juste au-dessus) après que tu as posé la question.
Je ne vais pas le refaire.

Notons au passage que le fait d’utilise un outil graphique de conception d’interface ou de générer son interface entièrement via du code, ça n’a pas grand rapport avec le web. Ça existait déjà avant — Interface Builder lui-même datant d’avant les débuts du web.

avatar morpheusz63 | 

A la de l'article il est écris que swift devrais remplacer le C à long terme, ils sont soit ambitieux ou arrogants chez Apple..je gravite dans le milieux du dev, mais il ne se rendent pas compte de l'emprise du C au niveau info, vous le trouver partout, et remplacer ce langage par du swift va demander au moins 20 ans, car il faut s'ouvrir aux autres démontrer l'utilité au bas niveaux de du dev, faire du charme aux pres des grosses tête etc

avatar Scooby-Doo | 

@morpheusz63,

« A la de l'article il est écris que swift devrais remplacer le C à long terme, ils sont soit ambitieux ou arrogants chez Apple..je gravite dans le milieux du dev, mais il ne se rendent pas compte de l'emprise du C au niveau info, vous le trouver partout, et remplacer ce langage par du swift va demander au moins 20 ans, car il faut s'ouvrir aux autres démontrer l'utilité au bas niveaux de du dev, faire du charme aux pres des grosses tête etc »

Okay, pourquoi pas !

Et en Français, cela donne quoi ?

Parce que si vous programmez comme vous écrivez, bonjour la tonne de bugs !

😁

avatar morpheusz63 | 

@Scooby-Doo

On m'avais dis que les dev étaient prétentieux, et se prenez pour des rock stars.. c'étaient donc vrai, merci pour ton feedback de mon commentaire, comment te dire ça me touche une sans bouger l'autre

avatar Scooby-Doo | 

@morpheusz63,

« On m'avais dis que les dev étaient prétentieux, et se prenez pour des rock stars.. c'étaient donc vrai, merci pour ton feedback de mon commentaire, comment te dire ça me touche une sans bouger l'autre »

Purée ça pique les yeux !

Et en Français, cela donne quoi ???

Plus vous intervenez, plus vous faites de fautes ÉNORMES de Français !

😁

Okay je branche le décodeur Canal+ et voici le résultat :

« On m’avait dit que les dev étaient prétentieux, et se prenaient pour des rock stars. C'était donc vrai. Merci pour ton feed-back de mon commentaire. Comment te dire : ça m'en touche une sans bouger l'autre. »

Et c'est bien le problème : être ignorant de son handicap et persister à l'ignorer...

😇

Pages

CONNEXION UTILISATEUR