Swift adalah bahasa pemrograman kompilasi untuk tujuan umum, multi-paradigma, yang dikembangkan oleh Apple Inc. dan komunitas sumber terbuka, pertama kali dirilis pada tahun 2014. Swift dikembangkan sebagai pengganti bahasa pemrograman Apple sebelumnya, Objective-C, sebagai Objective-C sebagian besar tidak berubah sejak awal 1980-an dan kekurangan fitur bahasa modern. Swift bekerja dengan kerangka kerja Cocoa and Cocoa Touch Apple,

Cepat 1
Apple mengumumkan Swift 1.0 pada tahun 2014. Bahasa pemrograman baru ini hadir dengan fitur untuk mempercepat pengembangan aplikasi untuk iOS dan macOS. Apple mempromosikan Swift sebagai bahasa pemrograman yang modern, aman, cepat, dan interaktif. Meskipun dipromosikan sebagai alternatif modern untuk Objective-C, Swift sepenuhnya kompatibel dengan Objective-C. Pengembang bahkan memiliki opsi untuk menggunakan kode Swift dan Objective-C di aplikasi yang sama. Tetapi Swift, tidak seperti Objective-C, memungkinkan pemrogram untuk menulis aplikasi iOS dan OS X tanpa menulis kode tambahan.
Selain itu, bahasa pemrogramannya jauh lebih cepat daripada Objective-C. Selain menjadi bahasa pemrograman berorientasi objek, Swift juga mendukung sejumlah konsep pemrograman fungsional. Pada saat yang sama, Swift 1.0 hadir dengan serangkaian fitur bahasa baru termasuk variabel, konstanta, antarmuka tipe, kelas generik, fungsi, closure, tuple, dan kamus. Apple selanjutnya meluncurkan versi XCode yang sepenuhnya didesain ulang untuk mempercepat pengembangan Swift. Fitur Playground yang disediakan oleh versi XCode yang diperbarui memungkinkan pengembang menguji dan merender kode Swift dalam lingkungan waktu nyata.

Cepat 2
Apple meluncurkan Swift sebagai bahasa pemrograman berpemilik. Tetapi bahasa pemrograman tersebut kemudian dibuat menjadi open source. Pada tahun 2015, Apple mengumumkan Swift 2 sebagai versi sumber terbuka dan diperbarui dari Swift 1. Versi 2 dari Swift hadir dengan fitur keamanan tambahan untuk menjaga proses penanganan kesalahan tetap aman. Fitur bahasa baru yang disertakan dalam Swift 2 juga menjadikannya bahasa pemrograman berorientasi protokol. Fitur ini memungkinkan pengembang untuk menggunakan protokol sebagai antarmuka, memperluas protokol, dan menentukan metode dan properti. Pada saat yang sama, Swift 2 juga hadir dengan beberapa fitur bahasa baru termasuk sintaks yang diubah namanya, migrator, dan generik Objective-C.

Cepat 3
Pada tahun 2016, Apple merilis versi 3 bahasa pemrograman Swift dengan perubahan kode utama. Tidak seperti pendahulunya, Swift 3 meminta programmer untuk menambahkan label ke semua parameter fungsi. Ini selanjutnya memungkinkan pengembang untuk menjaga kode tetap ringkas dengan menghapus kata-kata yang tidak perlu dari nama fungsi. Programmer harus menggunakan lowerCamelCase daripada UpperCamelCase saat menamai kelas, struct, enum, atau properti. Swift 3 mempermudah pemrogram untuk mengimpor fungsi C ke dalam kode dengan memperkenalkan atribut baru untuk fungsi C. Apple selanjutnya mengubah Panduan API Swift untuk memudahkan pengembang mendeskripsikan konsep menggunakan kata kerja dan kata benda.

