Swift (langage)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Swift
Logo.

Apparu en 2014
Développeur Apple
Paradigme Orienté objet, Fonctionnel, Impératif
Influencé par Objective-C, C♯, CLU, Haskell, Python, Racket, Ruby, Rust et langage D[1]
Système d'exploitation iOS, OS X
Site web https://developer.apple.com/swift/blog/

Swift est un langage de programmation multi-paradigmes développé par la société Apple. Il est destiné à la programmation d'applications sur les systèmes d'exploitation iOS et OS X.

Il a été présenté à la WWDC 2014[2]. Il est prévu pour coexister avec l'Objective-C, langage actuel de programmation pour les systèmes d'exploitation d'Apple et le C. Il est compilé avec le compilateur LLVM. Un manuel de 924 pages[3] a été dévoilé à la WWDC.

Historique[modifier | modifier le code]

Le développement de Swift a été initié en 2010 par Chris Lattner et prend ses sources dans de nombreux langages de programmation tels que Objective-C, Haskell, Ruby, Python ou C#. La première version publique a été publiée le 2 Juin 2014 à la WWDC.

The Swift Programming Language, est un manuel de 500 pages disponibles sur iBookstore permettant de décrire les fonctionnalités du langage.

Réception[modifier | modifier le code]

Swift a été bien accueilli par les développeurs[4] ; ceux-ci l'ont notamment jugé plus simple que l'Objective-C, permettant d'en faire autant en moins de lignes.

Certains développeurs ont affirmé qu'ils développeraient de nouveaux logiciels entièrement en Swift, c'est par exemple le cas 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[5].

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)[6] ; en juillet 2014, Swift passe à la 16e place de ce classement[7].

Le livre The Swift Programming Language avait déjà été téléchargé plus de 370 000 fois le lendemain de l'annonce de Swift à la WWDC 2014[8].

Réactivité d'Apple face aux retours des développeurs[modifier | modifier le code]

Apple affirme clairement prendre en compte les retours des développeurs pour améliorer Swift[9].

Une critique des développeurs à propos 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 leurs annoncant que ceux-ci seraient ajoutés dans les futures mises à jour de Swift[10], le 21 juillet 2014, Apple ajoute ceux-ci à Swift.

Mi-juillet 2014, Apple ouvre sur son site web un blog dédié à Swift où les ingénieurs d'Apple parleront des coulisses de la création de Swift ainsi que des dernières nouveautés et conseils à propos de ce langage.

Licence[modifier | modifier le code]

À l'heure actuelle, la licence de Swift n'a pas encore été décidée par Apple, il faut noter que plusieurs ingénieurs d'Apple souhaiteraient qu'il soit open source[11].

Syntaxe du langage[modifier | modifier le code]

Écriture dans la console[modifier | modifier le code]

Pour écrire "Hello, World!" dans la console, une seule ligne de code est nécessaire :

println("Hello, World!")

Le fait que ce programme puisse être écrit en une seule ligne de code met l'accent sur la simplicité de Swift, en effet d'autre langages auraient nécessité plusieurs lignes de code, par exemple en C (norme ISO) :

#include <stdio.h>
int main(void)
{
    printf("Hello, World!\n");
    return 0;
}

Variables et constantes[modifier | modifier le code]

Les variables et les constantes permettent de stocker des informations. Swift supporte entre autres le type Int, Double, Float, Char, String et Bool.

Variables[modifier | modifier le code]

Swift 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 doubleExplicite: Double = 70 // On précise ici explicitement le type de la variable

Constantes[modifier | modifier le code]

Les constantes sont à utiliser pour toute valeur qui restera inchangée lors du programme.

let pi = 3.14159
let swiftEstGenial = true

Optionals[modifier | modifier le code]

Les optionals sont un type spécial de variable à utiliser lorsqu'une variable est susceptible de n'avoir aucune valeur.

var nomAnimalDeCompagnie: String? // Pour créer un optional, on fait suivre le type de la variable d'un point d'interrogation
var ageAnimalDeCompagnie: Int? = 4 // Il est tout à fait possible d'assigner une valeur à un optional dès sa création

On donne ici à nos variables un type optional car, dans notre exemple, il est possible qu'une personne n'ait pas d'animal de compagnie, et donc qu'il n'y ait aucune valeur pour ces variables.

Pour utiliser la valeur d'une variable de type optional, on vérifie si la variable contient une valeur ou pas ; si celle-ci a une valeur, on doit unwarper (ou déballer) celle-ci en la suivant d'une point d'exclamation.

if nomAnimalDeCompagnie { // Si la variable a une valeur
     println(nomAnimalDeCompagnie!) // On unwrap l'optional et on affiche celui-ci dans la console
}
else { // Si aucune valeur n'a été attribuée à la variable
     println("L'utilisateur n'a pas spécifié d'animal de compagnie")
}

Noms des variables[modifier | modifier le code]

Contrairement à d'autres langages tels que le C ou l'Objective-C, il est possible de nommer une variable avec à peu près n'importe quel caractère unicode, par exemple :

