Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Razvoj Kako programirati sa Swiftom. Izrada prve aplikacije

Razvoj Kako programirati sa Swiftom. Izrada prve aplikacije

Swift je Appleov robustan i intuitivan programski jezik koji možete koristiti za kreiranje aplikacija za iOS, Mac, Apple TV i Apple Watch. Programerima daje neviđenu kreativnu slobodu. Uz ovaj jednostavan jezik otvorenog koda koji je jednostavan za korištenje, sve što vam treba je zanimljiva ideja da stvorite nešto nevjerovatno.

Programeri već koriste
neverovatne karakteristike Swifta.

Swift je brz, efikasan programski jezik u realnom vremenu koji se lako može umetnuti u unaprijed izgrađen Objective-C kod. Sada programeri ne samo da mogu pisati pouzdaniji i sigurniji kod, već i uštedjeti vrijeme i kreirati aplikacije s naprednim mogućnostima.

Odlična aplikacija u Swiftu. Lakoća upotrebe i odziv u realnom vremenu je razlog zašto je VSCO odabrao Swift za kreiranje nove verzije svoje iOS aplikacije za fotografije.

Odlične aplikacije,
razvijen na Swift jeziku.

Sve više programera ugrađuje Swift kod u svoje aplikacije. A neki čak kreiraju potpuno nove aplikacije u Swiftu.

Duolingo Khan
Vodič za čisto nebo akademije

Procreate Kickstarter Eventbrite Hipmunk

Produktivnost je veća. Aplikacije su bolje.

Brze aplikacije prevazilaze očekivanja. Na primjer, uobičajeni algoritam pretraživanja radi mnogo brže u Swiftu.

Do 2.6 puta brži od Objective-C

Do 8.4 puta brži od Pythona 2.7

10.000 cijelih brojeva je pronađeno na grafu korištenjem algoritma pretraživanja u dubinu*

Dodan Swift jezik
u nastavni plan i program.

Nisu samo programeri ti koji cijene potencijal Swift jezika. Univerziteti i druge obrazovne institucije podučavaju Swift na časovima programiranja i objavljuju besplatne kurseve na iTunes U, što znači da čak i početnici mogu lako prijeći s osnovnog kodiranja na programiranje na profesionalnom nivou.

Univerziteti koji su uključili Swift u svoj nastavni plan i program

  • Univerzitet Kalifornije u Santa Kruzu
  • Foothill College
  • Royal Melbourne University of Technology
  • Tehnički univerzitet u Minhenu
  • Lawson Community College
  • Manhattan Community College
  • Mesa Community College
  • Houston Community College
  • Central Piedmont Community College
  • Univerzitet u Plymouthu
  • Kalifornijski državni politehnički univerzitet
  • Univerzitet Stanford
  • Tehnički koledž Northwest Kansas
  • Tehnološki institut Monterreya
  • Univerzitet Aberystwyth
  • Univerzitet Full Sail
  • Ingesup škola
  • Južni metodistički univerzitet

Swift je posvuda.
A sada je otvoren za sve.

Swift je besplatno dostupan za korištenje programerima, nastavnicima i studentima pod licencom softvera otvorenog koda Apache 2.0. Nudimo OS X i Linux binarne datoteke koje vam omogućavaju kompajliranje koda za iOS, OS X, watchOS, tvOS i Linux. A da bismo ubrzali razvoj Swifta u još moćniji jezik, stvorili smo novu zajednicu u kojoj korisnici mogu direktno doprinijeti Swift izvornom kodu.

Upoznaj Swifta.

glavna knjiga

Preuzmite tutorijal Swift programski jezik iz Apple Books Store-a besplatno. Saznajte kako Swift čini programiranje praktičnijim, fleksibilnijim i zabavnijim.

Xcode

Xcode je Mac aplikacija dizajnirana za razvoj drugih aplikacija za Mac i iOS. Xcode ima sve alate koji su vam potrebni za kreiranje nevjerovatnih aplikacija. Može se besplatno preuzeti sa Mac App Store-a.

Developer Website

Dobijte detaljne tehničke informacije i potpuni pregled jezika Swift. Pogledajte blog za programere za najnovije vijesti. Također imate besplatan pristup sjajnim resursima kao što su tutorijali, video zapisi i uzorci koda.

Ako razmišljate koji programski jezik da naučite, preporučujemo da obratite pažnju na Swift, a evo i zašto.

1. Šta je Swift i zašto je tako nazvan?

Swift je moćan i intuitivan programski jezik za macOS, iOS, watchOS i tvOS, ali se razlikuje od Objective-C po širem spektru mogućnosti koje su bile ograničene na veze sa C. Osim toga, Swift se može nazvati sigurnim jer je jezik snažno otkucano: u svakom trenutku tačno znate sa kojom vrstom objekta radite. Njegova glavna prednost je brzina: i pri radu na projektu i pri pokretanju gotove aplikacije. Zbog ove prednosti u odnosu na druge jezike (prema kreatorima, apsorbirao je sve najbolje od drugih programskih jezika) nazvan je Swift (u prijevodu brz).

2. Šta biste trebali naučiti, Objective-C ili Swift?

O ovom pitanju se naširoko raspravlja od uvođenja Swifta, ali kao i tada, postoji više argumenata u prilog njegovom proučavanju. I sam Apple je više puta jasno stavio do znanja da budućnost pripada Swiftu. Istovremeno, može se koristiti paralelno sa Objective-C tako da nema problema s različitim verzijama. Iz istog razloga, mnogi poslodavci ozbiljno shvataju činjenicu da neko odbija da nauči Objective-C, verujući da je Swift još uvek prilično sirov.

3. Zašto je Swift brži od drugih jezika? Možda ovo nije istina?

Apple se hvali da je Swift do 2,6 puta brži od Objective-C i 8,4 puta brži od Pythona 2.7. Mislimo da se ne postavlja pitanje zašto treba da brinete o brzom izvršavanju koda – i trebalo bi da bude jasno da brži kod radi efikasnije i glatko, što omogućava korisniku da uživa u interakciji sa uređajem.

4. Čuo sam da je učenje Swifta vrlo lako. je li tako?

Možemo reći da je to istina. Swift je dizajniran da olakša onima koji su početnici u programiranju da počnu kreirati vlastite aplikacije, što ga čini nevjerovatno lakim za učenje kodiranja. Apple upoređuje svoju zamisao sa skript jezikom, a programeri ga upoređuju sa BASIC-om.

5. Dakle, mogu samo da napišem aplikaciju i da je skoro odmah postavim u App Store?

6. Pošto je sve tako jednostavno, koliko brzo ću postati profesionalac?

