Swift – język stworzony przez Apple, łączący cechy języka kompilowanego i skryptowego. Działający w czasie rzeczywistym. Znacznie szybszy od języka Objective-C, którego składnia nie była zbyt przejrzysta. Jaki jest nowy język swift? Jak wygląda jego składnia? Poniżej przedstawiam odpowiedzi i dostępne materiały dla języka Swift![hr]
Craig Federighi na konferencji WWDC 2014 ogłosił, że firma Apple stworzyła zupełnie nowy język, który nie posiada naleciałości ze starego języka Objective-C. Początki Objective-C sięgają jeszcze firmy NeXT. Jego składnia nie była zbyt czytelna, a tylko dzięki środowisku programistycznemu Xcode dało się w tym pisać. Nagle okazuje się, że to wszystko zostało zmienione.
Oficjalna informacja prasowa
Według oficjalnej informacji prasowej, Swift jest zupełnie nowym językiem dla iOS i OS X. Ma sprawić, że pisanie oprogramowania stanie się dużo szybsze i wygodniejsze. Zaprojektowany specjalnie dla Frameworków Cocoa i Cocoa Touch. Ma idealnie łączyć wydajność i szybkość zwykłych języków kompilowanych z wygodą i prostotą(?) języków skryptowych.
Swift ma za zadanie pomóc programistom pisać kod dzięki którym unikną uciążliwych błędów. Stare aplikacje tworzone przy pomocy języka Objective-C będą mogły być z łatwością zintegrowane z zupełnie nowym językiem Swift. Środowisko programistyczne Xcode sprawi, że Swift będzie niezwykle użyteczny, a programista będzie miał podgląd na działanie aplikacji w czasie rzeczywistym w trakcie pisania kodu.
Ten marketingowy bełkot mówi właściwie jedno. Programista będzie miał łatwiejsze, lepsze życie. Jak będzie w praktyce? To już za chwilę!
Nowy język posiada wysokopoziomowe struktury oraz wiele ułatwień. Aplikacje będzie można zamieszczać dopiero gdy ukaże się oficjalnie iOS 8 oraz OS Yosemite (jesień).
Szybki przegląd Swift
- Język kompilowany implementacją LLVM (Low Level VirtualMachine).
- Automatyczne zarządzanie pamięcią. Odbywa się poprzez ARC (Automatic Reference Counting) jak to było w języku Objective-C.
- Dużo bardziej przyjazny dla programistów takich języków jak C# lub Python.
- Oferuje wiele nowych, wysokopoziomowych struktur takich jak typy generyczne, czy protokoły (uogólnienie interfejsów w innych językach). Szerszy opis poniżej.
- Ułatwiona iteracja po wartościach kolekcji.
- Wspiera paradygmat programowania funkcyjnego dzięki swojej strukturze.
- Dynamiczny polimorfizm. Metody mogą zwracać wiele typów wartości równocześnie. Metody mogą posiadać opcjonalne parametry.
- Ułatwiona nauka programowania dla zupełnie nowych programistów.
Środowisko programistyczne Xcode 6
Zostało dodane wiele nowych funkcjonalności. W szczególności nowi programiści będą ucieszeni.
Xcode 6 będzie zawierać specjalne środowisko „Playgrounds”. Służyć będzie ono do eksperymentów z kodem. Interaktywny debuger sprawi, że całość będzie realizowana w czasie rzeczywistym. Dzięki specjalnemu środowisku REPL (Read, Eval, Print, Loop) programiści będą mogli programować „linijka po linijce”.
Co ważne kod języka Swift będzie mógł być swobodnie używany zaraz obok języka C i języka Objective-C. Ciekawe jak to wpłynie na czytelność kodu? :D
Swift – Cechy charakterystyczne
Spis cech charakterystycznych (szybką ściągę) dla języka Swift na bieżąco pomagał tworzyć Adam Śliwakowski. Dzięki!
- Nie trzeba dodawać średnika. Wystarczy:
println(„Hello world”)
- Słowo „let” pozwala definiować stałe.
- Słowo „var” definiuje zwykłe zmienne tak jak w JavaScript
- Można zwracać wiele wartości :D
return (val1, val2, val3)
- Nie trzeba używać nawiasów przy warunkach
- Po nazwie zmiennej można określić typ, ale nie trzeba
let twojaZmienna: Double = 60 // inne przykłady definiowania zmiennych let label = „The value is:” let width = 94 // dodanie wartości liczbowej jako ciąg znaków typu string: let widthLabel = label + String(width) // albo w ten sposób: let widthLabel = label + \(width)
- Zmienne mogą być opcjonalne (mogą być nullem)
var optionalString: String? = „Hello”
- Tworzenie tablic jest bardzo proste
var shoppingList = [„catfish”, „water”, „tulips”] \\ dostęp i przypisanie elementu do tablicy: shoppingList[1] = „cola”
- Tworzenie słownika równie proste jak tablicy
var occupations = [ „Malcolm”: „Captain”, „Kaylee”: „Mechanic” ] \\ dostęp i przypisanie do słownika occupations[„Jayne”] = „Public Relations”
- Pusta tablica oraz słownik z określeniem typu / typów
let emptyArray = String[]() let emptyDictionary = Dictionary
() - Pusta tablica i słownik bez określenia typu
let emptyArray = [] let emptyDictionary = [:]
- Konstrukcja „switch” potrafi obsługiwać różne typy
- Pętla for-in – iteracja przez słownik podając klucz i wartość
- Pętla for-in – przechodzenie przez zakres zdefiniowany jako:
for i in 0..3 { } \\- zawiera 0,1,2 ( są dwie kropki ) for i in 0...3 \\- zawiera 0,1,2,3 ( są trzy kropki)
Funkcje w Swift
- Słowo „func” – deklaruje funkcje. Schemat:
func nazwa_funkcji(param1: String, param2: String) -> String { }
- Znak „->” rozdziela parametry od typu zwracanego obiektu
- Zwracanie wielu wartości – return (val1, val2, val3)
- Można pobierać nieznaną ilość argumentów (argumenty jako tablica)
- Zagnieżdżanie funkcji. Funkcje niższego poziomu mają dostęp do zmiennych zdefiniowanych w funkcjach „rodzicach”.
- Funkcje mogą zwracać inne funkcje jako wartości!
A co jeśli Funkcja pierwsza zwróci drugą, a druga będzie zwracać pierwszą? :D - Closures (domknięcia). Funkcje są przypisane do konkretnych wartości bez ich tworzenia w raz z podaniem nazwy.
Klasy w Swift
- Słowo „class” – deklaruje klasę. Zmienne, stałe i funkcje deklaruje się tak jak wcześniej, ale tutaj istnieją w kontekście klasy
- Deinit – funkcja wywoływana jako deinicjalizująca. Można dodać kod, który ma być wykonany przed dealokacją.
- Override -używane, jeśli nadpisujemy funkcję z klasy nadrzędnej. Znane z innych języków.
override func simpleDescription() -> String { return „description" }
- Gettery oraz settery, mogą być zagnieżdżone jako funkcje względem deklaracji zmiennej.
- Willset & didset – metody wywoływane przed lub po wykonaniu settera zmiennej. Można ich używać gdy chcemy operować w tym czasie na innych zmiennych.
- Extension – odpowiednik „Category” z języka Objective-c. Dodaje funkcjonalność do istniejących typów taką jak nowe metody czy zmienione pola.
- Przykład funkcji generycznych które, przyjmują argumenty dowolnego typu
- Where – dodane do listy parametrów, określa warunek, że typ argumentu musi implementować protokół, musi mieć określoną nadklasę lub musi być taki sam jak typ drugiego parametru.
- Protokoły – klasy implementujące protokół muszą zawierać w swoim opisie wartości i metody zdefiniowane w protokole
Lista materiałów wszystkie w języku angielskim
- Oficjalny wstęp do Swift
- Szybka podróż po Swift
- Swift z Cocoa i Objective-C
- Pełna dokumentacja dla języka Swift
- Książka Swift (iTunes)
Postaram się niedługo udostępnić wersję pdf.
To wszystko. Temat zupełnie nowy i bardzo ciekawy! Ma w sobie olbrzymi potencjał. Postaram się systematycznie przygotowywać materiały.