Quel langage de programmation est utilisé par le développement des applications iOS ?


Dépend de ce que vous considérez comme iOS.

Le noyau est principalement écrit en C avec un peu d'assemblage et un peu de C++ embarqué. Les chargeurs d'amorçage (deux étapes de) sont en assemblage et en C. Ou peut-être que je me souviens mal et que la première étape est entièrement en assemblage.


Les pilotes de périphériques sont principalement en C++ embarqué, ou peut-être en fait tout en C++, mais certains n'utilisent définitivement que la partie C du C++.

Les bibliothèques de niveau inférieur sont en C, et un peu en assemblage. Les bibliothèques/frames de plus haut niveau sont C/C++, ObjC, ObjC++, et (rarement) un peu d'assemblage. Le C++ n'est jamais exposé en tant qu'API. Si des bibliothèques/frameworks sont maintenant écrits en Swift, ils ne sont pas non plus exposés en tant qu'API (il n'y a pas encore d'ABI Swift stable). Les démons du système sont en C/C++/ObjC. Je ne vois pas de raison pour qu'ils ne soient pas ObjC++, mais je ne pense pas qu'aucun ne l'était.

Note : à partir d'iOS 13, certaines des bibliothèques (SwiftUI et Combine) ont une API Swift (uniquement) & je m'attends à ce qu'elles soient écrites en Swift (ma réponse initiale était antérieure à l'annonce publique d'iOS 13)

Les applications groupées sont pour la plupart ObjC, certaines ont pu être ObjC++. Aucune n'était en Swift la dernière fois que j'y étais, mais il est fort possible qu'ils aient réécrit (ou ajouté quelques nouvelles classes) certaines des plus petites apps groupées en Swift, juste pour acquérir une expérience opérationnelle.

Certaines très petites parties aléatoires du système sont dans d'autres langues. Je ne suis pas sûr qu'il n'ait pas de scripts shell... mais je pense qu'il n'en a pas car je crois me souvenir qu'aucun shell n'a été livré. Il a définitivement un peu de scheme (tiny-scheme pour être exact), les définitions de sandbox sur iOS (et macOS) sont écrites en scheme, elles sont traitées par un programme qui était à l'origine écrit en C++ (mais je ne sais pas s'il l'est encore) et envoyé au noyau où un vieux code C ordinaire opère sur les données traitées.

Beaucoup de choses de type service système Unixy (ntpd par exemple) sont écrites en C, quelques-unes pourraient être en C++, mais en raison de leur âge et de leur origine la plupart du temps elles sont en C.