Uopšteno govoreći, ovo je kontroverzno pitanje. Swift se stalno usavršava, tako da su samo njegovi kreatori pravi stručnjaci. Čak i ako ste sami kreirali nekoliko odličnih aplikacija i savladali niz naprednih kurseva i tutorijala, ipak nećete biti jedni od najboljih, zbog čega u intervjuima kažu da se stalno usavršavaju, a da nisu postigli savršenstvo ovu tačku).

U svakom slučaju, kada se poigrate sa Swiftom i steknete osjećaj za to, shvatite da li vam se sviđa ili ne i počnete raditi na pravim projektima, onda možete reći da barem želite postati profesionalac. Generalno, sve zavisi od vas.

7. Ipak, zašto je bilo potrebno kreirati novi jezik ako je stari radio?

Objective-C je nekada bio Appleov primarni programski jezik za pisanje aplikacija, koji datira još iz dana OS X. Ali tokom tog vremena, jezici i programske prakse su se dosta promijenile, posebno u oblasti razvoja mobilnih uređaja. Umjesto rafiniranja starog, Apple je odlučio krenuti drugim putem i promijeniti način na koji programeri rade, čineći proces interaktivnijim.

8. Šta je sa činjenicom da Swift još nije u potpunosti razvijen?

Pa, nije činjenica da će Apple završiti razvoj Swifta u narednim godinama, jer bi to značilo da ga ubijemo. Ovdje, kao i kod svakog novog jezika, postoji mogućnost grešaka. Ali sve se stalno ažurira, jer je to u interesu samog Applea. Inače, Google već razmišlja o mogućnosti pokretanja Swift aplikacija na Appleu, tako da je pred njim još dug put.

9. Jednom sam studirao programske jezike. Kakav je ovaj jezik?

Najvjerovatnije u Rubyju ili Pythonu. Iako također možete naučiti sintaksu iz C ovdje.

10. Čuo sam nešto o kakau. Više?

Cocoa i Cocoa Touch su okviri koji rade na OS X i iOS-u. Oba su primarno implementirana sa Objective-C i integrisana sa Xcodeom (ako već ne znate, to je razvojno okruženje). Sastoje se od biblioteka, API-ja i vremena izvođenja. Budući da je Swift razvojni jezik za iOS, radi i sa Cocoa i Cocoa Touchom. ako je interesantno,

Swift je nevjerovatno moćan i jednostavan programski jezik koji je Apple predstavio 2014. godine i koji otvara vrata mnogim programerima za kreiranje aplikacija za iOS, macOS, Apple TV i Apple Watch. Ovaj jezik je naslijedio ideje od Objective-C, Rust, Haskell, Ruby, Python, C# i CLU. Koristi sigurne obrasce programiranja i sadrži nove funkcije koje programiranje čine zabavnim i zanimljivim. Kreirao ga je Chris Lattner, to je robustan, brz i otvoren jezik koji dodatno olakšava kreiranje aplikacija za najpopularniji telefon na svijetu.

Swift je moderan programski jezik sa stabilnom verzijom koju je prilično lako naučiti, čak i ako smatrate da vam je to prvi jezik. Sprečava mnoge greške u fazi kompilacije, ubrzava razvojni proces i poboljšava kvalitet koda.

Swift filozofija

Glavna filozofija jezika je njegova jednostavnost, brzina i sigurnost. Ulazni prag se značajno promijenio u odnosu na Objective C - čak i bez poznavanja drugih programskih jezika ili osnova, možete bezbedno početi učiti jezik.

Apple je pojednostavio jezik za programere što je više moguće: sintaksa je postala čišća, što povećava čitljivost koda i za iskusne i za početnike programere. Ukupna količina koda je smanjena, što je rezultiralo povećanom produktivnošću. Sve metode koje su korištene u Objective C potpuno su redizajnirane, osmišljene i prepisane.Swift se stalno razvija i ažurira, što ukazuje na njegovu pouzdanost i usmjerenost na budućnost.

Gdje se koristi Swift?

Programeri koriste ovaj programski jezik za pisanje mobilnih aplikacija za Apple telefone, pametne satove i računare. Bilo je čak i glasina da Google želi potpuno prebaciti Android na Swift, svašta se može dogoditi. Ovo je univerzalni jezik koji se može koristiti na bilo kojoj platformi kompanije Cupertino.

Važno je da je u jesen 2016. Apple omogućio otvaranje studentskog centra za učenje u kojem svako može naučiti kako programirati iOS aplikacije. Ali to nije sve; u državama, Swift je već uključen u nastavni plan i program mnogih vodećih obrazovnih institucija. Ovaj programski jezik ima ogroman potencijal.

Swift Learning Difficulty

Swift je siguran jezik koji će vas zaštititi od većine grešaka u procesu programiranja. Reći će vam gdje je greška i zašto se program ne kompajlira. Ali s druge strane, ovdje je strogo kucanje. Appleov jezik je neumoljiv.

Trenutno je dostupno malo dokumentacije u poređenju sa drugim jezicima. Ali to se može objasniti činjenicom da je jezik nedavno objavljen i postao Open Source projekat, jer su ga u vrijeme objavljivanja mogli koristiti samo oni programeri koji su imali aktivnu pretplatu na Apple Developer Program.

Još ranije se moglo reći da Swift nije baš popularan i da postoji mali broj biblioteka i ekstenzija trećih strana za njega, ali sada to potpuno nije slučaj. Na GitHubu i Internetu postoje desetine odličnih rješenja programera trećih strana koja će vam pomoći da poboljšate vaš projekat.

Prednosti/mane Swifta

Ovaj moderan i moćan programski jezik ima niz prednosti koje ga izdvajaju od drugih ili istog Objective-C. A to su nove moćne jezičke karakteristike, izuzetno striktno kucanje podataka, konciznija sintaksa, znatno veće performanse u operacijama pristupa zbirkama (sortiranje i pretraživanje), podrška za određenu većinu modernih sintaksičkih konstrukcija koje postoje u drugim programskim jezicima visokog nivoa. A jedna od glavnih karakteristika Swifta je da je potpuno unazad kompatibilan sa Objective-C. Dakle, ovo vam omogućava da postepeno prepisujete projekte s jednog jezika na drugi, a također omogućava korištenje Objective-C funkcionalnosti unutar samog Swifta.

Jedna od lijepih stvari je Playground - ovo je neka vrsta interaktivnog sandboxa gdje programer može napisati kod i odmah vidjeti rezultat svog rada. To vam omogućava da nekoliko puta povećate brzinu pisanja glavnog projekta, jer se pisanje pojedinačnih dijelova koda ili algoritama sada može izvoditi na igralištu uz vizualnu povratnu informaciju, bez rizika da napravite greške u glavnom projektu.

