Swift kontra Objective-C: 10 powodów, dla których przyszłość sprzyja Swift

języki programowania nie umierają łatwo, ale sklepy programistyczne, które trzymają się zanikających paradygmatów, tak. Jeśli tworzysz aplikacje na urządzenia mobilne, a nie badałeś języka Swift, zwróć uwagę: Swift nie tylko zastąpi Objective – C, jeśli chodzi o tworzenie aplikacji dla komputerów Mac,iPhone, iPad, Apple Watch i urządzeń, które mają nadejść, ale także zastąpi C dla programowania wbudowanego na platformach Apple.,

dzięki kilku kluczowym funkcjom, Swift może stać się de facto językiem programowania do tworzenia wciągających, responsywnych, zorientowanych na konsumenta aplikacji przez wiele lat.

Apple wydaje się mieć duże cele dla Swifta. Zoptymalizował kompilator pod kątem wydajności i języka do rozwoju, i nawiązuje do Swift jest „zaprojektowany do skalowania z” hello, world „do całego systemu operacyjnego” w dokumentacji Swift., Podczas gdy Apple nie stwierdził wszystkie swoje cele dla języka jeszcze, premiery Xcode 6, Place zabaw i Swift razem sygnał zamiar Apple, aby tworzenie aplikacji łatwiejsze i bardziej przystępne niż z jakiegokolwiek innego łańcucha narzędzi rozwoju.

oto 10 Powodów, aby wyprzedzić grę, rozpoczynając pracę z Swift teraz.

Swift jest łatwiejszy do odczytania

Objective-C cierpi na wszystkie brodawki, jakich można oczekiwać od języka zbudowanego na C., Aby odróżnić słowa kluczowe i typy od typów C, Objective – C wprowadził nowe słowa kluczowe za pomocą symbolu@. Ponieważ Swift nie jest zbudowany na C, może ujednolicić wszystkie słowa kluczowe i usunąć liczne symbole @ przed każdym typem Objective-C lub słowem kluczowym Objective-C.

W ten sposób nie trzeba już średników do kończenia linii ani nawiasów do otaczania wyrażeń warunkowych wewnątrz instrukcji if / else. Kolejną dużą zmianą jest to, że wywołania metod nie zagnieżdżają się wewnątrz siebie, co skutkuje Hell—bye-bye, ]]., Wywołania metod i funkcji w języku Swift wykorzystują standardową w branży listę parametrów oddzielonych przecinkami w nawiasach. Rezultatem jest czystszy, bardziej ekspresyjny język z uproszczoną składnią i gramatyką.

Kod Swift bardziej przypomina naturalny angielski, oprócz innych współczesnych popularnych języków programowania. Ta czytelność ułatwia istniejącym programistom z JavaScript, Java, Python, C# i C++ przyjęcie Swift do swojego łańcucha narzędzi—w przeciwieństwie do brzydkiego kaczątka, który był Objective-C.,

Swift jest łatwiejszy w utrzymaniu

dziedzictwo jest tym, co powstrzymuje Objective-C—język nie może ewoluować bez ewolucji C. C wymaga od programistów utrzymywania dwóch plików kodu w celu poprawy czasu kompilacji i wydajności tworzenia aplikacji wykonywalnych, wymóg ten przenosi się do Objective-C.

Swift obniża wymóg dotyczący dwóch plików. Xcode i kompilator LLVM mogą obliczyć zależności i wykonać przyrostowe Kompilacje automatycznie w Swift 1.2., W rezultacie powtarzające się zadanie oddzielenia spisu treści (pliku nagłówkowego) od ciała (pliku implementacji) należy już do przeszłości. Swift łączy nagłówek Objective-C (.h) i pliki wykonawcze (.m) do pojedynczego pliku kodu (.swift).

System dwóch plików Objective-C nakłada dodatkową pracę na programistów-i to praca, która odciąga programistów od szerszego obrazu., W Objective-C musisz ręcznie synchronizować nazwy metod i komentarze między plikami, miejmy nadzieję, używając standardowej konwencji, ale nie jest to gwarantowane, jeśli zespół nie ma reguł i recenzji kodu.

