Informacje i nowości

Czym jest Swift?

Swift

Apple trochę przyzwyczaiło nas do tego, że na WWDC pomijana jest kwestia deweloperów, gdzie powinno się mówić o nich jak najwięcej – w końcu to Worldwide Developers Conference. Ku wielkiemu zaskoczeniu (oczywiście pozytywnym), w tym roku było zupełnie inaczej i z tej okazji, przygotowano dla nich szereg niespodzianek – od opisywanego przeze mnie Metal, po nowy język programowania o nazwie Swift.

Dzięki niemu właśnie, pisanie programów specjalnie dla iOS czy Mac stanie się jeszcze prostsze, a stworzone przez programistów aplikacje będą jeszcze lepsze. Dodatkowo, język jest bardzo szybki i stabilny w porównaniu choćby do C, z którego nowy język programowania Apple się wywodzi.

Typy języków programowania

Jak wiadomo, jest bardzo dużo sposobów (tak to ujmę), aby nasze urządzenie, od komputerów po smartfony czy sterowniki, robiło to, co aktualnie chcemy. Najbardziej uciążliwą metodą jest „bawienie się” bitami za pomocą takich języków jak Assembler, jednakże to pozwala stworzyć definicje i instrukcje już od samej podstawy – za każdym razem, gdy następuje zmiana w pamięci urządzenia lub trzeba odwołać się do nowego urządzenia. Najbardziej wytrwali programiści mogą zrobić za jego pomocą dużo dobrych rzeczy, jednak nie bez powodu użyłem tutaj słowa „wytrwali”, ponieważ ten proces jest bardzo nudny i uciążliwy. Również, trzeba się liczyć z wieloma błędami, które mogą dosłownie doprowadzić kodera do szału.

Tutaj z pomocą przychodzą języki wysokiego poziomu, gdzie większość instrukcji i definicji istnieje, a programistom nie pozostaje nic innego jak połączyć je, aby to wszystko tworzyło spójną i stabilną całość. Tutaj znika tez problem uciążliwości oraz wszechobecnej nudy, co nie zmienia faktu, że i tu błędy mogą doprowadzić do istnej szewskiej pasji 😉 .

Aby przybliżyć wam różnicę pomiędzy językami wysokiego, a niskiego poziomu, posłużę się przykładem znanym z życia. Wyobraźmy sobie pana Jana, który o 6 rano chce sobie przygotować na śniadanie jajecznicę. Patrząc na to z punktu widzenia języka wysokiego poziomu, polecenie jakie musimy mu wydać, to po prostu: „Jan, zrób jajecznicę, jako dane wejściowe masz 4 jajka i kiełbasę” (lub co innego, każdemu według gustu). Proste nie? Jednak patrząc na ten problem z punktu widzenia języka niskiego poziomu, tutaj sprawa się bardzo komplikuje, ponieważ musimy po kolei dokładnie mówić co należy zrobić. A więc rozwiązanie wyglądało by w taki sposób: „Jan podejdź do szafki, Jan weź patelnię, Jan połóż patelnię na kuchenkę, Jan podejdź do drugiej szafki, Jan weź jajko, Jan weź drugie jajko…” itd. Tak więc, każda akcja musi być przedstawiona w sposób dyskretny – czyli za pomocą zer i jedynek. Teraz rozumiecie różnicę?

Ulubiony przez Apple, do tej pory, język C oraz ulubione przez wszystkich koderów, obiektowe C, są językami wysokiego programowania i większość gier na iOS i Mac właśnie powstało za ich pomocą. Co ciekawe, obiektowe C ma już przeszło 30 lat, natomiast samo C – 40! To zdecydowanie dobry czas na coś nowego 😉

Oprócz powyższych języków programowania, istnieją także języki „skryptowe”, czyli coś, co stoi pomiędzy językiem wysokiego poziomu, a niskiego. Co to oznacza? W trakcie kompilacji programu, cały kod zapisany przykładowo w C, musi zostać „przetłumaczony”, na polecenia zrozumiałe dla komputera, a stąd na język niskiego poziomu, czyli na „zera” i „jedynki”. Jeżeli ten proces przebiegnie bez błędów, mamy to co chcieliśmy osiągnąć; w przeciwnym wypadku, oprócz błędów, będziemy mogli być świadkami bardzo nieprzewidywalnego działania naszego programu. To, co jest tutaj dużym minusem, to to, że nasz program możemy przetestować dopiero po procesie kompilacji, który jest bardzo powolny i wydłuża cały proces dewelopingu.

W językach skryptowych jest inaczej. Program kompilacyjny wykonuje polecenia linia po linii, w czasie rzeczywistym, przez co błąd jest łatwiejszy do wychwycenia niż w przypadku języków wysokiego, czy niskiego programowania. Powoduje to, że cały proces powstawania takiego programu jest dużo prostszy i szybszy. Niestety jednak, takie języki mają ograniczone możliwości i są głównie wykorzystywane do prostych operacji.

Jednym z przykładów takiego języka jest, który został porównany do Swifta na tegorocznym WWDC.

Swift – najlepszy z najlepszych?

Swift

Jak wspominałem wcześniej, programy (skrypty) stworzone za pomocą języka takiego jak Python są łatwe do napisania, można je testować w czasie rzeczywistym, lecz niestety, poważnym minusem jest to, że nie możemy zrobić za ich pomocą zbyt wiele i nie sprawuje się za dobrze. Nie jest to idealny język, jeżeli chcemy np. aby nasza gra miała dostęp do dużej mocy obliczeniowej procesora. Języki takie jak C czy obiektowe C posiadają lepszy dostęp do procesora, jak i pozwalają na tworzenie dużo bardziej skomplikowanych programów. Oczywiście, jednocześnie, ich nauka jest trudniejsza, a proces kompilacji wolny.

Swift jest swego rodzaju obietnicą języka, który wyciąga z takich jak Python czy obiektowe C, wszystko to, co najlepsze. Apple niejako to udowadnia mówiąc, że kilka z benchmarków napisanych w Swift da się dużo szybciej uruchomić, niż te napisane za pomocą Pythona, czy obiektowego C. Ponadto, w środowisku XCode zawarto ciekawą funkcję o nazwie „playgrounds”, która pozwala na sprawdzenie działania napisanego kawałka kodu w czasie rzeczywistym, podobnie jak w językach skryptowych.

Jako przykład, na prezentacji pokazano grę, w której programista chciał, aby umieszczony w niej balon poruszał się w górę i w dół, w regularnych odstępach czasu. Aby to wykonać, po prostu użył funkcji matematycznej, znanej bardzo dobrze z czasów liceum, technikum czy zawodówki (mam nadzieję, że nikogo nie pominąłem ;)) czyli funkcji sinus. Daje to ładną, falistą funkcję, która oscyluje w okolicach wartości zerowej w górę i w dół, co daje pożądany efekt, w przypadku balona.

Dzięki językowi Swift, programista mógł bezproblemowo przypisać funkcję sinus do wartości odpowiadającej za poruszanie się balona i dodatkowo mógł sprawdzić, jak się ta wartość będzie zmieniać w trakcie wykonywania się programu, w czasie rzeczywistym. Normalnie, w innych językach programowania i środowiskach, wymagałoby to rozpoczęcia wolnego procesu kompilacji z nadzieją, że to co jest zawarte w kodzie będzie poprawnie spełniać swoją funkcję, o czym z uporem maniaka wspominałem wcześniej.

Swift – Playgrounds

Natychmiastowe korzyści

Dzięki możliwości sprawdzania działania kodu w czasie rzeczywistym, pozwoli to na pewno skończyć programistom ich skomplikowane aplikacje dużo, dużo szybciej niż kiedykolwiek wcześniej. Dodatkowo, dzięki lakoniczności języka Swift, nie trzeba pisać dużo, aby coś osiągnąć – to zapewne zaoszczędzi koderom pisania dużych porcji kodu, które teraz można zastąpić jedną linią.

Również, dzięki połączeniu z tym co oferuje Metal, deweloperzy mogą osiągnąć naprawdę wiele, dosłownie, wyciskając ostatnie soki z procesorów A7, zbytnio się nie trudząc. Śmiało mogę stwierdzić, że tworzenie aplikacji dla iOS oraz Mac weszło właśnie na nowy poziom. Ale…

Natychmiastowe obawy

Pierwszą przeszkodzą pomiędzy programistą, a Swiftem, jest po prostu chęć nauczenia się tego języka. Apple zrezygnowało już z programów napisanych za pomocą obiektowego C. Ale jak wiemy, koderzy lubią wszystko to co najnowsze i lubią być w tym mistrzami ;).

Jeżeli jednak tacy programiści rzeczywiście przysiądą do nauki i już będą tworzyli swoje pierwsze programy, to trochę niepokojące jest to, że mogą one trafić do App Store. Jak wiadomo, takie programy raczej nie są dobrej jakości, a szkoda zaśmiecać nimi sklep Apple, który raczej słynie z wysokiego poziomu oprogramowania. Jednakże, nie każdy ma w kieszeni 99 dolarów, aby opłacić konto deweloperskie na rok, co uspokaja nieco moje obawy 🙂 .

Czekając na „Hello World”

Jeżeli to wszystko, co napisałem tu o Swift, znajdzie swoje odwzorowanie w rzeczywistości, to skorzystają na tym dwie strony – deweloperzy, oraz klienci (będą otrzymywali lepsze produkty). Oczywiście, zanim całkowicie zrozumiemy plusy tego języka, minie na pewno kilka lat. Na tą chwilę trzeba niestety mówić o konieczności zdobycia umiejętności tworzenia w nim programów, jeżeli chce się być „na czasie”. Teraz pozostaje nam czekać, aby przekonać się, czy wprowadzenie Swifta będzie największą innowacją Apple od czasu wprowadzenia App Store?

[source name=”CNET” url=”http://www.cnet.com/news/apples-swift-explained-what-it-is-and-what-it-means/?ttag=fbwl”]

To Top