Apple je preradio mnoge stvari, dajući nam virtuelno novi napredni sistem nabrajanja, efikasno upravljanje pristupom i optimizovano automatsko sakupljanje smeća.

Tamna strana jezika je njegova mala popularnost i niska rasprostranjenost. Većina aktuelnih projekata je napisana u Objective-C i moraće da se održava, a mnoge kompanije ne prepisuju svoje velike projekte samo zato što je to ogroman i neverovatno dugotrajan proces.

Related Technologies

Apple je napravio prijelaz sa korištenja statičkih biblioteka na dinamičke i dodao ovu funkcionalnost svom programskom jeziku, što znači da se razvija brže od samog iOS-a. Sada programeri mogu lako predstaviti svoju aplikaciju zajedno sa bibliotekama koje su napisali. Ranije ste morali čekati novo izdanje iOS-a, ali sada se situacija promijenila. Dinamičke biblioteke pružaju mogućnost da poboljšanja i promjene u vašem kodu budu fleksibilniji nego ikada prije.

Swift je funkcionalniji i pristupačniji jezik koji, poput Objective-C, podržava službene okvire Cocoa i Cocoa Touch. Na Internetu je dostupno mnogo projekata otvorenog koda, uključujući velike kompanije kao što je Airbnb, koji vam omogućavaju da koristite sve moderne metode i rješenja prilikom pisanja koda.

miden16 10. jun 2014. u 13:06

Swift programski jezik. ruska verzija

  • Razvoj za iOS,
  • Swift

Zdravo, Habr! 2. juna svi smo svojim očima mogli vidjeti kako je Apple počeo stvarati revoluciju u taboru Objective-C programera predstavljajući svijetu svoj novi programski jezik - Swift. Istovremeno je javnosti stavila na raspolaganje malu dokumentaciju o jeziku, koju smo odlučili da prevedemo ako bude potražnje. Predstavljamo Vam prijevod prvog poglavlja. Ako je tema interesantna, nastavićemo da objavljujemo prevod svake nedelje.

Jezički vodič
The Basics
Osnovni operateri
Stringovi i znakovi
Vrste kolekcije
Kontrolni tok
Funkcije
Zatvaranja
Enumerations
Klase i strukture
Svojstva
Metode
Subscripts
Nasljedstvo
Inicijalizacija
Deinicijalizacija
Automatsko brojanje referenci
Opciono povezivanje
Tip Casting
Nested Types
Ekstenzije
Protokoli
Generici
Napredni operateri

Language Reference
O jezičnoj referenci
Leksička struktura
Vrste
Izrazi
Izjave
Deklaracije
Atributi
Patterns
Generički parametri i argumenti
Sažetak gramatike
Trademarks

Dobrodošli u Swift

O Swift jeziku
Swift je novi programski jezik za razvoj iOS i OS X aplikacija koji kombinuje najbolje od C i Objective-C, ali bez ograničenja nametnutih radi kompatibilnosti sa C. Swift koristi sigurne programske obrasce i dodaje moderne funkcije koje čine stvaranje aplikacija u jednostavnijem, fleksibilnijem i zabavnijem procesu. Napravljen od nule od strane nas, Swift je prilika da se ponovo zamisli kako se aplikacije razvijaju.

Swift je u razvoju već nekoliko godina. Osnova novog programskog jezika bili su postojeći kompajler, debager i okviri. Pojednostavili smo upravljanje memorijom pomoću automatskog brojanja referenci (ARC). Naši okviri su također prošli veliku modernizaciju. Objective-C je počeo podržavati blokove, literale i module - sve je to stvorilo povoljne uslove za uvođenje modernih tehnologija. Upravo je ovaj pripremni rad poslužio kao temelj za novi programski jezik koji će se koristiti za razvoj budućih softverskih proizvoda za Apple.

Objective-C programerima će Swift biti poznat. Kombinira čitljivost imenovanih parametara sa snagom Objective-C-ovog dinamičkog objektnog modela. Otvara postojeće Cocoa okvire i kompatibilan je sa kodom napisanim u Objective-C. Izgrađen na ovoj zajedničkoj osnovi, jezik nudi mnoge nove karakteristike i objedinjuje proceduralne i objektno orijentisane aspekte programskog jezika.

Swift neće uplašiti ni programere početnike. To je prvi moćni programski jezik koji je intuitivan i zabavan kao skriptni jezik. Podržava takozvana igrališta, koja omogućavaju programerima da eksperimentišu sa kodom, videći rezultat u realnom vremenu bez potrebe da kompajliraju i pokreću aplikaciju.

Swift uključuje najbolje od modernih jezika i razvijen je uzimajući u obzir Appleovo veliko iskustvo. Naš kompajler je sinonim za performanse, a naš jezik je optimizovan za razvoj bez obzira na kompromis. Dizajniran je na način da lako možete razviti svoju prvu “zdravo, svijete!” aplikaciju, pa čak i cijeli operativni sistem. Sve ovo čini Swift važnim alatom za programere i za sam Apple.

Swift je fantastičan novi način za pravljenje aplikacija za iOS i OS X, a mi ćemo ga nastaviti nadograđivati ​​dodavanjem novih funkcionalnosti i uvođenjem novih funkcija. Naš cilj je ambiciozan. I jedva čekamo da vidimo šta možete stvoriti s njim.

Uvod u Swift
Prema dugogodišnjoj tradiciji, prvi program na novom jeziku trebao bi na ekranu prikazati riječi „Zdravo, svijete“. Sa Swiftom se to radi ovako:

Println("Zdravo, svijet")
Ako ste ikada razvijali u C ili Objective-C, ova sintaksa bi vam trebala izgledati jezivo poznato - u Swiftu, ova linija koda je kompletan program. Više ne morate da uvozite zasebne biblioteke da biste obezbedili osnovnu funkcionalnost kao što je I/O konzole ili manipulacija stringovima. Kod napisan u globalnom opsegu je ulazna tačka u program, tako da glavna funkcija više nije potrebna. Također imajte na umu da na kraju svakog reda nema tačke i zareza.

Ovaj uvod pruža dovoljno informacija za početak kodiranja u Swiftu. Ne brinite ako nešto ne razumijete – sve ćemo detaljno objasniti u narednim poglavljima.

Komentar
Za bolje razumijevanje materijala preporučujemo korištenje načina igranja u Xcodeu. Playground vam omogućava da vidite rezultate odmah dok uređujete svoj kod, bez potrebe za kompajliranjem i pokretanjem aplikacije.
Jednostavni tipovi podataka
Koristite let za kreiranje konstante i var za kreiranje varijable. Tip konstante nije potrebno specificirati; možete joj dodijeliti vrijednost samo jednom.

