Swift (langage d'Apple)
Swift est un langage de programmation objet compilé, multi-paradigmes, qui se veut simple, performant et sûr. Il est développé en open source. Le projet de développement de Swift est géré par Apple, qui en est également le principal contributeur ; mais de nombreux membres de la communauté Swift, ainsi que d'autres acteurs, tels que Google et IBM, participent également à son développement. Swift est officiellement supporté sur les systèmes d'exploitation Ubuntu, iOS, macOS, watchOS et tvOS. Un support non officiel (géré par la communauté) existe pour d'autres plateformes Linux, telles que Debian et Fedora. Un manuel officiel en anglais est disponible en ligne[6]. Swift dispose d'une interopérabilité avec le langage C ainsi qu'avec l'Objective-C sur les plateformes d'Apple. Le compilateur de Swift utilise LLVM pour la génération du code machine. Swift 5.9 sort en ajoutant un système de macros, des « parameter packs » (permettant d'avoir un nombre variable de types générique aux arguments d'une fonction) et des fonctionnalités de propriété qui donnent davantage de contrôles sur la gestion de la mémoire et les performances[7]. La version 5.10 sortie en améliore le modèle de concurrence du langage, permettant une pleine isolation des données évitant ainsi les situations de compétition sur les données. C'est également la dernière version avant l'arrivée de Swift 6[8]. Swift 6 a été présenté durant la WWDC 2024 et introduit Swift Concurrency. Cette version prend désormais en charge Debian, Fedora et Ubuntu 24.04[9]. HistoriqueLe développement de Swift a été commencé en 2010 par Chris Lattner et prend ses sources dans de nombreux langages de programmation tels qu'Objective-C, Haskell, Ruby, Python, Caml ou C#. La première version publique (1.0) a été publiée le à la WWDC 2014. En , Apple annonce le passage en open source du langage Swift lors de la WWDC 2015[10], et celui-ci est effectif en décembre de la même année. La version 3.0 de Swift est lancée en [11]. La version 4.0 est disponible depuis le et se concentre principalement sur la stabilité de la syntaxe du code source[12]. La version 5.0 est disponible depuis le et apporte principalement la stabilisation de l'ABI. RéceptionSwift a été bien accueilli par les développeurs habitués aux technologies d'Apple[13]. Ceux-ci l'ont notamment jugé plus simple et plus concis que l'Objective-C. Certains développeurs ont annoncé qu'ils développeraient de nouveaux logiciels entièrement en Swift. C'est le cas, par exemple, de Brent Simmons (développeur à l'origine de MarsEdit et NetNewsWire), qui a annoncé que la version Mac de son logiciel Vesper serait développée entièrement avec Swift. Facebook a également ajouté la prise en charge de Swift à Parse[14]. Quelques jours après sa présentation, Swift était en passe d'entrer dans la liste des 20 langages de programmation les plus populaires (index TIOBE)[14]. Au plus haut, Swift a été classé à la 9e place au classement TIOBE au mois de janvier 2020[15]. Le livre The Swift Programming Language avait été téléchargé plus de 370 000 fois le lendemain de l'annonce de Swift à la WWDC 2014[16]. Réactivité d'Apple face aux retours des développeursApple affirme clairement prendre en compte les retours des développeurs pour améliorer Swift[17]. Une critique des développeurs à propos des premières versions de Swift était l'absence d'access modifier (tels que ceux qui existent en Objective-C) ; alors qu'Apple ne communique que rarement sur les futures fonctionnalités de ses produits, un ingénieur d'Apple répond aux développeurs, leur annonçant que ceux-ci seraient ajoutés dans les futures mises à jour de Swift[18]. Le , Apple ajoute ceux-ci à Swift. Mi-, Apple ouvre sur son site web un blog consacré à Swift[19] dans lequel les ingénieurs d'Apple parlent des coulisses de la création de Swift ainsi que des dernières nouveautés et conseils à propos de ce langage. LicenceLe , Apple annonce que le code du compilateur et des bibliothèques standard seront distribués sous une licence open source[20]. Apple affirme que des contributions de la communauté seront acceptées et encouragées[21]. Depuis le , Swift est désormais disponible sous licence Apache 2.0[22]. Le code ouvert inclut le compilateur, les bibliothèques standard du langage ainsi qu'un gestionnaire de paquets[23]. Plateformes supportéesSwift est officiellement supporté sur les plateformes d'Apple, sur Linux (Ubuntu, CentOS 8, Amazon Linux 2)[24] et Windows (depuis la version 5.3)[25],[26]. Le support est assuré de manière non officielle pour Android, Linux sur l'architecture ARM, Windows, WebAssembly et d'autres systèmes. L'équipe responsable du développement de Swift a annoncé vouloir supporter officiellement de nouvelles plateformes[27],[28]. Syntaxe du langageVariables et constantesLes variables et les constantes permettent de stocker des informations. Swift supporte entre autres les types VariablesSwift infère le type de variable, c'est-à-dire qu'il n'est pas nécessaire de préciser le type d'une variable lors de sa création. Si besoin, il est possible de le préciser explicitement. var entierImplicite = 70
var doubleImplicite = 70.0
var floatExplicite: Float = 70 // On précise ici explicitement le type de la variable
ConstantesLes constantes sont à utiliser pour toute valeur qui restera inchangée lors du programme. let pi = 3.14159
let deuxPi = 2 * pi
Noms des variablesIl est possible de nommer une variable avec à peu près n'importe quel caractère Unicode, par exemple : var fréquentationTourEiffelEn2011 = 7100000
let π = 3.14159
let 你好 = "你好世界"
let سعيد" = فرح"
let 😢 = "Triste"
Les noms des variables, constantes et autres éléments de Swift ne comportent pas d'espaces. ConditionsIl existe plusieurs types de conditions en Swift, notamment Condition ifif age >= 18 {
print("Vous êtes majeur")
} else {
print("Vous êtes mineur")
}
Il est également possible d'utiliser if age >= 18 {
print("Vous êtes un adulte")
} else if age >= 11 {
print("Vous êtes un adolescent")
} else {
print("Vous êtes un enfant")
}
Condition switchswitch nombreDeCôtés {
case 3:
print("Triangle")
case 4:
print("Quadrilatère")
case 5:
print("Pentagone")
case 6:
print("Hexagone")
default:
print("Nom indisponible pour votre figure")
}
En Swift, pour des raisons de sûreté, les conditions de type switch doivent être exhaustives, c'est-à-dire qu'il est nécessaire de gérer toutes les valeurs que peut prendre la variable concernée. Pour que le switch soit exhaustif il faut ou bien tester explicitement toutes les valeurs possibles de la variable (lorsque cela est possible, typiquement dans le cas des énumérations qui n'ont qu'un nombre réduit de valeurs possibles), ou bien en ajoutant default dont les instructions seront exécutées si aucun des case précédents ne correspondait à la valeur de la variable testée. Il est également possible de tester plusieurs résultats à la fois : switch lettre {
case "a","e","i","o","u","y":
print("Voyelle")
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z":
print("Consonne")
default:
print("Votre caractère n'est pas listé")
}
Comparaison avec le switch du langage CContrairement au langage C, il n'est pas nécessaire d'ajouter l'instruction break après chaque cas d'un switch : celle-ci est présente implicitement. Si l'on souhaite reproduire explicitement le comportement «fall through» de C, on peut utiliser l'instruction Par ailleurs, le switch de Swift est une structure de contrôle de première classe et non pas l'équivalent d'un goto comme en C, ce qui signifie que chaque case dispose par défaut d'un contexte qui lui est propre. BouclesIl existe plusieurs types de boucles en Swift, notamment while, repeat while et for in. Tout comme les conditions, les conditions de boucles ne nécessitent pas d'être entourées par des parenthèses. Les boucles for "type C" présentes depuis Swift 1.0 disparaissent avec Swift 3.0, car elles sont jugées inutiles comparées aux boucles for in[29]. Boucles whileLes boucles while sont sans doute les boucles les plus élémentaires, elles répètent leurs instructions tant que leur condition est vraie. // Exemple d'une boucle affichant les nombres de 0 à 99
var i = 0
while i < 100 {
print(i)
i += 1
}
Boucles for inLes boucles « for in » sont sans doute les plus fréquentes et aussi les plus puissantes en Swift, en plus de leur expressivité, elles améliorent la sûreté (en évitant par exemple les boucles infinies) ainsi que les performances (le langage peut se passer de certaines vérifications d'intégrité de la mémoire). La syntaxe type prend la forme Le code suivant : let prénoms = ["Victor", "Emmanuel", "Victoria"]
for prénom in prénoms {
print("Bonjour, \(prénom) !")
}
Serait écrit ainsi à l'aide de « while » : let prénoms = ["Victor", "Emmanuel", "Victoria"]
var i = 0
while i < prénoms.count {
print("Bonjour, \(prénoms[i]) !")
i += 1
}
En plus d'être plus expressive, la boucle for in évite certaines erreurs de programmation telles que l'accès à un index erroné ou encore la création d'une boucle infinie. À l'instar d'une boucle for en C, Swift permet de réaliser une itération sur un intervalle scalaire grâce à l'opérateur d'intervalle fermé « ... » : for i in 1...10 {
print("i = \(i)")
}
Boucles repeat whileLa boucle repeat while (équivalente à une boucle do while dans d'autres langages) permet de répéter au moins une fois les instructions de la boucle. C'est seulement après la première exécution des instructions que la condition est vérifiée afin de répéter ou non la boucle. // Donnons nous la fonction lancerDé() qui retourne un entier aléatoire en 1 et 6
var valeurDé1: Int
var valeurDé2: Int
repeat {
valeurDé1 = lancerDé()
valeurDé2 = lancerDé()
print("\(valeurDé1) et \(valeurDé2)") /
} while !(valeurDé1 == 6 && valeurDé2 == 6) // Tant qu'on a pas un double six
OptionnelsUn optionnel est un type générique permettant de représenter, pour tout type donné, une valeur ou bien l'absence de valeur. Afin de déclarer un type optionnel, on fait suivre son nom d'un point d'interrogation, par exemple let entierOptionel = Int(chaineDeCaractères)
Ici, entierOptionel sera de type
Swift ne permet pas d'utiliser un type optionnel directement, par exemple le code suivant produit une erreur : // Erreur: Value of optional type 'Int?' must be unwrapped to a value of type 'Int'
let résultat = entierOptionel + 10
En effet, il faut déballer («unwrap» en anglais) l'optionnel, c'est-à-dire accéder explicitement à sa valeur à l'aide d'une des nombreuses syntaxes prévues à cet effet. Condition |
Portal di Ensiklopedia Dunia