Xcode i kompilator LLVM mogą wykonywać pracę za kulisami, aby zmniejszyć obciążenie programisty. Dzięki Swift Programiści zajmują się mniej księgowością i mogą poświęcić więcej czasu na tworzenie logiki aplikacji. Swift eliminuje pracę boilerplate i poprawia jakość kodu, komentarzy i obsługiwanych funkcji.,

Swift jest bezpieczniejszy

jednym z ciekawych aspektów Objective-C jest sposób obsługi wskaźników—szczególnie nil (null). W Objective-C, nic się nie dzieje, jeśli spróbujesz wywołać metodę ze zmienną wskaźnika, która jest zerowa (niezaliczana). Wyrażenie lub linia kodu staje się no-operation (no-op) i chociaż może wydawać się korzystne, że nie ulega awarii, jest to ogromne źródło błędów. No-op prowadzi do nieprzewidywalnego zachowania, które jest wrogiem programistów próbujących znaleźć i naprawić przypadkową awarię lub zatrzymać nieobliczalne zachowanie.,

typy opcjonalne sprawiają, że możliwość zerowej wartości opcjonalnej jest bardzo jasna w kodzie Swift, co oznacza, że może generować błąd kompilatora podczas pisania złego kodu. Tworzy to krótką pętlę sprzężenia zwrotnego i pozwala programistom na kodowanie z zamiarem. Problemy mogą być naprawiane podczas pisania kodu, co znacznie zmniejsza ilość czasu i pieniędzy, które poświęcisz na naprawianie błędów związanych z logiką WSKAŹNIKA z Objective-C.,

tradycyjnie, w Objective-C, jeśli wartość została zwrócona z metody, To obowiązkiem programisty było udokumentowanie zachowania zwracanej zmiennej wskaźnika (używając komentarzy i konwencji nazewnictwa metod). W języku Swift, typy opcjonalne i typy wartości wyraźnie wyjaśniają w definicji metody, czy wartość istnieje lub czy może być opcjonalna (to znaczy, że wartość może istnieć lub może być zerowa).

aby zapewnić przewidywalne zachowanie, Swift uruchamia awarię runtime, jeśli używana jest opcjonalna zmienna nil., Ta awaria zapewnia spójne zachowanie, co ułatwia proces naprawiania błędów, ponieważ zmusza programistę do natychmiastowego rozwiązania problemu. Awaria środowiska uruchomieniowego Swift zatrzyma się w wierszu kodu, w którym została użyta opcjonalna zmienna nil. Oznacza to, że błąd zostanie naprawiony wcześniej lub całkowicie uniknięty w kodzie Swift.

Swift jest zunifikowany z zarządzaniem pamięcią

Swift unifikuje język w sposób, jakiego Objective-C nigdy nie miał. Obsługa automatycznego zliczania odniesień (ARC) jest kompletna dla proceduralnych i obiektowych ścieżek kodu., W Objective-C ARC jest wspierany przez interfejsy API Cocoa i Kod obiektowy; nie jest jednak Dostępny dla proceduralnego kodu C i interfejsów API, takich jak Core Graphics. Oznacza to, że zarządzanie pamięcią staje się obowiązkiem programisty podczas pracy z podstawowymi interfejsami graficznymi i innymi niskopoziomowymi interfejsami API dostępnymi w systemie iOS. Ogromne wycieki pamięci, jakie programista może mieć w Objective-C, są niemożliwe w języku Swift.

programista nie powinien myśleć o pamięci każdego obiektu cyfrowego, który tworzy., Ponieważ ARC obsługuje całe zarządzanie pamięcią w czasie kompilacji, siła umysłu, która poszłaby w kierunku zarządzania pamięcią, może zamiast tego skupić się na podstawowej logice aplikacji i nowych funkcjach. Ponieważ ARC w języku Swift działa zarówno w kodzie proceduralnym, jak i obiektowym, nie wymaga on więcej mentalnych przełączników kontekstowych dla programistów, nawet gdy piszą oni kod, który dotyka niższego poziomu interfejsów API-problem z obecną wersją Objective—C.