Var myVariable = 42 myVariable = 50 neka myConstant = 42
Tipovi konstante i varijable moraju odgovarati tipovima odgovarajućih vrijednosti koje su im dodijeljene. Međutim, to ne znači da morate direktno navesti njihov tip. Kompajler će automatski odrediti tip konstante i varijable kada im dodijeli vrijednost. Dakle, u gornjem primjeru, kompajler će odrediti da je myVariable cjelobrojni tip.

Ako inicijalizator nedostaje ili ne pruža dovoljno informacija, možete sami odrediti tip nakon varijable, odvajajući ime i tip dvotočkom:

Neka implicitInteger = 70 neka inplicitDouble = 70.0 neka inplicitDouble: Double = 70

Hajde da eksperimentišemo
Kreirajte konstantu tipa Float i inicijalizirajte je brojem 4.

Vrijednosti se nikada implicitno ne pretvaraju u drugi tip. Ako trebate pretvoriti vrijednost u drugi tip, učinite to eksplicitno:
let label = "Širina je " let width = 94 let widthLabel = label + String(width)
Hajde da eksperimentišemo
Pokušajte ukloniti eksplicitnu konverziju u String u posljednjem redu. Koju grešku ćete dobiti?

Lakši način za uključivanje vrijednosti u nizove je stavljanje izraza u zagrade i ispred njih obrnuta kosa crta (\). primjer:

Neka jabuke = 3 neka naranče = 5 let jabukaSummary = "Imam \(jabuke) jabuke." let fruitSummary = "Imam \(jabuke + narandže) komade voća."

Hajde da eksperimentišemo
Pokušajte koristiti \() konstrukciju i ispisati string uključujući rezultat zbira dvije cjelobrojne varijable i nečijeg imena.

Prilikom rada s nizovima i asocijativnim nizovima (rječnicima) koriste se uglaste zagrade ():

Var shoppingList = ["som", "voda", "lale", "plava boja"] shoppingList = "boca vode" var occupations = [ "Malcolm": "Kapetan", "Kaylee": "Mehaničar", ] zanimanja ["Jayne"] = "Odnosi s javnošću"
Da kreirate prazan niz ili rječnik, koristite sljedeću sintaksu:

Neka prazniArray = String() neka prazniRječnik = Rječnik ()
Da biste kreirali prazne nizove i rječnike, koristite i [:] respektivno—na primjer, kada dodijelite novu vrijednost varijabli ili proslijedite argument funkciji.

ShoppingList = // Otišao u kupovinu i kupio sve.

Uslovi i ciklusi
If i switch izrazi se koriste za kreiranje uslova, a for-in, for, while i do-while izrazi se koriste za kreiranje petlji. U ovom slučaju nije potrebno isticati uslove i inicijalizirati izraze zagradama, dok su vitičaste zagrade potrebne.

Neka individualScores = var teamScore = 0 za rezultat u individualScores (ako je rezultat > 50 (timski rezultat += 3) drugo (timski rezultat += 1)) timski rezultat
Uslov unutar if naredbe mora biti boolean, što konkretno znači da je izjava if score (...) greška jer nema eksplicitnog poređenja (na primjer, sa nulom).

Naredba if može se koristiti zajedno sa let i var za rad sa konstantama i varijablama koje mogu imati nultu vrijednost. Takve konstante i varijable nazivaju se opcionim (to jest, mogu uzeti bilo koju vrijednost ili biti jednake nuli). Da biste kreirali opcionu varijablu ili konstantu, dodajte znak pitanja (?) nakon tipa.

Var optionalString: String? = "Zdravo" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Zdravo!" if neka ime = opcionoName ( greeting = "Zdravo, \(ime)")

Hajde da eksperimentišemo
Promijenite optionalName u nil. Šta vidite na ekranu? Dodajte else blok za rukovanje slučajem u kojem je optionalName nula.

Ako je opciona vrijednost nula, uvjet će biti lažan i kod u vitičastim zagradama nakon if neće biti izvršen. U suprotnom, varijabli pozdrava će biti dodijeljena nova vrijednost.

Operatorski prekidač višestrukog izbora podržava mnoge druge operatore poređenja unutar sebe i nije ograničen na jednostavna poređenja:

Neka povrće = "crvena paprika" zamijeni povrće ( case "celer": let vegetableComment = "Dodajte malo grožđica i napravite mrave na kladi." case "krastavac", "potočarka": let vegetableComment = "To bi bio dobar sendvič s čajem ." case neka x gdje je x.hasSuffix("pepper"): let vegetableComment = "Je li ljuto \(x)?" default: let vegetableComment = "Sve ima dobar ukus u supi." )

Hajde da eksperimentišemo
Pokušajte ukloniti zadani uvjet. Koju grešku ćete dobiti?

Nakon izvršenja odgovarajućeg bloka koda, program napušta naredbu switch bez provjere naknadnih uslova. Na ovaj način ne morate ručno dodavati naredbe prekida na kraju svakog bloka slučaja.

Da biste prešli preko elemenata asocijativnog niza, koristite naredbu for-in zajedno sa specificiranjem para imena za svaki par ključ-vrijednost.

Neka zanimljivi brojevi = [ "Prime": , "Fibonacci": , "Kvadrat": , ] var najveći = 0 za (vrsta, brojevi) u zanimljivim brojevima ( za broj u brojevima ( ako je broj > najveći ( najveći = broj ) ) ) najveći

Hajde da eksperimentišemo
Dodajte još jednu varijablu koja će vam omogućiti da saznate koji je od tri tipa najveći pronađeni broj.

Naredba while petlje vam omogućava da izvršite blok koda unutar nje sve dok se uvjet ne procijeni na false. Uslov se također može specificirati nakon bloka, koji će se u ovom slučaju izvršiti barem jednom.

Var n = 2 dok je n< 100 { n = n * 2 } n var m = 2 do { m = m * 2 } while m < 100 m
Naredba for se može koristiti za ponavljanje niza brojeva koristeći dvije tačke (..) ili korištenjem inicijalizatora, uvjeta i inkrementa. Gledajte, ove dvije petlje rade istu stvar:

Var firstForLoop = 0 za i u 0..3 ( firstForLoop += i ) firstForLoop var secondForLoop = 0 za var i = 0; i< 3; ++i { secondForLoop += 1 } secondForLoop
Kada kreirate petlju, koristite dvije tačke (..) ako ne želite da uključite veću vrijednost u raspon i tri tačke (...) da biste uključili i manje i veće vrijednosti.

