Programowanie w języku Swift – jak zacząć, kursy, tutoriale

Chyba zdecydowanie większość programistów ma taki folder lub repozytorium, w którym zalega taka ilość projektów, na ile wpadli pomysłów by napisać aplikację i tak jak szybko rozpoczął się proces twórczy fazy początkowej, tak szybko trafił do kolejnej fazy, czyli: obmyślić co dalej, no i tak sobie leży i czeka razem z innymi projektami. A więc skoro mamy już jakąś ową bazę projektów to czemu by nie utworzyć kolejnego?
W artykule chciałbym przedstawić język Swift, jego możliwości oraz ogólny zarys tworzenia aplikacji z jego pomocą.
Rafał Prążyński. Programista iOS w firmie Ailleron. Interesuje go pisanie czystego kodu, testów oraz tworzenie architektur. Lubi poznawać nowe rzeczy w programowaniu i nie ogranicza się tylko do dziedziny iOS. Stara się być aktywny sportowo. Trenuje Wing Chun Kuen, Kettlebells oraz jak jest okazja to wychodzi na szlak w górach, najlepiej zimą.
Spis treści
Lekkie wprowadzenie do języka Swift
SWIFT to open sourcowy obiektowy język programowania firmy Apple Inc. Jego kompilator to: LLVM. Swift pojawił się w czerwcu 2014 roku na konferencji WWDC (Worldwide Developers Conference). Na ten moment kompilowanie Swifta jest możliwie na Linuxie oraz komputerach firmy Apple Inc. Jest następcą leciwego już Objective-C, który liczy sobie kilkadziesiąt lat, a jego składnia potrafi odstraszyć.
Na szczęście składnia Swifta jakoś kolosalnie nie różni się od takich języków jak C# czy Java, to nauka składni nie powinna być ciężka. Dodatkowo jeśli ktoś ma background w Kotlinie to przejście na programowanie w Swifcie można powiedzieć, będzie prawie bezbolesne ponieważ oba te języki mają bardzo podobną składnię.
Nie jest to też język “niszowy”, także na rynku pracy większość ofert dotycząca platformy Apple zawiera w wymaganiach znajomość tego języka, co za tym idzie czas poświęcony na jego naukę może zaowocować zmianą stanowiska!
Nauka i społeczność Swift – kursy i tutoriale
Swift ma rozbudowaną społeczność oraz wiele stron (np. ulubiona strona programistów: StackOverflow), które zawierają odpowiedzi dotyczące rozwiązań nurtujących nas problemów. Są też strony, które, bardzo fajnie wyjaśniają pewne mechanizmy językowe, np:
swiftbysundell.com (poradniki, podcasty, artykuły)
oraz:
hackingwithswift.com (kursy, poradniki, forum)
Jest duże prawdopodobieństwo, iż artykuły, kursy, poradniki jak i filmy z YT na tych stronach, które publikują autorzy będą niezłym nauczycielem dla początkujących programistów Swifta, jak i dobrym uzupełnieniem wiedzy dla tych, którzy już w jakimś stopniu są zaznajomieni z językiem. Istnieje również międzynarodowy workspace na Slacku, gdzie można bardzo szybko uzyskać odpowiedź, jeśli mamy z czymś problem oraz społeczność na FB, gdzie można spotkać ludzi z dużym doświadczeniem i chętnych do udzielenia porady i pomocy.
No to co możemy zrobić z tym całym Swiftem?
Do wyboru mamy kilka możliwości. Możemy napisać aplikację na:
- zegarki,
- smartfony,
- tablety,
- komputery,
- telewizory,
- serwery.
Czy potrzeba Macbook’a do programowania w Swifcie
Jeśli chodzi o pierwsze 5 punktów jedyne wymaganie, jest takie, że trzeba to robić na komputerach od Apple. Wydaje mi się, że większość ludzi nie musi korzystać z komputera firmy Apple, aby posiadać wiedzę na temat jego ceny, która jest niejednokrotnie tematem wielu konwersacji. Mamy również alternatywę, jeśli ktoś nie chce kupować Maca, a jest nią Hackintosh. Pozwala on nam na postawienie macOS na innym urządzeniu nie wspieranym przez firmę Apple lub można też postawić sobie wirtualkę.
Jeśli ktoś z Was zastanawia się nad rozpoczęcie nauki pisania aplikacji mobilnych (iOS lub Android) to serdecznie polecam tą stronkę: raywenderlich.com. Można tam znaleźć ciekawe artykuły, tutoriale i kursy, które w przystępny sposób objaśniają krok po kroku co się dzieje w projekcie, który się pisze razem z nimi.
GUI – storyboard, xib, swiftUI
Weźmy za przykład aplikację na iOS (którymi zajmuję się na co dzień). Do tworzenie GUI mamy możliwe następujące podejścia: pisanie interfejsu użytkownika z kodu lub używając tzw. storyboardów/xibów.
Storyboard lub xib jest wizualną reprezentacją widoku, który chcemy zaprezentować na ekranie. W moim odczuciu na początku lepiej jest używać storyboardów/xibów ponieważ łatwiej zrozumieć jak działa mechanizm layoutu widoku, aczkolwiek może to być kwestia indywidualna i komuś lepiej będzie zrozumieć ten mechanizm pisząc wszystko z kodu.
Oprócz wcześniej wymienionych możliwości mamy jeszcze jedną do dyspozycji, nowy framework o nazwie SwiftUI, który pozwala nam na tworzenie GUI multiplatformowo, oczywiście w środowisku urządzeń Apple. Multiplatformowo mam na myśli każde urządzenie, które wspiera minimalną wersję systemu operacyjnego dla SwiftUI. Jest on o tyle ciekawy, iż tworzenie widoku odbywa się w paradygmacie deklaratywnym, co jest warte uwagi jeśli ktoś nie jest zapoznany z tym podejściem.
Jeśli ktoś jest zainteresowany tematem od strony serwerowej, to polecam się zapoznać z frameworkami:
W bardzo przyjemny sposób pomogą nam szybko postawić prostą aplikację serwerową.
Możemy również utworzyć skrypty, command line tools lub biblioteki wykonywalne na Linuxie. Opcji do wyboru jest wiele także: Zachęcam do eksperymentowania!
Coś więcej o Swift
Swift daje nam możliwość pisania w kilku paradygmatach:
- protokolarnym,
- reaktywnym,
- funkcyjnym,
- deklaratywnym.
Jako język wysokiego poziomu zawiera w sobie mechanizmy funkcji wyższego rzędu takich jak: reduce, filter czy map. Ma możliwość tworzenia funkcji anonimowych oraz pisania generycznego kodu. Jest również silnie typowany, co pozwala na uniknięcie problemów z rzutowaniem, jakie czasem zdarzało się spotkać w projektach utworzonych w Objective-C. Na zakończenie dodam, iż mamy również możliwość zabawy z Machine Learningiem, który jest natywnym mechanizmem języka dzięki czemu nie trzeba ściągać zewnętrznych bibliotek.
Podsumowanie
Swift daje nam możliwość tworzenia aplikacji różnego pokroju: od telefonów po telewizory czy serwery, posiada cechy nowoczesnego języka obiektowego, co pozwala programiście na łatwiejszą ekspresje w kodzie. Jak wspomniałem na początku składnia języka jest przystępna do przyswojenia, co za tym idzie nauka składni nie powinna być ciężka.
Niedogodnością jest wymuszone posiadanie urządzenia firmy Apple, np.: aby móc zapoznać się systemem iOS, aczkolwiek historia nam nie raz udowodniła, że prawie wszystko da się “rozwiązać inaczej”. Osobiście zachęcam do zapoznania się z językiem, jak i samym tworzeniem aplikacji na którąś z wyżej wymienionych platform, nawet jeśli by to miało być tylko w celach sprawdzenia “z czym się to je”. Dzięki temu możemy poszerzyć swój horyzont możliwości rozwiązań napotkanych problemów czy nauczyć się jakiegoś nowego ciekawego podejścia w pisaniu kodu.
Sam język jest ciągle rozwijany i ulepszany, a jego popularność rośnie także nigdy nie wiadomo czy jego nauka nie przyda się w przyszłości i/lub będzie miłym dodatkowym autem w czyichś mile widzianych umiejętnościach. Dziękuję za uwagę i powodzenia!
Zdjęcie główne artykułu pochodzi z unsplash.com.
Podobne artykuły

Nie komplikuj swojego kodu. Dependency Injection w iOS

Czy w IT największe szanse będą mieć najlepsi oraz prawdziwi pasjonaci? Wywiad z Joanną Kocik

10 lat temu użytkownicy aplikacji byli mniej wymagający. Wywiad z Maciejem Galosem

Jak zarządzać feature flags w aplikacjach ASP.NET Core przy użyciu Azure?

Computer Vision - rozpoznawanie treści na obrazach tak, jak robi to ludzki mózg

Modularna (r)evolucja w krakowskim oddziale StoneX

wAIste: wykorzystanie AI do walki z marnowaniem żywności i promowania zrównoważonego rozwoju