var fréquentationTourEiffelEn2011 = 7_100_000
let π = 3.14159 
let 你好 = "你好世界"
let 😄 = "Heureux"

Conditions[modifier | modifier le code]

Il existe plusieurs types de conditions en Swift, notamment if, switch et if let.

Condition if[modifier | modifier le code]

if age >= 18 {
     println("Vous êtes majeur")
}
else {
     println("Vous êtes mineur")
}

Il est également possible d'utiliser else if :

if age >= 18 {
     println("Vous êtes un adulte")
}
else if age >= 11 {
     println("Vous êtes un adolescent")
}
else {
     println("Vous êtes un enfant")
}

Condition switch[modifier | modifier le code]

switch nombreDeCôtés {
case 3:
     println("Triangle")
case 4:
     println("Quadrilatère")
case 5:
     println("Pentagone")
case 6:
     println("Hexagone")
case 7:
     println("Heptagone")
case 8:
     println("Octogone")
case 9:
     println("Ennagone")
case 10:
     println("Décagone")
case 11:
     println("Hendécagone")
case 12:
     println("Dodécagone")
default:
     println("Nom indisponible pour votre figure")
}

En Swift, les conditions de type switch doivent être exhaustives, c'est-à-dire qu'il est nécessaire lister toutes les valeurs que peut prendre la variable concernée ce qui rend le code plus sûr car cela oblige à gérer toutes les possibilités et donc à éviter que des résultats inattendus ne créent des erreurs lors de l'exécution du programme.

Il est également possible de tester plusieurs résultats à la fois :

switch lettre {
case "a","e","i","o","u","y":
     println("Voyelle")
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
     println("Consonne")
default:
     println("Votre caractère n'est pas listé")
}

Condition if let[modifier | modifier le code]

La condition if let est un type de condition spécifique à Swift permettant de simplifier l'unwraping des optionals ; grâce à cette condition, si un optional a une valeur, on attribue automatiquement cette valeur à une constante qui sera alors accessible entre les accolades de la fonction if let.

var nomPossibleAnimalDeCompagnie:String? = "Capie"
 
if let nomAnimalDeCompagnie = nomPossibleAnimalDeCompagnie { // Création de la constante à partir de la valeur de l'optional
     // La constante nomAnimalDeCompagnie est accessible uniquement entre les accolades de la condition if let
     println(nomAnimalDeCompagnie) // Plus besoin d'unwraper l'optional
}
else {
     println("Aucun nom spécifié pour l'animal de compagnie")
}

Boucles[modifier | modifier le code]

Il existe plusieurs types de boucle en Swift, notamment whiledo while, for et for in. Tout comme les conditions, les boucles ne nécessitent pas de parenthèses pour peu que la condition et l'accolade ouvrante soient sur la même ligne.

Classes[modifier | modifier le code]

Une classe pourrait être comparée à un type spécial de variable, permettant de regrouper différentes propriétés et fonctions pour traiter différentes données.
Voici un exemple de création de classe en Swift, celle-ci stocke des informations basiques sur un animal (nom et nombre de pattes) et peut retourner une chaine de caractères décrivant cet animal (avec la fonction simpleDescription) :

class Animal{
 
   // Exemple de propriétés
   var pattes
   var nom
 
   // Fonction d'initialisation 
   init(nomEspèce:String,nombreDePattes:Int) {
      nom = nomEspèce
      pattes = nombreDePattes
   }
 
   // Exemple de méthode
   func simpleDescription() -> String{
      return "Cet animal s'appelle \(nom) et il a \(nombreDePattes) pattes."
   }
}

Les variables/constantes d'une classe sont appelées propriétés, les fonctions sont appelées méthodes. Toutes les propriétés non optionnelles doivent avoir une valeur au moment de l'initialisation.

Voir aussi[modifier | modifier le code]

Liens internes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Notes et réferences[modifier | modifier le code]

  1. a et b « Building assert() in Swift, Part 2: __FILE__ and __LINE__ - Swift Blog - », Apple Developer (consulté le 24 octobre 2014) : « Swift borrows a clever feature from the D language: these identifiers expand to the location of the caller when evaluated in a default argument list. »
  2. « Apple announces Swift, a new programming language for iOS »
  3. The Swift Programming Language.
  4. « WWDC 2014 : le verdict (favorable) des développeurs »
  5. « Swift, un langage déjà courant »
  6. « Swift, un langage déjà courant »
  7. (en) « TIOBE Index for July 2014 »
  8. (en) « Introduction to Swift »
  9. (en) « [LLVMdev] [cfe-dev] [ADVERTISEMENT] open positions in Apple's Swift compiler team »
  10. (en) « Does Swift have access modifiers? »
  11. (en) « [LLVMdev] [cfe-dev] [ADVERTISEMENT] open positions in Apple's Swift compiler team », sur llvmdev mailing list,‎ 11/06/2014 (consulté le 13/07/2014)