Cepat 4
Pada 2017, Apple berencana untuk merilis Swift 4 pada musim gugur 2017. Tetapi perusahaan telah merilis versi bête dari Swift 4 ke pengembang untuk pengujian. Swift 4 akan hadir dengan XCode 9. Apple selanjutnya membuat proses migrasi Swift 3 ke Swift 4 tetap sederhana. Pengembang dapat menggunakan alat migrasi yang disediakan oleh XCode 9 untuk memindahkan aplikasi mereka dari Swift 3 ke Swift 4 dengan mulus. Namun, Swift 4 akan hadir dengan satu set API baru dan lebih baik – string, set, kamus, pengarsipan, dan serialisasi. Selain itu, ini akan memungkinkan pemrogram untuk membuat literal multi-string menggunakan sintaks sederhana. Protokol Codable baru yang diperkenalkan oleh Swift 4 membantu pemrogram untuk membuat serial dan deserialisasi tipe data kustom tanpa menulis kode yang rumit. Versi XCode yang diperbarui akan menambahkan beberapa fungsi baru ke Swift 4.

Cepat 5
Pada tahun 2019, Menambahkan bagian Pembatas String yang Diperluas dan memperbarui bagian Literal String dengan informasi tentang pembatas string yang diperpanjang Menambahkan bagian dynamicCallable dengan informasi tentang secara dinamis memanggil instance sebagai fungsi menggunakan atribut dynamicCallable. Menambahkan bagian yang tidak diketahui dan Mengalihkan Kasus Enumerasi Mendatang dengan informasi tentang menangani kasus enumerasi masa depan dalam pernyataan switch menggunakan atribut kasus switch yang tidak diketahui Menambahkan informasi tentang jalur kunci identitas (.self) ke bagian Key-Path Expression Menambahkan informasi tentang menggunakan operator kurang dari (<) dalam kondisi platform ke bagian Blok Kompilasi Bersyarat.

Dukungan penutupan
Swift mendukung penutupan (dikenal sebagai lambda dalam bahasa lain)
(arg1: Int, arg2: Int) -> Int in
return arg1 + arg2

Dukungan string
Di bawah lingkungan Cocoa and Cocoa Touch, banyak kelas umum merupakan bagian dari pustaka Foundation Kit. Ini termasuk pustaka string NSString (menggunakan Unicode, UTF-8 di Swift 5, diubah dari UTF-16), kelas koleksi NSArray dan NSDictionary, dan lainnya. Objective-C menyediakan berbagai bit gula sintaksis untuk memungkinkan beberapa objek ini dibuat dengan cepat dalam bahasa, tetapi setelah dibuat, objek dimanipulasi dengan pemanggilan objek. Misalnya, dalam Objective-C yang menggabungkan dua NSString diperlukan panggilan metode yang mirip dengan ini:

NSString * str = @ ”halo,”;
str = [str stringByAppendingString:@” world”];

Kontrol akses
Swift mendukung lima tingkat kontrol akses untuk simbol: terbuka, publik, internal, pribadi file, dan pribadi.
private: menunjukkan bahwa simbol hanya dapat diakses dalam lingkup langsung,
fileprivate: menunjukkan itu hanya dapat diakses dari dalam file,
internal: menunjukkan itu dapat diakses dalam modul yang memuat,
publik: menunjukkan itu dapat diakses dari modul apa pun,
open: menunjukkan bahwa kelas mungkin menjadi subclass di luar modul.

Opsional dan rantai
Fitur baru yang penting di Swift adalah tipe opsi, yang memungkinkan referensi atau nilai untuk beroperasi dengan cara yang mirip dengan pola umum di C, di mana penunjuk dapat merujuk ke nilai atau mungkin nihil. Ini menyiratkan bahwa tipe non-opsional tidak dapat menghasilkan kesalahan penunjuk-nol; kompilator dapat memastikan ini tidak mungkin.
Tipe opsional dibuat dengan mekanisme Opsional — untuk membuat Integer yang dapat dinihilkan. (!)
let myValue = anOptionalInstance! .someMethod ()

konsep rangkaian opsional untuk menguji apakah instance tersebut nihil dan kemudian membukanya jika bukan nul (?)
let myValue = anOptionalInstance? .someMethod ()