Funkcije i zatvaranja.
Da biste deklarirali funkcije, koristite ključnu riječ func. Funkcija se poziva navođenjem njenog imena i liste argumenata u zagradama. Tip povratka treba odvojiti od formalne liste argumenata pomoću -> .

Func greet(ime: String, dan: String) -> String ( vrati "Zdravo \(ime), danas je \(dan)." ) greet("Bob", "Utorak")

Hajde da eksperimentišemo
Uklonite parametar dana. Umjesto toga, dodajte varijablu koja označava naziv jela koje se servira za ručak.

Ako funkcija vraća više vrijednosti, trebali biste koristiti tuple:

Func getGasPrices() -> (Double, Double, Double) ( return (3.59, 3.69, 3.79) ) getGasPrices()
Funkcije također mogu imati neograničen broj argumenata:

Func sumOf(numbers: Int...) -> Int (var sum = 0 za broj u brojevima (sum += number) return sum) sumOf() sumOf(42, 597, 12)

Hajde da eksperimentišemo
Napišite funkciju koja vam omogućava da pronađete aritmetičku sredinu proizvoljnog broja njenih argumenata.

Funkcije mogu biti ugniježđene jedna u drugu. Ugniježđena funkcija može pristupiti varijablama deklariranim u vanjskoj funkciji. Koristite ugniježđene funkcije da sredite kod složene ili velike funkcije.

Func returnFifteen() -> Int (var y = 10 func add() (y += 5) add() return y) returnFifteen()
Funkcije su objekti prve klase (prvoklasni tip), drugim riječima, funkcija može vratiti drugu funkciju kao rezultat.

Func makeIncrementer() -> (Int -> Int) ( func addOne(broj: Int) -> Int (vrat 1 + broj) return addOne) var increment = makeIncrementer() increment(7)
Funkcija također može uzeti drugu funkciju kao jedan od svojih argumenata.

Func hasAnyMatches(list: Int, uslov: Int -> Bool) -> Bool (za stavku na listi (ako je uslov(stavka) (vrati true)) vrati false) func lessThanTen(number: Int) -> Bool (vrati broj< 10 } var numbers = hasAnyMatches(numbers, lessThanTen)
Funkcije su poseban slučaj zatvaranja. Možete kreirati zatvaranje bez navođenja imena i okružujući tijelo zatvaranja vitičastim zagradama (()). Da biste odvojili argumente i tip povratka od tijela zatvaranja, koristite in operator.

Numbers.map(( (broj: Int) -> Int u pusti rezultat = 3 * broj vrati rezultat ))

Hajde da eksperimentišemo
Prepišite zatvaranje tako da vraća nulu za sve dodatne brojeve.

Postoji nekoliko tehnika kako bi zatvaranja bila sažetija. Ako je tip zatvaranja poznat a priori (na primjer, to je povratni poziv delegata), možete izostaviti navođenje tipa njegovih parametara i/ili tipa povratne vrijednosti. Zatvaranja koja se sastoje od jednog izraza implicitno vraćaju rezultat tog izraza.

Numbers.map(( broj u 3 * broj ))
U zatvaranju, umjesto specificiranja imena varijable, možete koristiti njen redni broj - ovo je posebno korisno kada se piše kratki spoj. Zatvaranje, koje je posljednji argument funkcije, može joj se proslijediti odmah nakon zagrada sa listom preostalih parametara.

Sortiraj() ( $0 > $1 )

Objekti i klase
Za kreiranje klase koristite rezerviranu riječ class. Članovi klase su deklarisani na isti način kao i obične konstante i varijable. Štaviše, metode klase su deklarirane kao obične funkcije.

