Swift

Définition

Swift est un langage de programmation compilé et multi-paradigme développé par Apple, il met l’accent sur la sécurité, les performances et une syntaxe expressive.

Caractéristiques principales

  • Paradigme : Multi-paradigme (orienté objet, fonctionnel, impératif, orienté protocole)
  • Licence : Apache 2.0
  • Exécution : Compilateur LLVM + Swift Runtime (compilation AOT en code natif)
  • Créateur : Chris Lattner (a également créé Clang/LLVM, Swift
  • Première publication : 2014 au WWDC

Fonctionnalités du langage

  • Sécurité des types : Typage statique fort avec inférence de types
  • Optionnels : Gestion explicite des valeurs nil (prévient les exceptions de pointeur null)
  • Protocoles : Fondement du système de types de Swift (remplace l’héritage OOP traditionnel)
  • Fermures : Fonctions de première classe avec sémantique de capture
  • Pattern matching : Switch avec déstructuration, patterns enum
  • Concurrence : async/await, actors, conciliation structurée
  • Interopérabilité : Pontage complet avec les bibliothèques Objective-C et C/C++

Versions majeures

Version Année Caractéristiques clés
Swift 1.0 2014 Version initiale
Swift 2.0 2015 Gestion des erreurs (do/catch), instruction guard
Swift 3.0 2016 Révision des lignes directrices de conception d’API
Swift 4.0 2017 Compatibilité source, Codable
Swift 5.0 2019 Stabilité swift-abi, type Result
Swift 5.5 2021 async/await, actors, swift-concurrency
Swift 5.9 2023 swift-pattern-matching, swift-actors
Swift 6.0 2024 Vérification stricte swift-concurrency, swift-abi

Écosystème

Framework Objectif
SwiftUI Framework UI déclaratif pour les plateformes Apple
Combine Framework de programmation réactive
Foundation API de base (chaînes, collections, réseau)
Swift Package Manager Outil de build et gestionnaire de dépendances
Vapor Framework web Swift côté serveur

Cas d’utilisation

  • Développement d’applications iOS et iPadOS (principal)
  • Développement d’applications macOS
  • Applications watchOS et tvOS
  • Développement backend côté serveur (Linux)
  • Développement de jeux (avec Metal)

Comparaison avec les langages apparentés