Jenis nilai
objek direpresentasikan secara internal dalam dua bagian. Objek disimpan sebagai blok data yang ditempatkan di heap, sedangkan nama (atau “pegangan”) objek tersebut diwakili oleh penunjuk.
Objek diteruskan di antara metode dengan menyalin nilai penunjuk, memungkinkan data dasar yang sama di heap untuk diakses oleh siapa saja yang memiliki salinan. Sebaliknya, tipe dasar seperti integer dan nilai floating-point direpresentasikan secara langsung.

Data diteruskan langsung ke metode dengan menyalin. Gaya akses ini disebut pass-by-reference dalam kasus objek, dan pass-by-value untuk tipe dasar.

Pemrograman berorientasi protokol
Pemrograman Berorientasi Protokol adalah paradigma pemrograman baru yang diperkenalkan oleh Swift. Dalam pendekatan Berorientasi Protokol, kami mulai merancang sistem kami dengan mendefinisikan protokol. Kami mengandalkan konsep baru: ekstensi protokol, warisan protokol, dan komposisi protokol. Di Swift, tipe nilai lebih disukai daripada kelas. Kombinasi protokol, default, warisan protokol, dan ekstensi ini memungkinkan banyak fungsi yang biasanya terkait dengan kelas dan warisan untuk diimplementasikan pada tipe nilai

Perpustakaan, runtime, dan pengembangan
Swift menggunakan runtime yang sama dengan sistem Objective-C yang masih ada, tetapi membutuhkan iOS 7 atau macOS 10.9 atau lebih tinggi. Itu juga tergantung pada Grand Central Dispatch. Kode Swift dan Objective-C dapat digunakan dalam satu program, dan dengan ekstensi, C dan C ++ juga. Berbeda dengan C, kode C ++ tidak dapat digunakan langsung dari Swift. Wrapper Objective-C atau C harus dibuat antara Swift dan C ++

Manajemen memori
Swift menggunakan Penghitungan Referensi Otomatis (ARC) untuk mengelola memori. Apple dulu mewajibkan manajemen memori manual di Objective-C, tetapi memperkenalkan ARC pada tahun 2011 untuk memudahkan alokasi dan deallocation memori. Satu masalah dengan ARC adalah kemungkinan membuat siklus referensi yang kuat, di mana objek saling mereferensikan dengan cara yang Anda sukai. dapat mencapai objek yang Anda mulai dengan mengikuti referensi. Hal ini menyebabkannya bocor ke dalam memori karena tidak pernah dirilis. Swift menyediakan kata kunci yang lemah dan tidak dimiliki untuk mencegah siklus referensi yang kuat.

Debugging dan elemen lainnya
Elemen kunci dari sistem Swift adalah kemampuannya untuk di-debug dengan rapi dan dijalankan dalam lingkungan pengembangan, menggunakan read – eval – print loop (REPL), memberikan properti interaktif yang lebih mirip dengan kemampuan skrip Python daripada pemrograman sistem tradisional bahasa. REPL semakin ditingkatkan dengan taman bermain konsep baru. Ini adalah tampilan interaktif yang berjalan dalam lingkungan Xcode yang merespons perubahan kode atau debugger dengan cepat.

Versi: kapan Tanggal rilis
Swift 1.0.2 Memperbarui 9-Sep-14
Swift 1.1.0 22-Okt-14
Swift 1.2.0 8-Apr-15
Swift 2.0 21-Sep-15
Swift 2.1.0 20-Okt-15
Swift 2.2.0 21-Mar-16
Swift 3.0.0 13-Sep-16
Swift 3.1.0 27-Mar-17
Swift 4.0.0 19-Sep-17
Swift 4.1.0 29-Mar-18
Swift 4.2.0 17-Sep-18
Swift 5.0.0 25-Mar-19
Swift 5.1.0 10-Sep-19
Swift 5.2.0 24-Mar-20
Swift 5.3.0 16-Sep-20