Oblik klase ( var numberOfSides = 0 funkcija simpleDescription() ->

Hajde da eksperimentišemo
Dodajte konstantu člana klase i metodu klase koja je uzima kao svoj argument.

Da biste kreirali instancu (objekat) klase, samo dodajte zagrade iza imena klase. Metodama i članovima klase se pristupa kroz tačku.

Var shape = Shape() shape.numberOfSides = 7 var shapeDescription = shape.simpleDescription()
U ovom primjeru smo propustili jedan važan detalj - konstruktor klase, init metod.

Class NamedShape ( var numberOfSides: Int = 0 var name: String init(name: String) (self.name = name) func simpleDescription() -> String (vrati "Oblik sa stranama \(numberOfSides)."))
Obratite pažnju na to kako je član klase imena odvojen od argumenta konstruktora imena po sebi. Argumenti se prosleđuju konstruktoru na normalan način, kao i bilo kojoj drugoj metodi klase. Imajte na umu da svaki član klase mora biti inicijaliziran, bilo kada je deklariran (kao numberOfSides) ili u konstruktoru (kao ime).

Destruktor klase je deinit metoda, koja se može prepisati ako je potrebno.

Da biste naslijedili klasu od postojeće klase, nakon navođenja imena podređene klase, dodajte dvotočku i naznačite ime nadređene klase. U Swiftu ne postoje ograničenja u pogledu obaveznog nasljeđivanja bilo koje standardne klase.

Metode nadjačane od strane podređene klase moraju biti označene ključnom riječi nadjačavanje - nadjačavanje metoda bez nadjačavanja će rezultirati greškom. Kompajler takođe otkriva metode koje su označene kao nadjačavanje, ali ne zamenjuju nijednu metodu svoje roditeljske klase.
class Square: NamedShape ( var sideLength: Double init(sideLength: Double, name: String) (self.sideLength = sideLength super.init(name: name) numberOfSides = 4) func area() -> Double ( return sideLength * sideLength ) override func simpleDescription() -> String ( vrati "Kvadrat sa stranicama dužine \(sideLength)." ) ) let test = Square(sideLength: 5.2, ime: "moj test kvadrat") test.area() test.simpleDescription ()

Hajde da eksperimentišemo
Kreirajte klasu Circle i naslijedite klasu NamedShape. Konstruktor za klasu Circle uzima dva argumenta: radijus i ime. Nadjačajte područje i opišite metode ove klase.

Članovi klase također mogu imati svoj getter i setter.

Klasa EquilateralTriangle: NamedShape ( var sideLength: Double = 0.0 init(sideLength: Double, name: String) (self.sideLength = sideLength super.init(name: name) numberOfSides = 3) var perimetar: Double ( get ( return 3.0 * sideLength ) set ( sideLength = newValue / 3.0 ) ) nadjačati func simpleDescription() -> String (vratiti "Jednakostranični trokut sa stranicama dužine \(sideLength)." ) ) var triangle = EquilateralTriangle(sideLength: 3.1, name: "trokut"). ") triangle.perimeter triangle.perimeter = 9.9 triangle.sideLength
U postavljaču varijable perimetra, nova dodijeljena vrijednost se implicitno naziva newValue. Možete promijeniti ime ove varijable tako što ćete je staviti u zagrade odmah nakon set .

Obratite pažnju na strukturu konstruktora klase EquilateralTriangle. Ova metoda uključuje tri uzastopna koraka:

  1. inicijalizacija članova podređene klase;
  2. pozivanje konstruktora roditeljske klase;
  3. mijenjanje vrijednosti članova roditeljske klase.
Ako trebate izvršiti određeni kod prije ili nakon dodjeljivanja nove vrijednosti varijabli, možete nadjačati willSet i didSet metode kako bi odgovarale vašim potrebama. Na primjer, donja klasa garantuje da će dužina stranice trougla uvijek biti jednaka dužini stranice kvadrata.

Klasa TriangleAndSquare ( var trokut: EquilateralTriangle ( willSet ( square.sideLength = newValue.sideLength ) ) var square: Square ( willSet ( triangle.sideLength = newValue.sideLength ) ) init(size: Double, name: String) ( square = Square( sideLength: veličina, ime: ime) trokut = EquilateralTriangle(sideLength: veličina, ime: ime) ) var triangleAndSquare = TriangleAndSquare(veličina: 10, naziv: "još jedan probni oblik") triangleAndSquare.square.sideLength triangleAndSquare.square. square = Square(sideLength: 50, naziv: "veći kvadrat") triangleAndSquare.triangle.sideLength
Metode klasa imaju jednu bitnu razliku od funkcija. Imena argumenata funkcije se koriste samo unutar te funkcije, dok se u metodi klase parametri koriste i prilikom pozivanja te metode (osim prvog parametra). Po defaultu, metoda klase ima ista imena parametara i kada je pozvana i unutar sebe. Međutim, možete odrediti drugačije ime (u primjeru ispod - puta), koje će se koristiti samo unutar ove metode. U ovom slučaju, da biste pozvali ovu metodu, morate koristiti prvo ime (numberOfTimes).

Class Counter ( var count: Int = 0 func incrementBy(iznos: Int, numberOfTimes puta: Int) (broj += iznos * puta) ) var counter = Counter() counter.incrementBy(2, numberOfTimes: 7)
Kada radite s opcijskim vrijednostima, dodajte upitnik (?) ispred metoda, članova klase itd. Ako je vrijednost prije upitnika nula, sve iza (?) se zanemaruje i cijeli izraz je nula. U suprotnom, izraz se vrednuje kao i obično. U oba slučaja, cijeli izraz će rezultirati opcionom vrijednošću.

Neka opciono Kvadrat: Kvadrat? = Square(sideLength: 2.5, name: "optional square") neka sideLength = optionalSquare?.sideLength

Nabrajanja i strukture
Ključna riječ enum se koristi za kreiranje nabrajanja. Imajte na umu da enumeracije mogu sadržavati i metode.

Enum rang: Int ( case Ace = 1 case dva, tri, četiri, pet, šest, sedam, osam, devet, deset case Jack, Queen, King func simpleDescription() -> String (prebacite self ( case .Ace: return " ace" case .Jack: vrati "jack" case .Queen: vrati "queen" case .King: vrati "king" default: return String(self.toRaw()) ) ) ) let ace = Rang.Ace neka aceRawValue = as .toRaw()

Hajde da eksperimentišemo
Napišite funkciju koja uspoređuje 2 ranga nabrajanja na osnovu njihovih vrijednosti.

U gornjem primjeru, elementi enum su inicijalno cjelobrojnog tipa, a potrebno je samo navesti vrijednost prvog elementa - vrijednosti preostalih elemenata će se odrediti prema redoslijedu kojim se pojavljuju. Također možete odabrati nizove ili realne tipove kao sirovu vrijednost vrijednosti elementa.

Da biste konvertovali izvorni tip vrijednosti u tip nabrajanja, koristite funkcije toRaw i fromRaw.

Ako neka convertedRank = Rank.fromRaw(3) ( neka threeDescription = convertedRank.simpleDescription())
Imajte na umu da su vrijednosti elemenata nabrajanja stvarne, a ne samo još jedan prikaz njihovih originalnih vrijednosti. Uopšteno govoreći, ne morate specificirati njihove originalne vrijednosti.

Enum odijelo ( case Spades, Hearts, Diamonds, Clubs func simpleDescription() -> String (prebacite self ( case .Spades: vratite "spades" case .Hearts: vratite "hearts" case .Diamonds: vratite "diamonds" case .Clubs: return "clubs" ) ) ) let hearts = Suit.Hearts let heartsDescription = hearts.simpleDescription()

Hajde da eksperimentišemo
Dodajte metodu Color koja vraća niz "crno" za pikove i trefanje i "crveno" za srca i dijamante.

Obratite pažnju na to kako se pristupa Hearts članu nabrajanja odela. Prilikom dodjeljivanja vrijednosti konstanti hearts, koristi se puno ime Suit.Hearts jer ne specificiramo eksplicitno tip konstante. A u prekidaču koristimo kratku formu .Hearts jer je tip samovrijednosti poznat a priori. Možete koristiti kratku formu sve dok je tip varijable eksplicitno specificiran.

Ključna riječ struct se koristi za kreiranje struktura. Strukture imaju mnogo sličnosti sa klasama, uključujući metode i konstruktore. Jedna od najznačajnijih razlika između struktura i klasa je u tome što se instance struktura, za razliku od instanci klasa, prosljeđuju funkcijama po vrijednosti (to jest, njihova lokalna kopija se prvo kreira), dok se instance klasa prosljeđuju referencom.

Strukturna kartica ( var rank: Rang var suit: Odijelo func simpleDescription() -> String (vratite "\(rank.simpleDescription()) od \(suit.simpleDescription())" )) neka threeOfSpades = Card(rank: . Tri, boja: .Spades) neka threeOfSpadesDescription = threeOfSpades.simpleDescription()

Hajde da eksperimentišemo
Dodajte metodu u strukturu kartice koja kreira pun špil karata.

Instanca člana nabrajanja može imati svoje vrijednosti, a one mogu biti različite. Ove vrijednosti dodjeljujete kada instancirate enum (konstanta uspjeha u primjeru). Vezane i početne vrijednosti su različite stvari: početna vrijednost člana nabrajanja je uvijek konstantna u svim instancama nabrajanja i specificira se kada je deklarirana.

Razmotrimo primjer primanja vremena izlaska i zalaska sunca sa servera. Server odgovara bilo relevantnim informacijama ili porukom o grešci.

Enum ServerResponse ( case Result(String, String) case Error(String) ) let success = ServerResponse.Result("6:00 am", "8:09 pm") let fail = ServerResponse.Error("Nema sira." ) uspješno prebacivanje ( case let .Result(sunrise, sunset): let serverResponse = "Izlazak sunca je u \(izlazak sunca), a zalazak sunca u \(zalazak sunca)." case let .Error(error): let serverResponse = "Neuspjeh.. .\(greška)" )

Hajde da eksperimentišemo
Dodajte treću opciju naredbi za prebacivanje s više izbora

Obratite pažnju na to kako se vremena izlaska i zalaska sunca izvlače iz ServerResponse objekta.
Protokoli i ekstenzije.
Da biste deklarirali protokol, koristite ključnu riječ protokol.

Primjer protokolaProtokol ( var simpleDescription: String ( get ) mutirajuća funkcija prilagodi () )
Protokoli mogu biti podržani klasama, enumeracijama i strukturama.

Class SimpleClass: ExampleProtocol ( var simpleDescription: String = "Vrlo jednostavna klasa." var anotherProperty: Int = 69105 func adjust() ( simpleDescription += " Sada 100% prilagođen." ) ) var a = SimpleClass() a.adjust( neka bDescription = b.simpleDescription

Hajde da eksperimentišemo
Kreirajte enum koji će implementirati ovaj protokol.

Obratite pažnju na ključnu riječ mutating u definiciji SimpleStructure, koja govori kompajleru da odgovarajuća metoda modificira strukturu. Nasuprot tome, metode klase SimpleClass ne moraju biti označene kao mutirajuće, budući da je metode klase uvijek mogu promijeniti bez smetnji.

Da dodate nove metode ili članove klase postojećem tipu, morate koristiti ekstenzije. Također možete koristiti ekstenzije za implementaciju protokola s postojećim tipom, čak i ako je uvezen iz biblioteke ili okvira.

Extension Int: ExampleProtocol (var simpleDescription: String (vrati "The number \(self)") mutirajuća funkcija adjust() (self += 42) ) 7.simpleDescription

Hajde da eksperimentišemo
Kreirajte ekstenziju tipa Double s varijablom člana absoluteValue.

Možete koristiti ime protokola kao bilo koji drugi tip - na primjer, za kreiranje niza objekata različitih tipova, ali koji implementiraju zajednički protokol. Imajte na umu da kada radite s objektima ovog tipa, metode deklarirane izvan protokola neće biti dostupne.

Neka protocolValue: ExampleProtocol = a protocolValue.simpleDescription // protocolValue.anotherProperty // Dekomentirajte da vidite grešku
Iako je varijabla protocolValue tipa SimpleClass u vrijeme izvođenja, kompajler pretpostavlja da je njen tip ExampleProtocol. To znači da nećete moći slučajno pristupiti metodama ili članovima klase koji su implementirani izvan ExampleProtocol-a.

Generički tipovi
Da biste kreirali generički tip, stavite ime u uglaste zagrade (<>).

Func repeat (stavka: ItemType, times: Int) -> ItemType ( var rezultat = ItemType() za i u 0..puta ( rezultat += stavka ) vrati rezultat ) repeat("kucanje", 4)
Kreirajte generičke funkcije, klase, enumeracije i strukture.

// Ponovo implementira Swift standardnu ​​biblioteku opcionog tipa enum OptionalValue ( case None case Some(T) ) var possibleInteger: OptionalValue = .Nije mogućeInteger = .Some(100)
Ako želite specificirati specifične zahtjeve za generički tip, kao što je implementacija protokola ili zahtijevanje da naslijeđe od određene klase, koristite where .

Func anyCommonElements (lhs: T, rhs: U) -> Bool ( za lhsItem u lhs ( za rhsItem u rhs ( ako je lhsItem == rhsItem ( vrati true ) ) ) vrati false ) anyCommonElements(, )

Hajde da eksperimentišemo
Izmijenite funkciju anyCommonElements da vrati niz zajedničkih elemenata.

U jednostavnim slučajevima, možete izostaviti gdje i napisati naziv protokola ili klase iza dvotačke. Izraz je ekvivalentno izrazu .

Kao što je već nekoliko puta napomenuto, uključujući i , konferencija je bila odlična, iako na njoj nije predstavljen hardver. Sami softverski proizvodi su bili dovoljni. Koliko se konferencija svidjela javnosti govori i činjenica da se nakon nje nije dogodilo ništa uočljivo, tradicionalno za ovakve slučajeve.

I dok je mnogo od predstavljenog bilo prilično očekivano u javnosti, programski jezik se pokazao kao pravo iznenađenje. Uostalom, niko nije ni sumnjao da Apple radi u tom pravcu. Međutim, programski jezik nije iPad; razvoj ovog tipa malo zanima širu javnost. To znači da je održavanje tajnosti bilo mnogo lakše.

Najtajniji projekat

Zapravo, rad na Swiftu je počeo još 2010. godine, nakon predstavljanja iPada. Kompanija je željela stvoriti jednostavan, praktičan i funkcionalan alat koji bi programerima mogao učiniti život što lakšim.

Radovi su obavljeni u najstrožoj tajnosti. Štaviše, dosta dugo je samo jedna osoba radila na projektu - Chris Lattner, direktor odjela Developer Tools. Naravno, osoblje je naknadno moralo biti prošireno. Ali ipak, broj ovih ljudi nikada nije bio dovoljno velik. Malo ljudi je znalo za razvoj novog jezika, čak i unutar zidova samog Applea, iako se do 2013. smatrao najvažnijim projektom Developer Tools. Važno je napomenuti da je kompanija željela da gotov proizvod predstavi odmah, izbjegavajući sve vrste beta verzija. Stoga su radovi razvučeni do 2014. godine.

Ovdje bi bilo prikladno govoriti malo o samom Lattneru. U Apple je došao 2005. godine, a prije toga je radio u korist LLVM projekta na Univerzitetu Illinois, kao jedan od vodećih programera.

LLVM (Low Level Virtual Machine) je virtuelna mašina niskog nivoa, univerzalni sistem za transformaciju, optimizaciju i analizu programa. Projekat je započeo kao samostalan projekat, ali je kasnije dobio značajnu podršku izvana. Uključujući i sam Apple, koji je tada aktivno koristio LLVM u svojim projektima, uključujući OS X i iOS. Isti Metal je razvijen korištenjem ovog sistema.

LLVM se nije mogao izbjeći ni u slučaju Swifta. Koristeći ovaj sistem, jezik se kompajlira u mašinski kod koji je optimizovan da dobije maksimalnu korist pri korišćenju aplikacije na Apple tehnologiji.

Svojevremeno je prelazak Chrisa Lattnera u Apple bio više nego logičan korak. Ništa manje logična nije bila ni odluka da mu se povjeri razvoj novog jezika. Prerano je za konačnu presudu, ali izgleda da je odradio odličan posao.

Karakteristike Swifta

Zamisao najnovijeg razvoja, kompajlirani objektno orijentirani programski jezik Swift gradi na jezicima kao što su Objective-C i C, okupljajući najbolje od njih. Nema ograničenja u pogledu kompatibilnosti; jezici mogu savršeno koegzistirati u jednoj aplikaciji. Ovo posljednje je, inače, vrlo važno, jer već postoji ogroman broj programa napisanih u Objective-C.

Zanimljivo je da se nejasna ideja Swifta pojavila još u danima NeXT-a, kada je Objective-C tek počeo da se razvija. Tada se rodila ideja o stvaranju jezika koji bi proces programiranja mogao učiniti jednostavnijim i zabavnijim. Ali, kao što vidimo, za implementaciju ove ideje bilo je potrebno dosta vremena.

Zapravo, nije tako lako pronaći tu liniju kada je kod dovoljno jednostavan za kucanje, ali u isto vrijeme dovoljno čitljiv da programer treće strane razumije dijelove tuđeg programa bez komentara. Na primjer, program napisan u Pascalu je lako razumjeti, ali je kod predugačak. PERL vam omogućava da sve napišete u nekoliko redova, ali karakteriše ga izuzetno nečitljiv kod.

U međuvremenu, neki programeri koji su već isprobali Swift u praksi tvrde da je Apple uspio da se što više približi idealu, da pronađe onu zlatnu sredinu između čitljivosti i lakoće kucanja.

Kao što je odmah jasno iz naziva novog jezika ( "swift" - engleski. "brzo, brzo"), glavni naglasak prilikom njegovog stvaranja bio je na brzini. Posebno se navodi da će program u Swiftu raditi 1,3 puta brže u odnosu na sličan program napisan u Objective-C.

Takođe, prilikom razvoja Swifta, uzeti su u obzir tako važni parametri kao što su jednostavnost, sigurnost i fleksibilnost. Ovaj jezik eliminiše čitave klase nesigurnog koda i sposoban je za automatsko upravljanje memorijom. Swift eliminira samu mogućnost pravljenja brojnih grešaka koje su tako česte među programerima početnicima. Što se tiče jednostavnosti, to dobro potvrđuje činjenica da je u roku od 24 sata od trenutka, već na njoj.

Kreatori su uložili mnogo truda da Swift kod učine izražajnijim i lakšim za razumijevanje. Programer može odmah pratiti rezultate svoje kreativnosti gledajući pojedine dijelove koda u tzv. “interaktivna igrališta” (Interactive Playgrounds). Ako je potrebno dosta vremena za izvršavanje koda, tada možete pratiti proces na posebnoj liniji za povratne informacije koja se pojavljuje u tu svrhu. Nakon što je kod poboljšan i algoritam usavršen, programer ga jednostavno prebacuje u svoj projekat. Igrališta mogu biti korisna ne samo u smislu pojednostavljenja procesa razvoja, već i za izoštravanje vaših Swift vještina.

Tradicionalna aplikacija "Hello, World" izgleda ovako u Swiftu:

println("Zdravo, svijet")

A evo još jednog primjera jednostavnog koda:

neka jabuke = 3
neka narandže = 5
let appleSummary = "Imam \(jabuke) jabuke."
let fruitSummary = "Imam \(jabuke + narandže) komade voća."

Kritika Swifta

U međuvremenu, na internetu se pojavljuju i otvoreno negativna mišljenja o Swiftu. Postoji zabrinutost da je ovo ćorsokak razvojnog puta i da Swift nikada neće moći postati popularan. Uostalom, i prije toga postojalo je mnogo programskih jezika koji su stvoreni upravo s ciljem da olakšaju život programera i pojednostave proces učenja. I nijedan od njih nije se u potpunosti nosio sa zadacima koji su mu dodijeljeni. Sve što su njihovi kreatori uspjeli postići bilo je jednostavno povećanje ionako značajnog broja programskih jezika.

Postoje kritike na račun Appleovih postupaka, kojima bi "bilo bolje da razvija jezike poput Pythona ili Rubyja, umjesto da stvara još jedan." Takve riječi potkrepljuju mišljenje da ove alate već aktivno koriste programeri iz cijelog svijeta. Slučajno sam naišao i na mišljenje prema kojem Apple uzalud daje glavnu opkladu na brzinu. Kažu da na savremenim nivoima razvoja gvožđa to nije toliko važno.

No, ono što izaziva najveću iritaciju je činjenica (kao i uvijek u takvim slučajevima) da je Apple stvorio nešto samo za sebe, po svojim standardima i svojim principima. Štaviše, navodi se da iako se Swift ne razlikuje mnogo od mnogih drugih jezika, kompanija ponovo izjavljuje stvaranje fundamentalno novog proizvoda.

Umjesto pogovora

Appleu se može zamjeriti da je previše zatvoren i arogantan. Možete se diviti jednostavnosti Swifta i čistoći njegovog koda. Ali ostaje činjenica da je budućnost novog programskog jezika još uvijek nejasna. A moguća su dva scenarija razvoja.

Scenario jedan. Swift ostaje samo zanimljiv razvoj. Koristi se, ali ne previše aktivno, radije nastavlja rad sa dokazanim i poznatim Objective-C. Programeri za druge platforme uopće ne primjećuju pojavu novog jezika.

Scenario dva. Pristupi koji se koriste u Swiftu postaju norma u svijetu programiranja. Apple ponovo uspijeva utjecati na cijeli svijet mijenjajući norme koje su općenito prihvaćene među programerima. Ideja o "igralištima", zajedno sa transparentnošću koda novog jezika, mogla bi revolucionirati učenje programiranja. A to će nam omogućiti da potpuno preispitamo cijeli obrazovni proces i izazovemo pojavu nove generacije programera.

Inače, ne bih se iznenadio da za nekoliko godina, nakon što je Swift temeljno "polirao", dovodeći ga do savršenstva, Apple izjavi da namjerava potpuno napustiti Objective-C i osloniti se na novi jezik.

Koristim Apple tehnologiju od „klasične ere“, od 1995. godine. Tokom ovog perioda, video sam više od jedne iznenadne i značajne (i ponekad potpuno šokantne) „revolucije“ u razvoju kompanije. Koja, uprkos svemu, nije izgubila svoj šarm. Vjerujem da će tako biti i dalje.

Najbolji članci na ovu temu