automatyczne i wydajne zarządzanie pamięcią jest problemem, który został rozwiązany, a Apple udowodniło, że może zwiększyć produktywność., Drugim efektem ubocznym jest to, że zarówno Objective-C, jak i Swift nie cierpią z powodu śmieciarki pracującej przy czyszczeniu nieużywanej pamięci, takiej jak Java, Go czy C#. Jest to ważny czynnik dla każdego języka programowania, który będzie używany do responsywnej grafiki i wprowadzania danych przez użytkownika, szczególnie na urządzeniu dotykowym, takim jak iPhone, Apple Watch lub iPad (gdzie opóźnienie jest frustrujące i sprawia, że użytkownicy zauważają, że aplikacja jest zepsuta).

Swift wymaga mniej kodu

Swift zmniejsza ilość kodu wymaganą do powtarzających się instrukcji i manipulacji łańcuchami., W Objective-C praca z ciągami tekstowymi jest bardzo zwięzła i wymaga wielu kroków, aby połączyć dwie informacje. Swift wykorzystuje nowoczesne funkcje języka programowania, takie jak dodawanie dwóch ciągów znaków wraz z operatorem”+”, którego brakuje w Objective-C. wsparcie dla łączenia znaków i ciągów jest fundamentalne dla każdego języka programowania, który wyświetla tekst użytkownikowi na ekranie.

system typów w języku Swift zmniejsza złożoność instrukcji kodowych — ponieważ kompilator może rozgryźć typy., Na przykład Objective – C wymaga od programistów zapamiętywania specjalnych tokenów łańcuchowych (%s, %d, %@) I dostarczania oddzielonej przecinkami listy zmiennych, które mają zastąpić każdy token. Swift obsługuje interpolację łańcuchów, co eliminuje potrzebę zapamiętywania tokenów i pozwala programistom wstawiać zmienne bezpośrednio w linii do ustawionego przez użytkownika łańcucha, takiego jak etykieta lub tytuł przycisku. Typ inferencing system i string interpolation łagodzą wspólne źródło awarii, które są wspólne w Objective-C.,

z Objective-C, pomieszanie kolejności lub użycie niewłaściwego tokena łańcucha powoduje awarię aplikacji. W tym przypadku Swift ponownie zwalnia cię z pracy księgowej, przekładając na mniej kodu do napisania (kod, który jest teraz mniej podatny na błędy) ze względu na wbudowane wsparcie dla manipulowania ciągami tekstowymi i danymi.

Swift jest szybszy

zrzucanie starszych konwencji C znacznie poprawiło Swift pod maską. Benchmarki wydajności kodu Swift nadal wskazują na zaangażowanie Apple w poprawę szybkości, z jaką Swift może uruchamiać logikę aplikacji.,

według Prymasa Labs, twórców popularnego narzędzia Geekbench performance tool, Swift zbliżał się do charakterystyki wydajności C++ Dla zadań związanych z obliczeniami w grudniu 2014 roku przy użyciu algorytmu Mandelbrota.

w lutym 2015, Prymas Labs odkrył, że Xcode 6.3 Beta poprawił wydajność Swift algorytmu GEMM—algorytm związany z pamięcią z sekwencyjnym dostępem do dużych tablic-o współczynnik 1.4. Początkowa implementacja FFT – algorytm związany z pamięcią z losowym dostępem do dużych tablic-miała 2,6-krotną poprawę wydajności.,

w języku Swift zaobserwowano dalsze ulepszenia poprzez zastosowanie najlepszych praktyk, co skutkowało 8,5-krotnym wzrostem wydajności algorytmu FFT (pozostawiając C++ z tylko 1,1-krotnym wzrostem wydajności). Ulepszenia umożliwiły również szybkiemu wyprzedzenie C++ dla algorytmu Mandelbrota o współczynnik zaledwie 1.03.

