Swift ADVANCED-przyjmujemy zgłoszenia na szkolenia zamknięte

Swift ADVANCED-przyjmujemy zgłoszenia na szkolenia zamknięte

Swift ADVANCED
– przyjmujemy zgłoszenia na szkolenia realizowane w trybie zamkniętym.
Projekt możemy zorganizować w dowolnej lokalizacji w terminie od 13.09.2017 roku do 13.10.2017 roku.

Szkolenie przeznaczone dla programistów Swift, którzy potrafią swobodnie poruszać się w tym
języku i znają wszystkie jego podstawowe konstrukcje.
 
Przedstawiamy szczegółowo niektóre z technik zastosowanych w języku Swift, mając
na celu zwiększenie świadomości programistów. 

Dzięki temu programista będzie wiedział nie tylko:
  • jak coś działa, ale i dlaczego (albo dlaczego nie działa – lub działa wolniej niż można bysię spodziewać). 
  • ale uniknie też przykrych niespodzianek i błędów podczas pracy z tym językiem.
 
Szkolenie jest podzielone na 5 części. Materiał każdej z części jest poprzeplatany licznymi
ćwiczeniami, które pozwolą uczestnikom na lepsze przyswojenie przekazywanej wiedzy.
 
Pierwsza,skupia się na kolekcjach, bez których ciężko sobie wyobrazić
każdą aplikację. Omawiane są możliwości kolekcji, a także protokoły, na których są one
zbudowane. Nastepnie przedstawiane są typy powiązane z kolekcjami, takie jak indeksy, zakresy
czy wycinki. Dalej tematyka przechodzi przez wyspecjalizowane kolekcje oraz kolekcje typu lazy,
kończąc na omówieniu techniki Copy-on-write.
 
Druga część szkolenia w większych szczegółach przygląda się typom opcjonalnym, ich
mapowaniu i zagnieżdżaniu, porównywaniu, a także użyciu w kolekcjach.
 
W części trzeciej pod lupę bierzemy są typy generyczne. Jest omawiane przeciążanie funkcji pod
kątem typów generycznych w nich użytych, a także jakie ograniczenia na te typy można nałożyć.
Następnie są przedstawione aktualne ograniczenia typów generycznych – czego (jeszcze) nie
można z nimi zrobić. Ta część kończy się spojrzeniem na typy generyczne od strony kompilatora.
 
W części czwartej omawiane są protokoły. Porównywane są statyczne i dynamiczne wywoływanie
funkcji, a także omawiane jest, co to ma wspólnego z protokołami i jak wpływa na wydajność.
Następnie pokazywane są ograniczenia protokołów. Część ta kończy się zaprezentowaniem
techniki wymazywania typów oraz hierarchii protokołów numerycznych.
 
W ostatniej, piątej części omawiane są podstawy refleksji w Swift. Pokazane jest, które rzeczy
można zapożyczyć z Objective-C, a następnie prezentowana jest alternatywa w postaci czystego
API w Swift – typu Mirror.
 
Agenda
 
1. Wszystko o kolekcjach:
1.1.Wbudowane kolekcje danych: Array, Dictionary i ich możliwości
1.2.Protokoły budujące kolekcje: IteratorProtocol, Sequence, Collection
1.2.1.Sekwencje niestabilne
1.2.2.Sekwencje nieskończone
1.3.Indeksy (Indices)
1.4.Zakresy (Ranges)
1.5.Wycinki (Slices)
1.6.Wyspecjalizowane kolekcje
1.6.1.BidirectionalCollection
1.6.2.RandomAccessCollection
1.6.3.MutableCollection
1.6.4.RangeReplaceableCollection
1.7.Kolekcje typu lazy
 
1.8.Technika Copy-on-write
 
2. Typy opcjonalne – tematy zaawansowane:
2.1.Zagnieżdżanie typów opcjonalnych
2.2.Mapowanie typów opcjonalnych
2.3.Typy opcjonalne & kolekcje
2.4.Porównywanie typów opcjonalnych
 
3. Typy generyczne – tematy zaawansowane:
3.1.Przeciążanie funkcji generycznych w Swift
3.2.Generic constraints – możliwości
3.3.Aktualne ograniczenia typów generycznych
3.4.Działanie typów generycznych z perspektywy kompilatora
3.5.Technika Whole Module Optimization
 
4. Protokoły – tematy zaawansowane
4.1.Porównanie: static dispatch VS dynamic dispatch
4.2.Omówienie Protocol Witness Tables
4.3.Wpływ na wydajność
4.4.Aktualne ograniczenia protokołów
4.5.Wymazywanie typów
4.6.Hierarcia protokołów numerycznych
 
5. Podstawy refleksji w Swift
5.1.Używanie refleksji z Objective-C
5.2.Typ Mirror
 
Czas trwania: 1 dzień