Swift (linguaggio di programmazione)

linguaggio di programmazione per iOS, macOS, watchOS e tvOS creato da Apple

Swift (dall'inglese "rapido, svelto") è un linguaggio di programmazione orientato agli oggetti per sistemi macOS, iPadOS, iOS, watchOS, tvOS e Linux, presentato da Apple durante la WWDC 2014.[2] Rispetto al linguaggio Objective-C, tipico dei sistemi operativi Apple, Swift semplifica il lavoro di scrittura del codice. Swift è stato progettato per coesistere Objective-C ma anche per essere più resiliente agli errori. Il compilatore LLVM è incluso in Xcode e Swift utilizza il run time di Objective-C, permettendo l'uso di codice Objective C, Objective C++ e Swift in un unico programma.

Swift
linguaggio di programmazione
AutoreApple Inc.
Data di origine9 settembre 2014
Ultima versione5.7.3
(18 gennaio 2023)
UtilizzoGeneral purpose
ParadigmiMultiparadigma
Tipizzazioneforte
Specifiche di linguaggioManuale Swift
Estensioni comuniswift
Influenzato daC, Objective C, D[1]
Implementazione di riferimento
Implementazionecompilatore LLVM
Sistema operativomacOS, iOS, watchOS, tvOS, Linux
LicenzaApache 2.0
Sito webswift.org/

Il 25 marzo 2019 è stata pubblicata la versione 5.0 sotto licenza open source Apache 2.0 per sistemi Apple e Linux.[3]

Storia

ùùùùùùùùùùùùùùùùùùùùùùùùùù

Cronologia delle versioni

Versione Data rilascio Novità
1.0 9 settembre 2014
1.1 22 ottobre 2014
1.2 8 aprile 2015
2.0 21 settembre 2015
2.1 20 settembre 2015
2.2 21 marzo 2016
2.3 12 giugno 2016
3.0 13 settembre 2016 [4]
3.1 27 marzo 2017
4.0 19 settembre 2017 [5]
4.1 29 marzo 2018
4.2 17 settembre 2018 [6]
5.0 25 marzo 2019 [7]
5.1 10 settembre 2019 [8]
5.2 24 marzo 2020 [9]
5.3 16 settembre 2020 [10]
5.4 26 aprile 2021 [11]
5.5 20 settembre 2021 [12]
5.6 14 marzo 2022 [13]
5.7 12 settembre 2022 [14]

Sintassi

Hello, world!

Hello, world! è il classico programma che scrive in output "Hello, world!".

import UIKit

print("Hello, world!")

Analisi

import UIKit

La funzione "import" importa nel programma determinati metodi o classi che permettono a quest'ultimo di implementare determinati comandi. "UIKit" è un framework front end, sviluppato da Apple, che fornisce le funzioni per gestire l'interfaccia grafica (GUI) e gli input dell'utente. In questo caso il codice compila anche senza importare UIKit (è stato importato solo come esempio) in quanto l'unica funzione utilizzata è stata la funzione "print" che fa parte del core del linguaggio.

print("Hello, World!")

La funzione "print" permette di mostrare a schermo ciò che viene scritto tra le virgolette dentro le parentesi tonde.

In Swift non è necessario inserire il punto e virgola (;) alla fine di ogni istruzione (a differenza di C o altri linguaggi).

Esempi pratici

Maiuscolo e minuscolo

In questo esempio convertiamo una parola in maiuscolo e l'altra in minuscolo:

// Dichiara le variabili da utilizzare
   var nome = "Mario", cognome = "Draghi"

// Converti la stringa in maiuscolo
   nome = nome.uppercased()

// Converti la stringa in minuscolo
   cognome = cognome.lowercased()

// Stampa il risultato
   print(nome, cognome)

Prima lettera maiuscola di ogni parola

In questo esempio convertiamo in maiuscolo solo il primo carattere di ciascuna parola e contiamo i caratteri che compongono la stringa stessa:

import UIKit

// Dichiara le variabili da utilizzare
   var stringa = "stringa di prova"

// Stampa il risultato
   print("La frase \"\(stringa.capitalized)\" è composta da \(stringa.count) caratteri, inclusi gli spazi")

Sostituzione parole

In questo esempio sostituiamo una specifica parola con un'altra:

import UIKit

// Dichiara le variabili da utilizzare
   var stringa = "Questo è il risultato precedente"

// Sostituisci la parola "precedente" con "successivo" (var.replacingOccurrences)
   stringa = stringa.replacingOccurrences(of: "precedente", with: "successivo")

// Stampa il risultato
   print(stringa)

Condizione su parola palindroma

Una parola palindroma è una parola che, sia la si legga da destra che da sinistra, risulta sempre uguale (ad esempio, "anna" è una parola palindroma). A seguito verrà mostrato che, data una parola, questo scriva a schermo se è palindroma o no.

// Dichiara le variabili da utilizzare
   var parola = "anna"
   var parolaInvertita : String

// Inverti la stringa
   parolaInvertita = String(parola.reversed())

// Confronta le variabili e stampa il risultato
   if (parola == parolaInvertita) {
       print("La parola \(parola) è palindroma")
   } else {
       print("La parola \(parola) NON è palindroma")
   }

Array e cicli

Infine, nell'esempio seguente, vediamo la dichiarazione di un array e la stampa di esso con il ciclo for-in

// Dichiara array
   var alfabetoArray = ["Alpha", "Beta", "Gamma", "Delta"]

// Stampa l'array dichiarato
   for (indice, elemento) in (alfabetoArray.enumerated()) {
        print(indice, ":", elemento)
   }

Dichiarare costanti e variabili

// Metodo 1
   var nome = "Mario", cognome = "Rossi", genere = "M", età = 46

// Metodo 2
   var (nome, cognome, genere, età) = ("Mario", "Rossi", "M", 46)

// Metodo 3
   var nome = "Mario"
   var cognome = "Rossi"
   var genere = "M"
   var età = 46
  • Le tipologie di costanti e variabili (String, Int, Double, ...) non sono obbligatorie da dichiarare;
  • Le parentesi tonde () per racchiudere condizioni di confronti (if-else, switch...) e cicli (for in, do-while...) sono facoltative;
  • Il punto e virgola ; a fine istruzione, anch'esso è facoltativo;
  // Con dichiarazione tipologia tra parentesi tonde e punto e virgola alla fine
     let a: (String) = "A";

  // Senza parentesi tonde e punto e virgola alla fine
     let b: String = "B" 

  // Senza nemmeno la dichiarazione della tipologia (String)
     let c = "C"
  • Il nome delle costanti e delle variabili può contenere quasi tutti i caratteri, inclusi i caratteri Unicode:
// Dichiara le costanti da utilizzare
   let π = 3.14159
   let 你好 = "你好世界"
   let 🍓 = "Fragola"; 🥝 = "Kiwi"; 🍎 = "Mela"

SwiftUI

SwiftUI è un framework di sviluppo realizzato da Apple Inc. e scritto interamente in Swift.

Presentato nel WWDC 2019, SwiftUI è stato pensato per costruire interfacce utente tramite un unico set di tool e API che coinvolge tutto l'ecosistema Apple (precedentemente si faceva uso di frameworks distinti: AppKit per macOS, UIKit per iOS e WatchKit per watchOS).

Confronto con Java

Swift, rispetto a Java, non necessita di essere interpretato. Questa differenza fondamentale tra i due linguaggi di programmazione ha una notevole ripercussione sulla RAM (memoria). Infatti il sistema Android ne risulta svantaggiato rispetto al rivale iOS.[15]

Note

  1. ^ Building assert() in Swift, Part 2: __FILE__ and __LINE__ - Swift Blog -, su developer.apple.com, Apple Developer. URL consultato il 26 settembre 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. ^ (EN) Apple WWDC 2014: iPhone, iPad updates, "smart home" system and more, su cbsnews.com, CBS News, 2 giugno 2014. URL consultato il 3 giugno 2014.
  3. ^ The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub, Apple, 1º aprile 2019. URL consultato il 1º aprile 2019.
  4. ^ SWIFT 3.0: Novità release, su xcoding.it. URL consultato il 06/01/2019.
  5. ^ SWIFT 4.0: Novità release, su xcoding.it. URL consultato il 06/01/2019.
  6. ^ SWIFT 4.2: Novità release, su xcoding.it. URL consultato il 06/01/2019.
  7. ^ SWIFT 5.0: Novità release, su xcoding.it. URL consultato l'11/11/2019.
  8. ^ (EN) Swift.org - Swift 5.1 Released!, su swift.org. URL consultato il 20/09/2019 (archiviato dall'url originale il 26 febbraio 2022).
  9. ^ (EN) Swift.org - Swift 5.2 Released!, su swift.org. URL consultato il 26/03/2020 (archiviato dall'url originale il 25 marzo 2020).
  10. ^ (EN) Swift.org - Swift 5.3 Released!, su swift.org. URL consultato il 16/09/2020 (archiviato dall'url originale il 26 settembre 2020).
  11. ^ (EN) Swift.org - Swift 5.4 Released!, su swift.org. URL consultato il 26/04/2021 (archiviato dall'url originale il 26 aprile 2021).
  12. ^ (EN) Swift.org - Swift 5.5 Released!, su swift.org. URL consultato il 20/09/2021.
  13. ^ (EN) Swift.org - Swift 5.6 Released!, su swift.org. URL consultato il 20/09/2021.
  14. ^ (EN) Swift.org - Swift 5.7 Released!, su swift.org. URL consultato il 20/09/2021.
  15. ^ Perché Android ha bisogno di più RAM di iOS, androidworld.it, 8 luglio 2022

Altri progetti

Collegamenti esterni


Controllo di autoritàLCCN (ENsh2015001571 · GND (DE1066617112 · BNF (FRcb17039945c (data) · J9U (ENHE987007412504105171