Swift jest prawie na równi z C++ zarówno dla algorytmów FFT jak i Mandelbrota., Według Prymasa Labs, wydajność algorytmu GEMM sugeruje, że kompilator Swift nie może wektoryzować kodu, który kompilator C++ może-łatwy wzrost wydajności, który można osiągnąć w następnej wersji Swift.

mniej kolizji nazw w projektach open source

jednym z problemów, który nękał Kod Objective-C, jest brak formalnego wsparcia dla przestrzeni nazw, co było rozwiązaniem C++do kolizji nazw plików. Gdy ta nazwa kolizji dzieje się w Objective-C, jest to błąd łącznika, a aplikacja nie może uruchomić. Obejścia istnieją, ale mają potencjalne pułapki., Wspólną konwencją jest użycie dwu-lub trzyliterowych przedrostków w celu odróżnienia kodu Objective-C, który jest napisany, powiedzmy, przez Facebook, od własnego kodu.

Swift udostępnia Ukryte przestrzenie nazw, które pozwalają na istnienie tego samego pliku kodu w wielu projektach bez powodowania niepowodzenia kompilacji i wymagają nazw takich jak NSString (następny krok — firma Steve' a Jobsa po zwolnieniu z Apple) lub CGPoint (Core Graphics). Ostatecznie ta funkcja w języku Swift zwiększa produktywność programistów i oznacza, że nie muszą oni prowadzić księgowości, która istnieje w Objective-C., Wpływ Swifta można zobaczyć za pomocą prostych nazw, takich jak Array, Dictionary i String zamiast NSArray, NSDictionary i NSString, które powstały z braku przestrzeni nazw w Objective-C.

W Swifcie przestrzenie nazw są oparte na celu, do którego należy Plik kodu. Oznacza to, że programiści mogą rozróżniać klasy lub wartości za pomocą identyfikatora przestrzeni nazw. Ta zmiana w Swift jest ogromna. Znacznie ułatwia włączenie projektów open source, frameworków i bibliotek do kodu., Przestrzenie nazw umożliwiają różnym firmom programistycznym tworzenie tych samych nazw plików kodu bez obawy o kolizje podczas integracji projektów open source. Teraz zarówno Facebook, jak i Apple mogą korzystać z pliku kodu obiektowego o nazwie FlyingCar.swift bez żadnych błędów lub błędów kompilacji.

Swift obsługuje biblioteki dynamiczne

największą zmianą w Swift, która nie spotkała się z wystarczającym zainteresowaniem, jest przejście z bibliotek statycznych, które są aktualizowane w głównych wydaniach punktowych (iOS 8, iOS 7 itd.) Na biblioteki dynamiczne., Biblioteki dynamiczne to wykonywalne fragmenty kodu, które można powiązać z aplikacją. Ta funkcja pozwala obecnym aplikacjom Swift łączyć się z nowszymi wersjami języka Swift w miarę jego ewolucji w czasie.

programista przesyła aplikację wraz z bibliotekami, z których obie są podpisane cyfrowo certyfikatem rozwoju w celu zapewnienia integralności (hello, NSA). Oznacza to, że Swift może ewoluować szybciej niż iOS, co jest wymogiem dla nowoczesnego języka programowania. Zmiany w bibliotekach mogą być dołączone do najnowszej aktualizacji aplikacji w App Store, a wszystko po prostu działa.,

biblioteki dynamiczne nigdy nie były obsługiwane na iOS aż do uruchomienia Swift i iOS 8, mimo że biblioteki dynamiczne były obsługiwane na komputerach Mac przez bardzo długi czas. Biblioteki dynamiczne są zewnętrzne do pliku wykonywalnego aplikacji, ale są zawarte w pakiecie aplikacji pobranym ze sklepu App Store. Zmniejsza początkowy rozmiar aplikacji, ponieważ jest ona ładowana do pamięci, ponieważ kod zewnętrzny jest połączony tylko wtedy, gdy jest używany.

możliwość odroczenia ładowania w aplikacji mobilnej lub wbudowanej w Apple Watch poprawi postrzeganą przez użytkownika wydajność., Jest to jedna z różnic, które sprawiają, że ekosystem iOS czuje się bardziej responsywny. Apple skupiło się tylko na ładowaniu zasobów, zasobów, a teraz skompilowany i połączony kod w locie. Ładowanie w locie skraca początkowe czasy oczekiwania, aż zasób jest rzeczywiście potrzebny do wyświetlenia na ekranie.

dynamiczne biblioteki w języku Swift umożliwiają wprowadzanie zmian i ulepszeń w języku programowania szybciej niż kiedykolwiek wcześniej. Użytkownicy nie muszą już czekać na Wydania punktów iOS, aby skorzystać z ulepszeń wydajności i niezawodności wprowadzonych przez Apple do Swift.,

Swift place zabaw zachęca do interaktywnego kodowania

nowo wprowadzone place zabaw Swift to dobrodziejstwo dla doświadczonych programistów. Place zabaw zostały częściowo zainspirowane pracą byłego pracownika Apple, Bretta Victora. Place zabaw umożliwiają programistom testowanie nowego algorytmu lub procedury graficznej, powiedzmy od 5 do 20 linijek kodu, bez konieczności tworzenia całej aplikacji na iPhone ' a.

Apple dodało wykonywanie kodu inline na placach zabaw, aby pomóc programistom stworzyć fragment kodu lub napisać algorytm podczas uzyskiwania informacji zwrotnych po drodze., Ta pętla sprzężenia zwrotnego może poprawić szybkość pisania kodu, ponieważ model mentalny, którego potrzebuje tradycyjny programista, można zastąpić wizualizacjami danych na placach zabaw. Programowanie jest procesem iteracyjnym, a wszelkie obciążenia, które można zmniejszyć lub wykorzystać do uzupełnienia procesu twórczego, sprawią, że programiści będą bardziej produktywni i uwolnią ich do rozwiązywania większych problemów, zamiast skupiać się na nudnych szczegółach, które tradycyjne Kompilatory narzucają programistom.,

Uwaga: Z mojego doświadczenia w nauczaniu początkujących programistów, place zabaw nie są tak potężne dla początkujących, jak dla doświadczonych programistów. Samo pokazanie, jak działa zmienna w Swift playground, nie pomaga początkującym zrozumieć potrzeby zmiennej zmiennoprzecinkowej w porównaniu ze zmienną całkowitą. Potrzeba staje się oczywiste, gdy pokaż aplikację, która może zapamiętać ostatnią pozycję przewijania w kanale wiadomości Facebook. Dla początkujących na pytanie” dlaczego „można odpowiedzieć tylko za pomocą działającego przykładu: aplikacji na iPhone' a.,

Swift to przyszłość, na którą możesz mieć wpływ

Objective-C nigdzie się nie wybiera, ale dzięki wprowadzeniu Swifta nie zobaczy tak wielu poważnych zmian. Niektóre funkcje Swift prawdopodobnie przeniosą się do Objective-C, ale dziedzictwo Objective-C w C oznacza, że może wchłonąć tylko tyle.

Swift zapewnia społeczności deweloperskiej bezpośredni sposób wpływania na język, który będzie używany do tworzenia aplikacji, systemów wbudowanych (jeśli Apple kiedykolwiek licencjonuje wbudowany framework i chip dla stron trzecich) oraz urządzeń takich jak Apple Watch.,

Apple koncentruje się na dostarczaniu najlepszych wrażeń konsumenckich i buduje tylko te funkcje, które uważa się za godne uwagi. Wraz z wydaniem Swift 1.2 w Xcode 6.3, Apple naprawił już tysiące błędów zgłoszonych za pomocą popularnego narzędzia Apple Bug Reporter. Zespół wspierający rozwój i ewolucję Swift jest bardzo zainteresowany tym, w jaki sposób język można ulepszyć, aby lepiej wspierać społeczność programistów, która tworzy aplikacje i systemy za pomocą Swift.,

Swift: bardziej przystępny, w pełni funkcjonalny język

większość zmian, które pozwalają Swift wznieść się ponad Objective-C wynika z porzucenia starszego języka, na którym został zbudowany Objective-C. Apple nie odchodzi od Cocoa, który jest ich API i biblioteką kodu do tworzenia wrażeń, które czują się Apple-esque. Zamiast tego zapewniają w pełni funkcjonalny parytet i ułatwiają interakcję z nowymi interfejsami API, które obsługują funkcje takie jak Force Touch lub Taptic Feedback.

wiele starszych decyzji zostało zaprojektowanych, aby ułatwić projektowanie kompilatorów., Swift koncentruje się na ułatwieniu pracy twórcom aplikacji poprzez wyeliminowanie mentalnego obciążenia tradycyjnymi praktykami kodowania. Wraz z poprawą współczesnych kompilatorów, więcej informacji można wywnioskować z mniejszego kodu.

dzięki Swift programiści mają o połowę mniej plików kodowych do utrzymania, zero ręcznej synchronizacji kodu i znacznie mniej interpunkcji do błędnego wpisywania—co prowadzi do więcej czasu spędzonego na pisaniu wysokiej jakości linii kodu., Kod jest teraz samodokumentowany w języku Swift z dodatkiem opcjonalnych typów: mechanizmu bezpieczeństwa w czasie kompilacji zwracającego wartość lub brak wartości, co jest częstym problemem z operacjami asynchronicznymi, awariami sieci, nieprawidłowymi danymi wejściowymi użytkownika lub błędami walidacji danych. ARC jest ujednolicony w języku Swift pomiędzy zarówno proceduralnym kodem w stylu C, jak i zorientowanym obiektowo kodem wykorzystującym Framework Cocoa firmy Apple.

Programiści przekonają się, że piszą mniej kodu w języku Swift, a nowoczesne funkcje językowe wspierają ich w utrzymaniu czytelności wierszy kodu., Dzięki dynamicznej obsłudze bibliotek w systemach iOS i Swift cały ekosystem Apple pozostanie na czele w zakresie programowania w miarę jego rozwoju. Projekty Open source, zestawy SDK innych firm i frameworki, które integrują się z automatyką domową, urządzeniami i usługami społecznościowymi, będą łatwiejsze do integracji bez wydłużania czasu kompilacji. Swift jest prawie tak szybki jak C++ w niektórych algorytmach i najnowsze wydanie Xcode 6.3 I Swift 1.2 wskazują na dodatkowe optymalizacje wydajności na horyzoncie.,

Dodaj do tego fakt, że place zabaw i Swift umożliwiają nowy sposób programowania z wizualnym sprzężeniem zwrotnym, który wspomaga rozwój algorytmów wykorzystujących wizualizacje danych wbudowanych. Krótsza pętla sprzężenia zwrotnego i graficzne opisy sprawiają, że iteracyjny proces kodowania jest jeszcze łatwiejszy do rozpoczęcia.

ostatecznie Swift jest bardziej przystępnym, w pełni funkcjonalnym językiem programowania, który pozwoli programistom nie tylko tworzyć aplikacje, ale także kierować systemy wbudowane, takie jak nowy Apple Watch o niższej mocy, przez wiele lat.,

  • 10 funkcji Apple „ukradł” dla języka programowania Swift
  • 9 rzeczy, których nienawidzimy w Objective-C
  • Recenzja: 7 doskonałych twórców aplikacji mobilnych
  • Recenzja: AppStudio jest jak Visual Basic dla mobile dev
  • Recenzja: Appery.io połączenie Kreatora aplikacji mobilnych z usługami zaplecza
  • Recenzja: Alpha Anywhere Aces offline mobile apps

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *