| See artikkel räägib programmeerimiskeelest; Swift on ka ansambli D12 liige |
Swift on üldotstarbeline kompileeritav programmeerimiskeel.
See kasutab LLVM-baasil kompileerijat ja kompileerib masinkoodi. Swift programmeerimiskeele töötas välja Chris Lattner 2010. aastal ettevõtte Apple Inc. jaoks, alates 2015. aastast on Swift avatud lähtekoodiga tarkvara.[1][2][3]
Ajalugu
Programmeerimiskeele Swift väljatöötaja Chris Lattner töötas algul projekti kallal üksi. 2011. aastal liitus projektiga veel Apple'i arendusmeeskonna liikmeid ja 2013. aastast on Swift keel ametlikult Apple'i hallatav arendusprojekt. Keele eesmärk oli asendada varem Apple'i tarkvaras kasutusel olnud Objective-C programmeerimiskeel, Swift kasutab mitmete teiste kaasaegsete programmeerimiskeelte elemente, nende seas Rust, Haskell, Ruby ja Python.[4]
Swifti esmaesitlus toimus 2014. aastal Apple'i rahvusvahelisel arendajate konverentsil WWDC, algselt oli see kasutusel vaid Apple'i-sisese tööriistana. 3. detsembril 2015 avalikustati Swifti lähtekood koos kõigi teekide, siluri ja paketihalduriga ning sellest sai vabavaraline tarkvara. Projekti jaoks loodi veebisait swift.org ja koodi hallatakse GitHubi repositooriumis.[2]
2017. aasta jaanuaris lahkus Chris Lattner Apple'ist ja läks tööle ettevõttesse Tesla Motors. Swifti projekti uueks juhiks sai Ted Kremenek.[5]
Swifti versioon 1.0 avalikustati 9. septembril 2014, praegune[millal?] uusim versioon on Swift 6.2.[6]
Platvormid
Swift toetab kõiki kaasaegseid Apple'i operatsioonisüsteeme (Darwin, iOS, iPadOS, macOS, tvOS, watchOS), lisaks Linuxi, Windowsi ja WebAssembly operatsioonisüsteeme.[1]
Võimalused
Swift on algajasõbralik ja lihtsalt loetav keel, mis on samas kiire ja skaleeritav. Näiteks haldab Swift kogu mälukasutust ja kontrollib muutujate initsialiseerimist enne kasutamist. Järjendite operatsioonide puhul kontrollitakse automaatselt indeksite piiridesse jäämist ja muutuja-operatsioonide puhul ületäitumist. Kasutada saab paralleelselt toimivaid lõimesid. Swift võimaldab kasutada objektorienteeritud programmeerimist, olemas on klassid, alamandmetüübid ja meetodite ülekirjutamine.[7][8]
Disain
Swifti disainis on kõige rohkem sarnasusi programmeerimiskeelega C, üldjuhul töötavad analoogselt kõik operaatorid. Muutujatele omistatakse väärtusi ühekordse võrdusmärgiga ja muutujaid võrreldakse kahekordse võrdusmärgiga. Tingimuslaused switch ja if ning tsüklid for ja while töötavad analoogselt. Nii Swift kui ka C nõuavad muutujate tüüpide määramist kompileerimise ajal (Swift suudab seda enamasti teha automaatselt).[8]
Disainis on olulisel kohal ka turvalisus, näiteks tühjadele objektidele viitamise vältimiseks ei luba Swift vaikimisi muutujate väärtuseks määrata nil. Swift kasutab tugevat staatilist tüübikontrolli, mis võimaldab valet tüüpi muutujatest tingitud vead leida juba enne kompileerimist.[9] Lisaks on turvalisuse ja jõudluse tõttu Swiftile iseloomulik copy-on-write metoodika muutujate väärtuste omistamisel, kus muutujate väärtuste asemel omistatakse muutujatele esialgu viidad ja väärtused kopeeritakse alles siis, kui neid on vaja muuta.[10]
Süntaks
Swift kasutab C-tüüpi keeltega sarnast süntaksit. Kood käivitub vaikimisi globaalses skoobis, lubatud on ka @main abil sisenemispunkti määramine.[8]
Swifti “Hello-world” programm näeb välja selline:
print("Hello, world!")
Koodiread Swiftis ei pea lõppema semikooloniga, kuid semikoolonit saab kasutada mitme koodirea ühele reale toomiseks. Üherealised kommentaarid algavad // sümboliga ja kommentaariplokid algavad /* ja lõppevad */ sümbolitega.[8]
Muutujad Swiftis deklareeritakse var ja konstandid let abil. Peamised andmetüübid:
Int,
Double,
String,
Array,
Dictionary.[8]
var vanus: Int = 21 // täisarvu-tüüpi muutuja var pikkus: Double = 179.8 // ujukomaarvu-tüüpi muutuja var nimi: String = "Enri" // sõnemuutuja var sõbrad: Array<String> = ["Kaarel", "Roland"] // järjend var vanemad: [String: String] = ["ema": "Mirjam", "isa": "Priit"] // võti-väärtus tüüpi muutuja
Tingimuslauseid kirjutatakse kasutades if-else või switch, tsüklite jaoks kasutatakse for-in ja while.[8][11]
// Loob järjendi numbritega 1 kuni 10
let numbrid = Array(1...10)
// Liigub üle järjendi ja kontrollib, iga elemendi kohta, kas need on paarisarvud
for number in numbrid {
if number % 2 == 0{
print("\(number) on paarisarv")
} else {
print("\(number) on paaritu arv")
}
}
Ligipääsutasemed
Swift kasutab mälu ja ligipääsutasemete halduseks viit erinevat ligipääsutaset: open, public, internal, fileprivate ja private. Private tähendab, et muutuja või meetod on kättesaadav vaid samas skoobis, fileprivate tähendab, et vaid samas failis. Internal puhul on see kättesaadav vastavast moodulist, public mistahes moodulist ja open korral ka väljaspool mooduleid.[12]
Funktsionaalne programmeerimine
Swift pakub tööriistu funktsionaalseks programmeerimiseks. Selleks kasutatakse märksõnu map, filter ja reduce.[13]
map loob uue massiivi, kus igat element on vastavalt etteantud funktsioonile töödeldud, filter loob uue massiivi, kus on vaid need elemendid, mis vastavad teatud tingimusele, reduce kogub kõik massiivi elemendid vastavalt etteantud reeglile üheks.[13]
// loob massiivi numbritega 1 kuni 6
let numbrid = [1, 2, 3, 4, 5, 6]
// loob massiivi, kus on esialgse massiivi väärtuste kuubid
let kuubid = numbrid.map { $0 * $0 * $0}
// loob massiivi, kus on esialgsest massiivist vaid kolmega jaguvad väärtused
let kolmegaJaguvad = numbrid.filter { $0 % 3 == 0 }
// summeerib kõik esialgse massiivi väärtused
let summa = numbrid.reduce(0) { $0 + $1 }
Lisaks saab Swiftis kasutada anonüümseid funktsioone closure abil. Neid saab edastada funktsioonide parameetritena ja tagastada funktsioonides. See võimaldab funktsionaalset programmeerimist keerukamate andmetega. [13]
// funktsioon matemaatiliste operatsioonide jaoks, kusjuures konkreetset operatsiooni defineeritud ei ole
func operateOnNumbers(_ a: Int, _ b: Int, using operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
// anonüümne funktsioon teise funktsiooni argumendina kasutamiseks
let add: (Int, Int) -> Int = { x, y in
return x + y
}
// funktsiooni väljakutse
let sum = operateOnNumbers(3, 5, using: add)
Muutujatüüp Optionals
Swifti üks iseloomulikumaid võimalusi on optionals andmetüübi kasutamine. Need märgitakse tüübi järel küsimärgiga ja nende väärtus võib olla kas määratud või need võivad olla nil. Seda tüüpi muutujat kasutatakse olukordades, kus muutuja väärtustamine ei ole kindel, näiteks kasutaja sisendi või võrgupäringu töötlemisel. Optionals tüübi kasutamisel on iga kord enne muutuja väärtuse lugemist vaja kontrollida, kas sellel on väärtus. Selline mehhanism aitab vältida tühja muutuja lugemisest tekkivat programmi kokkujooksmist.[14]
let sisend: String? = getUserInput()
if let tekst = sisend {
print("Sisend oli \(tekst)")
} else {
print("Sisend puudub!")
}
Asünkroonsus ja paralleelsus
Alates versioonist 5.5 võimaldab Swift jõudluse parandamiseks mitmelõimeliste programmide kirjutamist.[15] Selle jaoks kasutatakse async ja await märksõnu. Funktsioone defineerides saab parameetrite järel async märksõna kasutades muuta funktsiooni asünkroonseks, siis saab sellega samal ajal käivitada ka teisi asünkroonseid funktsioone. Kõigi asünkroonsete funktsioonide tööjärje lõppemise ootamiseks kasutatakse await.[16]
func fetchData() async -> String {
try? await Task.sleep(nanoseconds: 1_000_000_000)
return "Andmed laaditud"
}
Task {
let result = await fetchData()
print(result)
}
Arendustööriistad
Swifti peamine arenduskeskkond on Apple'i toodetud Xcode, kus saab kirjutada rakendusi enamikule Apple'i platvormidele. Xcode sisaldab ka Swifti kompilaatorit, tekstiredaktorit ja visuaalseid tööriistu rakenduste loomiseks. Swifti pakette ja teeke hallatakse vabavaralise SwiftPM abil. Swift Toolchain pakub käsurea-tööriistu nagu swift build, swift run ja swift package. Erinevate Swift versioonidega töötamiseks on loodud Swiftly tööriist, mida saab kasutatakse paralleelselt mitme Swift-projektiga töötamiseks.[1][17]
Kasutusvaldkonnad ja näited
Kuna Swift toetab Linux operatsioonisüsteemi, saab seda kasutada ka serverite tagaliidese arenduses. Samuti on olemas Swift-põhiseid veebiarendusraamistikke, näiteks Perfect ja Vapor.[18]
Swift programmeerimiskeelt kasutavad oma iOS rakendustes näiteks Firefox, Airbnb ja LinkedIn.[19]
Viited
- 1 2 3 "About Swift". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- 1 2 "Apple Releases Swift as Open Source". Apple Newsroom (inglise). 3. detsember 2015. Vaadatud 8. detsembril 2025.
- ↑ "Why Apple's Swift Language Will Instantly Remake Computer Programming". Wired (inglise). 17. juuli 2014. Vaadatud 8. detsembril 2025.
- ↑ "Chris Lattner's Homepage — nondot.org". nondot.org (inglise). Vaadatud 8. detsembril 2025.
- ↑ Wuerthele, Mike. "New Swift project head Ted Kremenek said to be running the show behind the scenes for some time". AppleInsider (inglise). Vaadatud 7. jaanuaril 2026.
- ↑ "The Swift Programming Language — Revision History". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- ↑ "About Swift". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- 1 2 3 4 5 6 "The Basics — The Swift Programming Language". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- ↑ "Swift Type Safety | Compile N Run". www.compilenrun.com (inglise). Vaadatud 8. jaanuaril 2026.
- ↑ "Array". Apple Developer Documentation (inglise). Vaadatud 8. jaanuaril 2026.
- 1 2 "Control Flow — The Swift Programming Language". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- ↑ "Access Control — The Swift Programming Language". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- 1 2 3 "Closures and Higher‑Order Functions in Swift". Software Patterns Lexicon (inglise). Vaadatud 8. detsembril 2025.
- ↑ Apple Inc. "Optional Chaining — The Swift Programming Language". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- ↑ "[Accepted with modifications] SE-0304: Structured Concurrency". Swift Forums (inglise). 7. september 2021. Vaadatud 8. jaanuaril 2026.
- ↑ "Documentation". docs.swift.org (inglise). Vaadatud 8. jaanuaril 2026.
- ↑ "Swift Resources — Apple Developer". Apple Developer (inglise). Vaadatud 8. detsembril 2025.
- ↑ "Swift on Server — Swift.org". Swift.org (inglise). Vaadatud 8. detsembril 2025.
- ↑ "Apple's iOS Programming Language Swift Is Used in Uber, Airbnb, Square, and Hundreds of Thousands of iOS Apps". Business Insider (inglise). 3. veebruar 2020. Vaadatud 8. detsembril 2025.
