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”.

Swift język programowaniaCo 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
    Konstrukcja Switch
  • Pętla for-in – iteracja przez słownik podając klucz i wartość
    For-in Swift
  • 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
    funkcje Typ Zwracany Swift
  • Zwracanie wielu wartości – return (val1, val2, val3)
    ZwracanieWieluWartosci
  • Można pobierać nieznaną ilość argumentów (argumenty jako tablica)
    Swift argumenty
  • Zagnieżdżanie funkcji. Funkcje niższego poziomu mają dostęp do zmiennych zdefiniowanych w funkcjach „rodzicach”.
    swift funkcje rodzice
  • Funkcje mogą zwracać inne funkcje jako wartości!
    Swift Funkcje Zwracaja Inne Funkcje
    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.
    Closures domknięcia Swift
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
    Klasy w Swift
  • 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.
    Gettery Settery Deklaracje Zmiennych Swift
  • 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.
    willset Didset Swift
  • Extension – odpowiednik „Category” z języka Objective-c. Dodaje funkcjonalność do istniejących typów taką jak nowe metody czy zmienione pola.extension Swift
  • Przykład funkcji generycznych które, przyjmują argumenty dowolnego typu
    generics Swift
  • 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.
    where Swift
  • Protokoły – klasy implementujące protokół muszą zawierać w swoim opisie wartości i metody zdefiniowane w protokole
    protocol Swift

Lista materiałów wszystkie w języku angielskim

  1. Oficjalny wstęp do Swift
  2. Szybka podróż po Swift
  3. Swift z Cocoa i Objective-C
  4. Pełna dokumentacja dla języka Swift
  5. 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.

Author