Swift (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
aggiunto informazioni
LucaLindholm (discussione | contributi)
 
(49 versioni intermedie di 20 utenti non mostrate)
Riga 5:
| autore = [[Apple Inc.]]
| data = 9 settembre 2014
| versione = 5.5.2<br!-- /wikidata -->(13 dicembre 2021)
| utilizzo = [[General purpose]]
| paradigmi = [[Paradigma di programmazione|Multiparadigma]]
Riga 17:
| licenza = [[Licenza Apache|Apache]] 2.0
}}
'''Swift''' (dall'[[Lingua inglese|inglese]] "rondine" e "rapido, repentinosvelto") è un linguaggio di [[programmazione orientata agli oggetti|programmazione orientato agli oggetti]] per sistemi [[macOS]], [[iPadOS]], [[iOS]], [[watchOS]], [[tvOS]] e [[Linux]], presentato da [[Apple]] durante la WWDC 2014.<ref>{{Cita web|url=https://www.cbsnews.com/news/wwdc-2014-iphone-ipad-updates-smart-home-system-and-more/|titolo=Apple WWDC 2014: iPhone, iPad updates, "smart home" system and more|editore=CBS News|data=2 giugno 2014|accesso=3 giugno 2014|lingua=en}}</ref>
SwiftRispetto è concepito per coesistere con ilal linguaggio [[Objective-C]], tipico degli sviluppi per idei [[sistemi operativi Apple]], semplificandoSwift lasemplifica il lavoro di scrittura del codice. Swift è stato progettato per coesistere con Objective-C ma anche per essere più resiliente agli errori nel codice. Utilizza ilIl 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 singolounico programma.
 
Il 25 marzo [[2019]] è stata pubblicata la versione 5.0 sotto licenza [[open source]] [[Licenza Apache|Apache]] 2.0 per sistemi Apple e Linux.<ref>{{Cita pubblicazione|data=2019-04-01|titolo=The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub|editore=Apple|accesso=2019-04-01|url=https://github.com/apple/swift}}</ref>
Swift, già dalla prima release, è fino a 8,4 volte più veloce di [[Python]] e fino a 2,6 volte più veloce di Objective C in alcuni tipi di algoritmi.<ref>{{Cita web|url=https://apple.com/it/swift|lingua=it|accesso=29 maggio 2015|titolo=10.000 interi trovati in un grafico
usando un algoritmo di ricerca in profondità. Test condotti da Apple nell'ottobre 2014 utilizzando sistemi MacBook Air 13" in produzione con processore Intel Core i5 a 1,4GHz, 4GB di RAM e OS X v10.10 pre-release. Le prestazioni variano in base alla configurazione del sistema, alla connessione di rete e ad altri fattori. }}</ref>
 
Il 25 marzo [[2019]] è stata pubblicata la versione 5.0 sotto licenza [[open source]] [[Licenza Apache|Apache]] 2.0 per sistemi Apple e Linux.<ref>{{Cita pubblicazione|data=2019-04-01|titolo=The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub|editore=Apple|accesso=2019-04-01|url=https://github.com/apple/swift}}</ref>
 
== Storia ==
Lo sviluppo di Swift è stato iniziato nel 2010 dagrazie a [[Chris Lattner]], aiutatoprogrammatore ininformatico seguitodella da molti altri programmatori[[Apple]]. Swift ha preso in prestito idee "da Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, e da troppi altri per elencarli tutti".<ref>{{Cita web|url=http://nondot.org/sabre/|lingua=en|accesso=7 giugno 2014|titolo=Home page di Chris Lattner}}</ref> Il 2 giugno 2014 l'app per il WWDC è divenuta la prima app distribuita al pubblico scritta in Swift. Una versione beta del linguaggio è stata distribuita agli sviluppatori Apple registrati fino a quel momento, ma Apple non promette che la versione finale di Swift sarà compatibile, a livello di sorgente, con quella distribuita. Apple prevede di realizzare convertitori di codice sorgente se necessario, all'atto della distribuzione definitiva.
 
AllaAl WWDC del 2 giugno 2014 la prima app scritta in Swift è ancheproprio l'app ufficiale dell'evento. E, durante lo svolgimento dello stesso, Apple divulga statoai distribuitopresenti un manuale di 500 pagine: "The Swift Programming Language",<ref name="Apple swift book">{{Cita libro|url=https://itunes.apple.com/book/swift-programming-language/id881256329?mt=11|titolo =The Swift Programming Language|editore = [[Apple Inc.|Apple]]|data=2 giugno 2014|accesso=7 giugno 2014|lingua=en}}</ref> disponibile gratuitamente sull'[[iBooks#iBookstore|iBookstore]] di Applecasa Cupertino.
 
Al keynote dell'8 giugno 2015 Apple ha annunciato la distribuzione di Swift 2.0 con notevoli miglioramenti nella struttura del linguaggio e aggiunta di funzioni, impegnandosi per rendere il progetto [[open source]] nel futuro prossimo. Il 3 dicembre dello stesso anno viene lanciato il sito [https://swift.org/ swift.org] e il [[codice sorgente]] del linguaggio è pubblicato con [[licenza Apache]] 2.0 su un repository [[GitHub]].<ref name="verge_os">{{cita web|url=https://www.theverge.com/2015/12/3/9842854/apple-swift-open-source-released|titolo=Apple's new programming language Swift is now open source|autore=Jacob Kastrenakes|editore=The Verge|data=3 dicembre 2015|lingua=en|accesso=8 dicembre 2015}}</ref> Apple resta lo sviluppatore principale e ne rende disponibile anche una versione del compilatore per Linux (Creato appositamente per Ubuntu).<ref>{{Cita web|url = http://www.dday.it/redazione/16708/apple-rende-swift-open-source-ma-non-poteva-fare-altrimenti|titolo = Apple rende Swift open source, ma non poteva fare altrimenti|accesso = 2015-06-12}}</ref>
 
Il 13 settembre 2016, durante la WWDC 2016, Apple ha presentato la terza versione del suo linguaggio di programmazione insieme ad un'applicazione per [[iPad]], Swift Playgrounds, che permette, tramite una grafica semplice e intuitiva, di imparare a programmare con Swift, soprattutto orientato ai più giovani.
 
== Cronologia delle versioni ==
Riga 95 ⟶ 93:
| 5.1
| style="text-align:right" | 10 settembre 2019
| style="text-align:left" | <ref>{{Cita web |url = https://swift.org/blog/swift-5-1-released/ |titolo = Swift.org - Swift 5.1 Released! | accesso = 20/09/2019 |lingua = en |dataarchivio = 26 febbraio 2022 |urlarchivio = https://web.archive.org/web/20220226203243/https://www.swift.org/blog/swift-5-1-released/ |urlmorto = sì }} </ref>
|-
| 5.2
| style="text-align:right" | 24 marzo 2020
| style="text-align:left" | <ref>{{Cita web |url = https://swift.org/blog/swift-5-2-released/ |titolo = Swift.org - Swift 5.2 Released! | accesso = 26/03/2020 |lingua = en |dataarchivio = 25 marzo 2020 |urlarchivio = https://web.archive.org/web/20200325160127/https://swift.org/blog/swift-5-2-released/ |urlmorto = sì }} </ref>
|-
| 5.3
| style="text-align:right" | 16 settembre 2020
| style="text-align:left" | <ref>{{Cita web |url = https://swift.org/blog/swift-5-3-released/ |titolo = Swift.org - Swift 5.3 Released! | accesso = 16/09/2020 |lingua = en |dataarchivio = 26 settembre 2020 |urlarchivio = https://web.archive.org/web/20200926005208/https://swift.org/blog/swift-5-3-released/ |urlmorto = sì }} </ref>
|-
| 5.4
| style="text-align:right" | 26 aprile 2021
| style="text-align:left" | <ref>{{Cita web |url = https://swift.org/blog/swift-5-4-released/ |titolo = Swift.org - Swift 5.4 Released! | accesso = 26/04/2021 |lingua = en |dataarchivio = 26 aprile 2021 |urlarchivio = https://web.archive.org/web/20210426183534/https://swift.org/blog/swift-5-4-released/ |urlmorto = sì }} </ref>
|-
| 5.5
| style="background-color:#D4F4B4" | 5.5
| style="background-color:#D4F4B4; text-align:right" | 20 settembre 2021
| style="background-color:#D4F4B4; text-align:left" | <ref>{{Cita web |url = https://swift.org/blog/swift-5-5-released/ |titolo = Swift.org - Swift 5.5 Released! | accesso = 20/09/2021 |lingua = en |dataarchivio = 21 settembre 2021 |urlarchivio = https://web.archive.org/web/20210921002942/https://swift.org/blog/swift-5-5-released/ |urlmorto = sì }} </ref>
|-
| 5.6
| style="text-align:right" | 14 marzo 2022
| style="text-align:left" | <ref>{{Cita web|url = https://swift.org/blog/swift-5.6-released/ |titolo = Swift.org - Swift 5.6 Released! | accesso = 20/09/2021|lingua=en }}</ref>
|-
| 5.7
| style="text-align:right" | 12 settembre 2022
| style="text-align:left" | <ref>{{Cita web|url = https://swift.org/blog/swift-5.7-released/ |titolo = Swift.org - Swift 5.7 Released! | accesso = 20/09/2021|lingua=en }}</ref>
 
|-
| 5.8
| style="text-align:right" | 30 marzo 2023
| style="text-align:left" | <ref>{{Cita web|url = https://swift.org/blog/swift-5.8-released/ |titolo = Swift.org - Swift 5.8 Released! | accesso = 07/04/2021|lingua=en }}</ref>
|-
| 5.9
| text-align:right" | 18 settembre 2023
| style="text-align:left" | <ref>{{Cita web|url = https://www.swift.org/blog/swift-5.9-released/ |titolo = Swift.org - Swift 5.9 Released! | accesso = 26/09/2023|lingua=en }}</ref>
|-
| 5.10
| style="text-align:right" | 5 marzo 2024
| style="text-align:left" | <ref>{{Cita web|url = https://www.swift.org/blog/swift-5.10-released/ |titolo = Swift.org - Swift 5.20 Released! | accesso = 05/03/2024|lingua=en }}</ref>
|-
| style="background-color:#D4F4B4" | 56.50
| style="background-color:#D4F4B4; text-align:right" | 17 settembre 2024
| style="background-color:#D4F4B4; text-align:left" | <ref>{{Cita web|url = https://www.swift.org/blog/announcing-swift-6/ |titolo = Swift.org - Announcing Swift 6 | accesso = 17/09/2024|lingua=en }}</ref>
|}
 
Riga 119 ⟶ 141:
=== Hello, world! ===
[[Hello world|Hello, world!]] è il classico programma che scrive in output "''Hello, world!''".<syntaxhighlight lang="swift">
import UIKitSwiftUI
 
print("Hello, world!")
Riga 126 ⟶ 148:
==== Analisi ====
<syntaxhighlight lang="swift">
import UIKitSwiftUI
</syntaxhighlight>La funzione "'''import'''" importa nel programma determinati metodi o classi che permettono a quest'ultimo di implementare determinati comandi.
 
"'''UIKitSwiftUI'''" è un [[framework]] [[Front-end e back-end|front end]], sviluppato da Apple, che fornisce le funzioni fondamentali per gestire lal'interfaccia grafica ([[GUI]]) e gli input dell'utente. In questo caso il codice compila anche senza importare UIKitSwiftUI (è stato importato solo come esempio) in quanto l'unica funzione utilizzata è stata la funzione "'''print'''" che fa parte del core del linguaggio.<syntaxhighlight lang="swift">
print("Hello, world!")
</syntaxhighlight>La funzione "'''print'''" permette di mostrare a schermo ciò che viene scritto tra le virgolette dentro le parentesi tonde.
Riga 139 ⟶ 161:
In questo esempio convertiamo una parola in maiuscolo e l'altra in minuscolo:
 
<syntaxhighlight lang="swift" line="1">
// Dichiara le variabili da utilizzare
var nome = "Mario", cognome = "Rossi"
Riga 157 ⟶ 179:
 
<syntaxhighlight lang="swift">
import UIKitSwiftUI
 
// Dichiara le variabili da utilizzare
Riga 170 ⟶ 192:
 
<syntaxhighlight lang="swift">
import UIKitSwiftUI
 
// Dichiara le variabili da utilizzare
Riga 229 ⟶ 251:
var età = 46
</syntaxhighlight>
* LeNon tipologieè obbligatorio dichiarare il tipo 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;
<syntaxhighlight lang="swift">
// Con dichiarazione tipologiadel tipo tra parentesi tonde e punto e virgola alla fine
let a: (String) = "A";
 
Riga 239 ⟶ 261:
let b: String = "B"
 
// Senza nemmeno la dichiarazione delladel tipologiatipo (String)
let c = "C"
</syntaxhighlight>
Riga 251 ⟶ 273:
 
== SwiftUI ==
{{vedi anche|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]]).
Riga 263 ⟶ 286:
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{iten}} PanoramicaHandbook, su [https://wwwdeveloper.apple.com/it/swift/ Apple Swiftdeveloper.apple.com/]
* {{enit}} GuidaSito originalein italiano, su [https://developerwww.apple.com/it/swift/ Apple Developerapple.com/it/]
 
 
{{Principali linguaggi di programmazione}}