Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Recenzii
  • Dezvoltare Cum se programează cu Swift. Efectuarea primei aplicații

Dezvoltare Cum se programează cu Swift. Efectuarea primei aplicații

Swift este limbajul de programare robust și intuitiv al Apple pe care îl puteți folosi pentru a crea aplicații pentru iOS, Mac, Apple TV și Apple Watch. Oferă dezvoltatorilor o libertate creativă fără precedent. Cu acest limbaj open source simplu, ușor de utilizat, tot ce aveți nevoie este o idee interesantă pentru a crea ceva incredibil.

Dezvoltatorii folosesc deja
caracteristici uimitoare ale Swift.

Swift este un limbaj de programare rapid, eficient, în timp real, care poate fi inserat cu ușurință în codul Objective-C pre-construit. Acum dezvoltatorii pot nu numai să scrie cod mai fiabil și mai sigur, ci și să economisească timp și să creeze aplicații cu capabilități avansate.

Aplicație grozavă în Swift. Ușurința de utilizare și capacitatea de răspuns în timp real este motivul pentru care VSCO a ales Swift pentru a crea o nouă versiune a aplicației foto iOS.

Aplicații excelente,
dezvoltat în limbajul Swift.

Din ce în ce mai mulți dezvoltatori încorporează codul Swift în aplicațiile lor. Și unii chiar creează aplicații complet noi în Swift.

Duolingo Khan
Ghid pentru cerul senin al Academiei

Procreează Kickstarter Eventbrite Hipmunk

Productivitatea este mai mare. Aplicațiile sunt mai bune.

Aplicațiile Swift depășesc așteptările. De exemplu, algoritmul de căutare obișnuit rulează mult mai rapid în Swift.

Până la 2.6 ori mai rapid decât Obiectivul-C

Până la 8.4 ori mai rapid decât Python 2.7

10.000 de numere întregi au fost găsite în grafic folosind algoritmul de căutare depth-first*

A fost adăugat un limbaj rapid
în curriculum.

Nu doar dezvoltatorii apreciază potențialul limbajului Swift. Universitățile și alte instituții de învățământ predau Swift la cursuri de programare și publică cursuri gratuite pe iTunes U, ceea ce înseamnă că chiar și începătorii pot trece cu ușurință de la codificare de bază la programare de nivel profesional.

Universități care au inclus Swift în curriculumul lor

  • Universitatea din California din Santa Cruz
  • Colegiul Foothill
  • Universitatea Regală de Tehnologie din Melbourne
  • Universitatea Tehnică din München
  • Colegiul Comunitar Lawson
  • Colegiul Comunitar din Manhattan
  • Colegiul Comunitar Mesa
  • Colegiul Comunitar din Houston
  • Colegiul Comunitar Central Piemont
  • Universitatea din Plymouth
  • Universitatea Politehnică de Stat din California
  • Universitatea Stanford
  • Colegiul Tehnic Northwest Kansas
  • Institutul Tehnologic din Monterrey
  • Universitatea Aberystwyth
  • Universitatea Full Sail
  • Scoala Ingesup
  • Universitatea Metodistă de Sud

Swift este peste tot.
Și acum este deschis tuturor.

Swift este disponibil gratuit pentru utilizare de către dezvoltatori, profesori și studenți sub licența de software open source Apache 2.0. Oferim sisteme binare OS X și Linux care vă permit să compilați cod pentru iOS, OS X, watchOS, tvOS și Linux. Și pentru a accelera dezvoltarea Swift într-un limbaj și mai puternic, am creat o nouă comunitate în care utilizatorii pot contribui direct la codul sursă Swift.

Faceți cunoștință cu Swift.

cartea principală

Descărcați tutorialul Limbajul de programare rapid din Apple Books Store gratuit. Aflați cum Swift face programarea mai convenabilă, mai flexibilă și mai distractivă.

Xcode

Xcode este o aplicație pentru Mac concepută pentru dezvoltarea altor aplicații pentru Mac și iOS. Xcode are toate instrumentele de care aveți nevoie pentru a crea aplicații uimitoare. Poate fi descărcat gratuit din Mac App Store.

Site-ul dezvoltatorului

Obțineți informații tehnice aprofundate și o prezentare completă a limbii Swift. Consultați blogul dezvoltatorului pentru cele mai recente știri. De asemenea, aveți acces gratuit la resurse excelente, cum ar fi tutoriale, videoclipuri și mostre de cod.

Dacă vă gândiți ce limbaj de programare să învățați, vă recomandăm să acordați atenție Swift și iată de ce.

1. Ce este Swift și de ce a fost numit așa?

Swift este un limbaj de programare puternic și intuitiv pentru macOS, iOS, watchOS și tvOS, dar diferă de Objective-C printr-o gamă mai largă de capabilități care au fost limitate la conexiuni cu C. În plus, Swift poate fi numit sigur, deoarece limbajul este puternic. tastat: în orice moment știi exact cu ce tip de obiect lucrezi. Principalul său avantaj este viteza: atât atunci când lucrați la un proiect, cât și când lansați o aplicație finalizată. Din acest avantaj față de alte limbi (conform creatorilor, a absorbit tot ce este mai bun din alte limbaje de programare) a fost numit Swift (tradus rapid).

2. Ce ar trebui să înveți, Objective-C sau Swift?

Această problemă a fost discutată pe scară largă de la introducerea Swift, dar ca și atunci, există mai multe argumente în favoarea studierii acesteia. Și Apple însuși a clarificat de mai multe ori că viitorul îi aparține lui Swift. În același timp, poate fi folosit în paralel cu Objective-C, astfel încât să nu existe probleme cu diferite versiuni. Din același motiv, mulți angajatori iau în serios faptul că cineva refuză să învețe Objective-C, crezând că Swift este încă destul de brut.

3. De ce este Swift mai rapid decât alte limbi? Poate că acest lucru nu este adevărat?

Apple se laudă că Swift este de până la 2,6 ori mai rapid decât Objective-C și de 8,4 ori mai rapid decât Python 2.7. Credem că întrebarea de ce trebuie să vă pese de execuția rapidă a codului nu se pune - și ar trebui să fie clar că un cod mai rapid funcționează mai eficient și mai lin, ceea ce permite utilizatorului să se bucure de interacțiunea cu dispozitivul.

4. Am auzit că învățarea Swift este foarte ușoară. E chiar asa?

Putem spune că acest lucru este adevărat. Swift a fost proiectat pentru a le permite celor care încep cu programare să înceapă să-și creeze propriile aplicații, făcând incredibil de ușor să învețe să codifice. Apple compară creația sa cu un limbaj de scripting, iar programatorii îl compară cu BASIC.

5. Deci pot să scriu o aplicație și să o încarc aproape imediat în App Store?

6. Deoarece totul este atât de simplu, cât de repede voi deveni profesionist?

În general, aceasta este o problemă controversată. Swift se îmbunătățește constant, așa că numai creatorii săi sunt adevărații experți. Chiar dacă ai creat mai multe aplicații grozave și ai stăpânit o serie de cursuri și tutoriale avansate, tot nu vei fi unul dintre cei mai buni, motiv pentru care în interviuri ei spun că se îmbunătățesc constant și nu au atins perfecțiunea prin acest punct).

Oricum, odată ce te-ai jucat cu Swift și te-ai simțit, ti-ai dat seama dacă îți place sau nu și ai început să lucrezi la proiecte reale, atunci poți spune că cel puțin vrei să devii un profesionist. În general, totul depinde de tine.

7. Totuși, de ce a fost necesar să se creeze o limbă nouă dacă cea veche funcționa?

Objective-C a fost odată principalul limbaj de programare al Apple pentru scrierea de aplicații, datând din zilele OS X. Dar de-a lungul timpului, limbajele și practicile de programare s-au schimbat foarte mult, în special în domeniul dezvoltării mobile. În loc să perfecționeze vechiul, Apple a decis să meargă pe o altă cale și să schimbe modul în care lucrează dezvoltatorii, făcând procesul mai interactiv.

8. Cum rămâne cu faptul că Swift nu este încă pe deplin dezvoltat?

Ei bine, nu este un fapt că Apple va termina dezvoltarea Swift în următorii ani, pentru că asta ar însemna să-l ucidă. Aici, ca în orice limbă nouă, există posibilitatea de erori. Dar totul este actualizat în mod constant, deoarece este în interesul Apple însuși. Apropo, Google se gândește deja la posibilitatea de a lansa aplicații Swift pe Apple, așa că mai are mult de parcurs.

9. Am studiat odată limbaje de programare. Cum este acest limbaj?

Cel mai probabil în Ruby sau Python. Deși puteți învăța și sintaxa din C aici.

10. Am auzit ceva despre cacao. Mai mult?

Cocoa și Cocoa Touch sunt cadre care rulează pe OS X și respectiv iOS. Ambele sunt implementate în principal cu Objective-C și integrate cu Xcode (dacă nu știți deja, este un mediu de dezvoltare). Acestea constau din biblioteci, API-uri și runtime. Deoarece Swift este un limbaj de dezvoltare iOS, funcționează și cu Cocoa și Cocoa Touch. Dacă este interesant,

Swift este un limbaj de programare incredibil de puternic și simplu, introdus de Apple în 2014, care deschide ușa multor programatori pentru a crea aplicații pentru iOS, macOS, Apple TV și Apple Watch. Acest limbaj a moștenit idei de la Objective-C, Rust, Haskell, Ruby, Python, C# și CLU. Folosește modele de programare sigure și conține noi funcții pentru a face programarea distractivă și interesantă. Creat de Chris Lattner, este un limbaj robust, rapid și deschis, care face și mai ușoară crearea de aplicații pentru cel mai popular telefon din lume.

Swift este un limbaj de programare modern cu o versiune de lansare stabilă, care este destul de ușor de învățat, chiar dacă considerați că este prima dvs. limbă. Previne o mulțime de erori în etapa de compilare, accelerează procesul de dezvoltare și îmbunătățește calitatea codului.

Filosofie rapidă

Filosofia principală a limbii este simplitatea, viteza și securitatea. Pragul de intrare s-a schimbat semnificativ în comparație cu Obiectivul C - chiar și fără a cunoaște alte limbaje de programare sau elemente de bază, puteți începe în siguranță să învățați limba.

Apple a simplificat pe cât posibil limbajul pentru dezvoltatori: sintaxa a devenit mai curată, ceea ce crește lizibilitatea codului atât pentru programatorii experimentați, cât și pentru cei începători. Cantitatea totală de cod a scăzut, rezultând o productivitate crescută. Toate metodele care au fost folosite în Obiectivul C au fost complet reproiectate, regândite și rescrise. Swift este în mod constant dezvoltat și actualizat, ceea ce indică fiabilitatea și concentrarea sa pe viitor.

Unde se folosește Swift?

Dezvoltatorii folosesc acest limbaj de programare pentru a scrie aplicații mobile pentru telefoanele Apple, ceasurile inteligente și computerele. A existat chiar și un zvon că Google vrea să transfere Android complet pe Swift, orice se poate întâmpla. Acesta este un limbaj universal care poate fi folosit în orice platformă de la compania Cupertino.

Important, în toamna lui 2016, Apple a facilitat deschiderea unui centru de învățare pentru studenți, unde oricine poate învăța cum să programeze aplicații iOS. Dar asta nu este tot; în state, Swift este deja inclus în curriculum-ul multor instituții de învățământ de top. Acest limbaj de programare are un potențial uriaș.

Dificultate rapidă de învățare

Swift este un limbaj sigur care vă va proteja de majoritatea greșelilor din procesul de programare. Vă va spune unde este eroarea și de ce programul nu se compila. Dar, pe de altă parte, aici există o tastare strictă. Limbajul Apple este neiertător.

În prezent, există puțină documentație disponibilă în comparație cu alte limbi. Dar acest lucru se poate explica prin faptul că limbajul a fost lansat recent și a devenit un proiect Open Source, deoarece la momentul lansării putea fi folosit doar de acei dezvoltatori care aveau un abonament activ la Apple Developer Program.

Chiar și mai devreme s-ar putea spune că Swift nu este foarte popular și există un număr mic de biblioteci și extensii de la terți, dar acum nu este complet cazul. Există zeci de soluții excelente de la dezvoltatori terți pe GitHub și pe Internet care vă vor ajuta la îmbunătățirea proiectului.

Avantajele/dezavantajele lui Swift

Acest limbaj de programare modern și puternic are o serie de avantaje care îl deosebesc de altele sau de același Objective-C. Și acestea sunt noi caracteristici de limbaj puternice, tastare de date extrem de strictă, sintaxă mai concisă, performanță semnificativ mai mare în operațiunile de acces la colecții (sortare și căutare), suport pentru o anumită majoritate a constructelor sintactice moderne existente în alte limbaje de programare de nivel înalt. Și una dintre principalele caracteristici ale Swift este că este complet compatibil cu Objective-C. Astfel, acest lucru vă permite să rescrieți treptat proiecte dintr-o limbă în alta și, de asemenea, face posibilă utilizarea funcționalității Objective-C în Swift în sine.

Unul dintre lucrurile frumoase este Playground - acesta este un fel de sandbox interactiv în care un dezvoltator poate scrie cod și poate vedea imediat rezultatul muncii sale. Acest lucru vă permite să creșteți viteza de scriere a proiectului principal de mai multe ori, deoarece scrierea unor bucăți individuale de cod sau algoritmi poate fi acum efectuată în terenul de joacă cu feedback vizual, fără riscul de a face greșeli în proiectul principal.

Apple a reluat o mulțime de lucruri, oferindu-ne un sistem avansat de enumerare practic nou, o gestionare eficientă a accesoriilor și o colectare automată a gunoiului optimizată.

Partea întunecată a limbii este popularitatea sa scăzută și prevalența scăzută. Majoritatea proiectelor actuale sunt scrise în Objective-C și vor trebui menținute, iar multe companii nu își rescriu proiectele mari pur și simplu pentru că este un proces uriaș și incredibil de consumator de timp.

Tehnologii înrudite

Apple a făcut tranziția de la utilizarea bibliotecilor statice la cele dinamice și a adăugat această funcționalitate limbajului său de programare, ceea ce înseamnă că evoluează mai rapid decât iOS însuși. Acum dezvoltatorii își pot prezenta cu ușurință aplicația împreună cu bibliotecile pe care le-au scris. Anterior, trebuia să așteptați o nouă lansare iOS, dar acum situația s-a schimbat. Bibliotecile dinamice oferă posibilitatea de a face îmbunătățiri și modificări codului dvs. mai flexibile decât oricând.

Swift este un limbaj mai funcțional și mai accesibil care, la fel ca Objective-C, acceptă cadrele oficiale Cocoa și Cocoa Touch. Există multe proiecte open source disponibile pe Internet, inclusiv de la companii mari precum Airbnb, care vă permit să utilizați toate metodele și soluțiile moderne atunci când scrieți cod.

miden16 10 iunie 2014 la 13:06

Limbajul de programare rapid. Versiunea rusă

  • Dezvoltare pentru iOS,
  • Rapid

Bună, Habr! Pe 2 iunie, cu toții am putut vedea cu ochii noștri cum Apple a început să creeze o revoluție în tabăra dezvoltatorilor Objective-C, prezentând lumii noul său limbaj de programare - Swift. Totodată, ea a pus la dispoziția publicului o mică documentație despre limbă, pe care am decis să o traducem dacă va fi cerere. Vă prezentăm atenției o traducere a primului capitol. Dacă subiectul este interesant, vom continua să publicăm traducerea în fiecare săptămână.

Ghid de limbă
Cele elementare
Operatori de bază
Șiruri și caractere
Tipuri de colecție
Controlul fluxului
Funcții
Închideri
Enumerări
Clase și Structuri
Proprietăți
Metode
Indicele
Moştenire
Inițializare
Deinițializarea
Numărarea automată a referințelor
Înlănțuire opțională
Tip Casting
Tipuri imbricate
Extensii
Protocoale
generice
Operatori avansati

Limbă de referință
Despre limbajul de referință
Structura lexicală
Tipuri
Expresii
Declarații
Declarații
Atribute
Modele
Parametri și argumente generice
Rezumatul Gramaticei
Mărci comerciale

Bun venit la Swift

Despre limba Swift
Swift este un nou limbaj de programare pentru dezvoltarea de aplicații iOS și OS X care combină cele mai bune dintre C și Objective-C, dar fără restricțiile impuse de dragul compatibilității cu C. Swift utilizează modele de programare sigure și adaugă caracteristici moderne care fac crearea unui aplicare într-un proces mai simplu, mai flexibil și mai distractiv. Creat de la zero de noi, Swift este o oportunitate de a reimagina modul în care sunt dezvoltate aplicațiile.

Swift este în dezvoltare de câțiva ani. Baza noului limbaj de programare a fost compilatorul, depanatorul și cadrele existente. Am simplificat gestionarea memoriei cu contorizarea automată a referințelor (ARC). Cadrele noastre au suferit, de asemenea, o modernizare majoră. Objective-C a început să susțină blocuri, literale și module - toate acestea au creat condiții favorabile pentru introducerea tehnologiilor moderne. Această lucrare pregătitoare a servit drept fundație pentru un nou limbaj de programare care va fi folosit pentru a dezvolta viitoare produse software pentru Apple.

Dezvoltatorii Objective-C vor găsi Swift familiar. Combină lizibilitatea parametrilor numiți cu puterea modelului de obiect dinamic al Objective-C. Deschide cadrele existente Cocoa și este compatibil cu codul scris în Objective-C. Construit pe această bază comună, limbajul oferă multe caracteristici noi și unifică aspectele procedurale și orientate pe obiecte ale limbajului de programare.

Nici Swift nu va speria programatorii începători. Este primul limbaj de programare puternic care este la fel de intuitiv și distractiv ca un limbaj de scripting. Acceptă așa-numitele locuri de joacă, care permit programatorilor să experimenteze cu codul, văzând rezultatul în timp real fără a fi nevoiți să compileze și să ruleze aplicația.

Swift încorporează cele mai bune limbi moderne și este dezvoltat ținând cont de experiența vastă a Apple. Compilatorul nostru este sinonim cu performanța, iar limbajul nostru este optimizat pentru dezvoltare fără compromisuri. Este conceput astfel încât să puteți dezvolta cu ușurință prima aplicație „bună ziua, lume!” și chiar un întreg sistem de operare. Toate acestea fac din Swift un instrument important pentru dezvoltatori și pentru Apple însuși.

Swift este o nouă modalitate fantastică de a crea aplicații pentru iOS și OS X și vom continua să o dezvoltăm adăugând noi funcționalități și introducând noi funcții. Scopul nostru este ambițios. Și abia așteptăm să vedem ce poți crea cu el.

Introducere în Swift
Conform unei tradiții de lungă durată, primul program într-o limbă nouă ar trebui să afișeze pe ecran cuvintele „Bună ziua, lume”. Cu Swift se procedează astfel:

Println(„Bună ziua, lume”)
Dacă ați dezvoltat vreodată în C sau Objective-C, această sintaxă ar trebui să vi se pară ciudat de familiară - în Swift, această linie de cod este un program complet. Nu mai trebuie să importați biblioteci separate pentru a oferi funcționalități de bază, cum ar fi I/O console sau manipularea șirurilor. Codul scris în domeniul global este punctul de intrare în program, astfel încât funcția principală nu mai este necesară. De asemenea, rețineți că nu există punct și virgulă la sfârșitul fiecărei linii.

Această introducere oferă suficiente informații pentru a începe să codificați în Swift. Nu vă faceți griji dacă nu înțelegeți ceva - vă vom explica totul în detaliu în capitolele următoare.

cometariu
Pentru o mai bună înțelegere a materialului, vă recomandăm să folosiți modul loc de joacă în Xcode. Playground vă permite să vedeți rezultatele imediat pe măsură ce editați codul, fără a fi nevoie să compilați și să rulați aplicația.
Tipuri de date simple
Utilizați let pentru a crea o constantă și var pentru a crea o variabilă. Nu este necesar să fie specificat tipul constantei; îi puteți atribui o valoare o singură dată.

Var myVariable = 42 myVariable = 50 las myConstant = 42
Tipurile unei constante și ale unei variabile trebuie să se potrivească cu tipurile valorilor corespunzătoare care le sunt atribuite. Cu toate acestea, acest lucru nu înseamnă că trebuie să specificați direct tipul lor. Compilatorul va determina automat tipul de constantă și variabilă atunci când le atribuie o valoare. Deci, în exemplul de mai sus, compilatorul va determina că myVariable este un tip întreg.

Dacă inițializatorul lipsește sau nu oferă suficiente informații, puteți specifica singur tipul după variabilă, separând numele și tipul cu două puncte:

Fie implicitInteger = 70 let inplicitDouble = 70.0 let inplicitDouble: Double = 70

Să experimentăm
Creați o constantă cu tipul Float și inițializați-o cu numărul 4.

Valorile nu sunt niciodată convertite implicit într-un alt tip. Dacă trebuie să convertiți o valoare într-un alt tip, faceți-o în mod explicit:
let label = "Lățimea este " let width = 94 let widthLabel = etichetă + String(lățime)
Să experimentăm
Încercați să eliminați conversia explicită în String din ultima linie. Ce eroare vei primi?

O modalitate mai ușoară de a include valori în șiruri este de a include expresia în paranteze și de a le preceda cu o bară oblică inversă (\). Exemplu:

Let apples = 3 let portocale = 5 let appleSummary = "Am \(mere) mere." let fruitSummary = "Am \(mere + portocale) bucăți de fructe."

Să experimentăm
Încercați să utilizați construcția \() și să imprimați un șir care include rezultatul sumei a două variabile întregi și numele cuiva.

Când lucrați cu matrice și matrice asociative (dicționare), se folosesc paranteze drepte ():

Var shoppingList = ["somn", "apă", "lalele", "vopsea albastră"] shoppingList = "sticlă de apă" var ocupations = [ "Malcolm": "Căpitan", "Kaylee": "Mecanic", ] ocupații ["Jayne"] = "Relații publice"
Pentru a crea o matrice sau un dicționar gol, utilizați următoarea sintaxă:

Let emptyArray = String() let emptyDictionary = Dicţionar ()
Pentru a crea matrice și dicționare goale, utilizați și respectiv [:] - de exemplu, când atribuiți o nouă valoare unei variabile sau treceți un argument unei funcții.

ShoppingList = // A fost la cumpărături și a cumpărat totul.

Condiții și cicluri
Instrucțiunile If și switch sunt folosite pentru a crea condiții, iar instrucțiunile for-in, for, while și do-while sunt folosite pentru a crea bucle. În acest caz, nu este necesară evidențierea condițiilor și inițializarea expresiilor cu paranteze, în timp ce sunt necesare acolade.

Fiți individualScores = var teamScore = 0 pentru scor în individualScores ( dacă scor > 50 ( teamScore += 3 ) else ( teamScore += 1 ) ) teamScore
Condiția din interiorul instrucțiunii if trebuie să fie booleană, ceea ce înseamnă în mod specific că instrucțiunea if score (...) este o eroare deoarece nu există o comparație explicită (de exemplu, cu zero).

Declarația if poate fi utilizată împreună cu let și var pentru a lucra cu constante și variabile care pot avea o valoare zero. Astfel de constante și variabile sunt numite opționale (adică pot lua orice valoare sau pot fi egale cu zero). Pentru a crea o variabilă sau o constantă opțională, adăugați un semn de întrebare (?) după tip.

Var optionalString: String? = „Salut” optionalString == nil var optionalName: String? = "John Appleseed" var salut = "Bună ziua!" if let name = optionalName ( salut = "Bună ziua, \(nume)" )

Să experimentăm
Schimbați opționalName în nil . Ce vezi pe ecran? Adăugați un bloc else pentru a gestiona cazul în care optionalName este nil .

Dacă valoarea opțională este nil , condiția va fi falsă, iar codul din acolade după if nu va fi executat. În caz contrar, variabilei de salut i se va atribui o nouă valoare.

Comutatorul cu opțiuni multiple acceptă mulți alți operatori de comparație în sine și nu se limitează la comparații simple:

Let vegetable = "ardei roșu" comutați legume ( case "telina": let vegetableComment = "Adăugați niște stafide și faceți furnici pe un buștean." case "castraveți", "cresturel": let vegetableComment = "Asta ar fi un sandwich bun cu ceai ." case let x where x.hasSuffix("piper"): let vegetableComment = "Este un \(x) picant?" implicit: let vegetableComment = "Totul are gust bun în supă." )

Să experimentăm
Încercați să eliminați condiția implicită. Ce eroare vei primi?

După executarea blocului de cod corespunzător, programul părăsește instrucțiunea switch fără a verifica condițiile ulterioare. În acest fel, nu trebuie să adăugați manual instrucțiuni break la sfârșitul fiecărui bloc de caz.

Pentru a itera elementele unui tablou asociativ, utilizați instrucțiunea for-in împreună cu specificarea unei perechi de nume pentru fiecare pereche cheie-valoare.

Fie interestingNumbers = [ "Prime": , "Fibonacci": , "Square": , ] var cel mai mare = 0 pentru (tip, numere) în InteresingNumbers ( pentru numărul în numere ( dacă număr > cel mai mare ( cel mai mare = număr ) ) ) cel mai mare

Să experimentăm
Adăugați o altă variabilă care vă va permite să aflați care dintre cele trei tipuri este numărul maxim găsit.

Instrucțiunea while loop vă permite să executați un bloc de cod în cadrul acestuia până când condiția devine falsă. Condiția poate fi specificată și după bloc, care în acest caz va fi executată cel puțin o dată.

Var n = 2 în timp ce n< 100 { n = n * 2 } n var m = 2 do { m = m * 2 } while m < 100 m
Instrucțiunea for poate fi folosită pentru a itera pe o secvență de numere folosind două puncte (..) sau folosind un inițializator, o condiție și un increment. Uite, aceste două bucle fac același lucru:

Var firstForLoop = 0 pentru i în 0..3 ( firstForLoop += i ) firstForLoop var secondForLoop = 0 pentru var i = 0; i< 3; ++i { secondForLoop += 1 } secondForLoop
Când creați o buclă, utilizați două puncte (..) dacă nu doriți să includeți valoarea mai mare în interval și trei puncte (...) pentru a include atât valorile mai mici, cât și cele mai mari.

Funcții și închideri.
Pentru a declara funcții, utilizați cuvântul cheie func. O funcție este apelată prin specificarea numelui și a unei liste de argumente între paranteze. Tipul returnat trebuie separat de lista formală de argumente folosind -> .

Func greet(nume: String, day: String) -> String ( returnează "Bună ziua \(nume), astăzi este \(ziua)." ) greet("Bob", "Marți")

Să experimentăm
Eliminați parametrul zi. În schimb, adăugați o variabilă care indică numele felului de mâncare servit la prânz.

Dacă o funcție returnează mai multe valori, ar trebui să utilizați un tuplu:

Func. getGasPrices() -> (dublu, dublu, dublu) ( return (3,59, 3,69, 3,79) ) getGasPrices()
Funcțiile pot avea, de asemenea, un număr nedefinit de argumente:

Func sumOf(numbers: Int...) -> Int ( var sum = 0 pentru numărul în numere ( sum += number ) return sum ) sumOf() sumOf(42, 597, 12)

Să experimentăm
Scrieți o funcție care vă permite să găsiți media aritmetică a unui număr arbitrar al argumentelor sale.

Funcțiile pot fi imbricate unele în altele. O funcție imbricată poate accesa variabilele declarate în funcția exterioară. Utilizați funcții imbricate pentru a aranja codul unei funcții complexe sau mari.

Func returnFifteen() -> Int ( var y = 10 func add() ( y += 5 ) add() return y ) returnFifteen()
Funcțiile sunt obiecte din prima clasă (tip de primă clasă), cu alte cuvinte, o funcție poate returna o altă funcție ca rezultat.

Func makeIncrementer() -> (Int -> Int) ( func addOne(number: Int) -> Int ( return 1 + number ) return addOne ) var increment = makeIncrementer() increment(7)
O funcție poate lua, de asemenea, o altă funcție ca unul dintre argumentele sale.

Func hasAnyMatches(listă: Int, condiție: Int -> Bool) -> Bool (pentru elementul din listă (dacă condiția (articolul) ( returnează adevărat ) ) returnează fals ) func lessThanTen (număr: Int) -> Bool ( returnează numărul< 10 } var numbers = hasAnyMatches(numbers, lessThanTen)
Funcțiile sunt un caz special de închidere. Puteți crea o închidere fără a specifica un nume și înconjurând corpul închiderii cu acolade (()). Pentru a separa argumentele și tipul de returnare din corpul închiderii, utilizați operatorul in.

Numbers.map(( (număr: Int) -> Int în let rezultat = 3 * număr returnează rezultat ))

Să experimentăm
Rescrieți închiderea astfel încât să returneze zero pentru toate numerele suplimentare.

Există mai multe tehnici pentru a face închiderile mai concise. Dacă tipul de închidere este cunoscut a priori (de exemplu, este un apel invers al unui delegat), puteți omite specificarea tipului parametrilor săi și/sau tipul valorii returnate. Închiderile constând dintr-o singură expresie returnează implicit rezultatul acelei expresii.

Numbers.map(( număr în 3 * număr ))
Într-o închidere, în loc să specificați un nume de variabilă, puteți utiliza numărul său ordinal - acest lucru este util în special atunci când scrieți scurtcircuite. Închiderea, care este ultimul argument al funcției, îi poate fi transmisă imediat după paranteze cu lista parametrilor rămași.

Sortare() ($0 > $1)

Obiecte și clase
Pentru a crea o clasă, utilizați clasa de cuvinte rezervată. Membrii clasei sunt declarați în același mod ca constantele și variabilele obișnuite. Mai mult, metodele de clasă sunt declarate ca funcții obișnuite.

Forma clasei ( var numberOfSides = 0 func simpleDescription() ->

Să experimentăm
Adăugați o constantă de membru de clasă și o metodă de clasă care o ia drept argument.

Pentru a crea o instanță (obiect) a unei clase, trebuie doar să adăugați paranteze după numele clasei. Metodele și membrii clasei sunt accesați printr-un punct.

Var shape = Shape() shape.numberOfSides = 7 var shapeDescription = shape.simpleDescription()
În acest exemplu, am omis un detaliu important - constructorul clasei, metoda init.

Clasa NamedShape ( var numberOfSides: Int = 0 var name: String init(name: String) ( self.name = name ) func simpleDescription() -> String ( returnează „O formă cu \(numberOfSides) laturi.” ) )
Observați cum membrul clasei nume este separat de argumentul constructorului de nume de către sine. Argumentele sunt transmise constructorului în mod normal, ca la orice altă metodă de clasă. Rețineți că fiecare membru al clasei trebuie să fie inițializat, fie atunci când este declarat (cum ar fi numberOfSides), fie în constructor (cum ar fi numele).

Destructorul de clasă este metoda deinit, care poate fi suprascrisă dacă este necesar.

Pentru a moșteni o clasă dintr-o clasă existentă, după ce ați specificat numele clasei copil, adăugați două puncte și indicați numele clasei părinte. În Swift, nu există restricții privind moștenirea obligatorie a oricărei clase standard.

Metodele suprascrise de o clasă copil trebuie să fie marcate cu cuvântul cheie override - suprascrierea metodelor fără override va duce la o eroare. Compilatorul detectează, de asemenea, metodele care sunt marcate ca suprascrie, dar nu înlocuiesc nicio metodă din clasa lor părinte.
class Square: NamedShape ( var sideLength: Double init(sideLength: Double, nume: String) ( self.sideLength = sideLength super.init(name: name) numberOfSides = 4 ) func area() -> Double ( return sideLength * sideLength ) override func simpleDescription() -> String ( return "Un pătrat cu laturile lungimii \(sideLength)." ) ) let test = Square(sideLength: 5.2, nume: "pătratul meu de testare") test.area() test.simpleDescription ()

Să experimentăm
Creați o clasă Circle și moșteniți din clasa NamedShape. Constructorul clasei Circle are două argumente: rază și nume. Ignorați zona și descrieți metodele acestei clase.

Membrii clasei pot avea, de asemenea, propriul lor getter și setter.

Clasa Triunghi Echilateral: NamedShape ( var sideLength: Double = 0.0 init(sideLength: Double, nume: String) ( self.sideLength = sideLength super.init(name: name) numberOfSides = 3 ) var perimetru: Double ( get ( return 3.0 * sideLength ) ) set ( sideLength = newValue / 3.0 ) ) override func simpleDescription() -> String ( return "Un triunghi echilateral cu laturile de lungime \(sideLength)." ) ) var triunghi = EquilateralTriangle(sideLength: 3.1, nume: "un triunghi ") triunghi.perimetru triunghi.perimetru = 9,9 triunghi.laturaLungime
În setatorul variabilei perimetru, noua valoare atribuită se numește implicit newValue . Puteți schimba numele acestei variabile punând-o în paranteze imediat după set .

Observați structura constructorului clasei EquilateralTriangle. Această metodă include trei pași succesivi:

  1. inițializarea membrilor unei clase de copii;
  2. apelarea constructorului clasei părinte;
  3. modificarea valorilor membrilor clasei părinte.
Dacă trebuie să executați un anumit cod înainte sau după alocarea unei noi valori unei variabile, puteți suprascrie metodele willSet și didSet pentru a se potrivi nevoilor dumneavoastră. De exemplu, clasa de mai jos garantează că lungimea laturii unui triunghi va fi întotdeauna egală cu lungimea laturii unui pătrat.

Clasa TriunghiAndPătrat ( var triunghi: EquilateralTriangle ( willSet ( square.sideLength = newValue.sideLength ) ) var square: Square ( willSet ( triangle.sideLength = newValue.sideLength ) ) init(size: Double, nume: String) ( square = Square( sideLength: size, name: name) triangle = EquilateralTriangle(sideLength: size, name: name) ) var triangleAndSquare = TriangleAndSquare(size: 10, name: "other test shape") triangleAndSquare.square.sideLength triangleAndSquare.triangle.sideLength triangle.AndSquare pătrat = Square(sideLength: 50, nume: „pătrat mai mare”) triangleAndSquare.triangle.sideLength
Metodele de clasă au o diferență importantă față de funcții. Numele argumentelor unei funcții sunt folosite numai în cadrul acelei funcție, în timp ce într-o metodă de clasă, parametrii sunt utilizați și la apelarea acelei metode (cu excepția primului parametru). În mod implicit, o metodă de clasă are aceleași nume de parametri atât atunci când este apelată, cât și în ea însăși. Cu toate acestea, puteți specifica un nume diferit (în exemplul de mai jos - ori), care va fi folosit numai în cadrul acestei metode. În acest caz, pentru a apela această metodă, trebuie să utilizați prenumele (numberOfTimes).

Class Counter ( var count: Int = 0 func incrementBy(amount: Int, numberOfTimes ori: Int) (count += amount * times ) ) var counter = Counter() counter.incrementBy(2, numberOfTimes: 7)
Când lucrați cu valori opționale, adăugați un semn de întrebare (?) înaintea metodelor, a membrilor clasei etc. Dacă valoarea de dinaintea semnului de întrebare este zero, orice după semnul (?) este ignorat și întreaga expresie este zero. În caz contrar, expresia este evaluată ca de obicei. În ambele cazuri, întreaga expresie va avea ca rezultat o valoare opțională.

Lăsați opționalSquare: Square? = Square(sideLength: 2,5, nume: "opțional pătrat") let sideLength = optionalSquare?.sideLength

Enumerări și Structuri
Cuvântul cheie enum este folosit pentru a crea enumerări. Rețineți că enumerările pot conține și metode.

Enum Rank: Int (case As = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String ( switch self (case .Ace: return " ace" case .Jack: returnează "jack" case .Queen: return "queen" case .King: return "king" implicit: return String(self.toRaw()) ) ) ) let ace = Rank.Ace let aceRawValue = as .toRaw()

Să experimentăm
Scrieți o funcție care compară 2 enumerari de rang pe baza valorilor lor.

În exemplul de mai sus, elementele enumerate sunt inițial de tip întreg și trebuie doar să specificați valoarea primului element - valorile elementelor rămase vor fi determinate în funcție de ordinea în care apar. De asemenea, puteți alege șir sau tipuri reale ca valoare brută a valorilor elementului.

Pentru a converti tipul de valoare original într-un tip de enumerare, utilizați funcțiile toRaw și fromRaw.

Dacă lăsați convertedRank = Rank.fromRaw(3) ( lăsați threeDescription = convertedRank.simpleDescription() )
Rețineți că valorile elementelor de enumerare sunt reale și nu doar o altă reprezentare a valorilor lor originale. În general, nu trebuie să specificați valorile lor originale.

Enum Suit ( case Spades, Hearts, Diamonds, Clubs func simpleDescription() -> String ( switch self ( case .Spades: return "spades" case .Hearts: return "hearts" case .Diamonds: return "diamonds" case .Clubs: returnează „cluburi” ) ) ) let hearts = Costum.Hearts let heartsDescription = hearts.simpleDescription()

Să experimentăm
Adăugați o metodă Color care returnează șirul „negru” pentru Spades și Trece și „roșu” pentru Hearts and Diamonds.

Observați cum este accesat membrul Hearts din enumerarea Suit. Când atribuiți o valoare constantei inimi, se folosește numele complet Suit.Hearts deoarece nu specificăm în mod explicit tipul constantei. Iar în switch folosim forma scurtă .Hearts deoarece tipul valorii de sine este cunoscut a priori. Puteți utiliza formularul scurt atâta timp cât tipul variabilei este specificat în mod explicit.

Cuvântul cheie struct este folosit pentru a crea structuri. Structurile au multe asemănări cu clasele, inclusiv metode și constructori. Una dintre cele mai semnificative diferențe dintre structuri și clase este că instanțele de structuri, spre deosebire de instanțele de clase, sunt transmise funcțiilor prin valoare (adică, copia lor locală este creată mai întâi), în timp ce instanțele de clase sunt transmise prin referință.

Struct Card ( var rank: Rank var suit: Suit func simpleDescription() -> String ( return "The \(rank.simpleDescription()) of \(suit.simpleDescription())" ) ) let threeOfSpades = Card(rank: . Trei, costum: .Spades) let threeOfSpadesDescription = threeOfSpades.simpleDescription()

Să experimentăm
Adăugați o metodă la structura Cărților care creează un pachet complet de cărți.

O instanță de membru de enumerare poate avea propriile valori și pot fi diferite. Atribuiți aceste valori atunci când instanțiați enumerarea (constanta de succes din exemplu). Valorile legate și inițiale sunt lucruri diferite: valoarea inițială a unui membru al enumerației este întotdeauna constantă în toate instanțele enumerației și este specificată atunci când este declarată.

Să luăm în considerare un exemplu de primire a orelor de răsărit și apus de la un server. Serverul răspunde fie cu informații relevante, fie cu un mesaj de eroare.

Enum ServerResponse ( case Result(String, String) case Error(String) ) let success = ServerResponse.Result("6:00 am", "8:09 pm") let failure = ServerResponse.Error("Out of cheese." ) switch success ( case let .Result(sunrise, sunset): let serverResponse = "Răsăritul este la \(răsăritul) și apusul este la \(apusul)." case let .Eroare (eroare): let serverResponse = "Eșec.. .\(eroare)" )

Să experimentăm
Adăugați o a treia opțiune la o declarație switch cu alegere multiplă

Observați cum orele răsăritului și apusului sunt extrase din obiectul ServerResponse.
Protocoale și extensii.
Pentru a declara un protocol, utilizați cuvântul cheie protocol.

Protocol ExempluProtocol ( var simpleDescription: String ( get ) mutating func adjust() )
Protocoalele pot fi susținute de clase, enumerări și structuri.

Clasa SimpleClass: ExampleProtocol ( var simpleDescription: String = "O clasă foarte simplă." var anotherProperty: Int = 69105 func adjust() ( simpleDescription += " Acum 100% ajustat." ) ) var a = SimpleClass() a.adjust( ) let aDescription = a.simpleDescription struct SimpleStructure: ExampleProtocol ( var simpleDescription: String = "O structură simplă" mutating func adjust() ( simpleDescription += " (ajustat)" ) ) var b = SimpleStructure() b.adjust() let bDescription = b.simpleDescription

Să experimentăm
Creați o enumerare care va implementa acest protocol.

Observați cuvântul cheie mutant din definiția SimpleStructure, care spune compilatorului că metoda corespunzătoare modifică structura. În schimb, metodele clasei SimpleClass nu trebuie să fie marcate ca mutante, deoarece metodele clasei o pot schimba întotdeauna fără interferențe.

Pentru a adăuga noi metode sau membri de clasă la un tip existent, trebuie să utilizați extensii. De asemenea, puteți utiliza extensii pentru a implementa un protocol cu ​​un tip existent, chiar dacă este importat dintr-o bibliotecă sau cadru.

Extensie Int: ExampleProtocol ( var simpleDescription: String ( return "The number \(self)") ) mutating func adjust() (self += 42 ) ) 7.simpleDescription

Să experimentăm
Creați o extensie de tip Double cu o variabilă membru absoluteValue .

Puteți utiliza numele protocolului ca orice alt tip - de exemplu, pentru a crea o serie de obiecte de diferite tipuri, dar implementând un protocol comun. Rețineți că atunci când lucrați cu obiecte de acest tip, metodele declarate în afara protocolului nu vor fi disponibile.

Lăsați protocolValue: ExampleProtocol = a protocolValue.simpleDescription // protocolValue.anotherProperty // Anulați comentariul pentru a vedea eroarea
Chiar dacă variabila protocolValue este de tip SimpleClass în timpul rulării, compilatorul presupune că tipul ei este ExampleProtocol . Aceasta înseamnă că nu veți putea accesa accidental metode sau membri ai clasei care sunt implementate în afara ExampleProtocol.

Tipuri generice
Pentru a crea un tip generic, includeți numele între paranteze unghiulare (<>).

Func repetare (articol: ItemType, ori: Int) -> ItemType ( var rezultat = ItemType() pentru i în 0.. ori ( rezultat += item ) returnează rezultat ) repeat("knock", 4)
Creați funcții generice, clase, enumerări și structuri.

// Reimplementați tipul opțional al bibliotecii standard Swift OptionalValue (case Niciun caz Some(T) ) var posibilInteger: OptionalValue = .Nimic posibilIntreg = .Celeva(100)
Dacă doriți să specificați cerințe specifice pentru un tip generic, cum ar fi implementarea unui protocol sau solicitarea acestuia să moștenească de la o anumită clasă, utilizați where .

Func anyCommonElements (lhs: T, rhs: U) -> Bool ( pentru lhsItem în lhs ( pentru rhsItem în rhs ( dacă lhsItem == rhsItem ( returnează adevărat ) ) ) ) return false ) anyCommonElements(, )

Să experimentăm
Modificați funcția anyCommonElements pentru a returna o matrice de elemente comune.

În cazuri simple, puteți omite unde și puteți scrie protocolul sau numele clasei după două puncte. Expresie este echivalent cu expresia .

După cum sa menționat deja de mai multe ori, inclusiv de către , conferința a fost excelentă, chiar dacă nu a fost prezentat niciun hardware la ea. Numai produsele software au fost suficiente. Cât de mult a plăcut publicului conferința este dovedit de faptul că în urma acesteia nu s-a întâmplat nimic notabil, tradițional pentru astfel de cazuri.

Și în timp ce mare parte din ceea ce a fost prezentat a fost destul de așteptat de public, limbajul de programare s-a dovedit a fi o adevărată surpriză. La urma urmei, nimeni nu a bănuit măcar că Apple lucrează în această direcție. Cu toate acestea, limbajul de programare nu este iPad-ul; dezvoltările de acest tip prezintă puțin interes pentru publicul larg. Aceasta înseamnă că păstrarea secretului a fost mult mai ușoară.

Cel mai secret proiect

De fapt, lucrul la Swift a început în 2010, după prezentarea iPad-ului. Compania a dorit să creeze un instrument simplu, convenabil și funcțional, care ar putea face viața cât mai ușoară posibil pentru dezvoltatori.

Lucrarea a fost efectuată cu cea mai strictă încredere. Mai mult, o singură persoană a lucrat destul de mult timp la proiect - Chris Lattner, directorul departamentului Instrumente pentru dezvoltatori. Desigur, personalul a trebuit ulterior extins. Dar totuși, numărul acestor oameni nu a fost niciodată suficient de mare. Puțini oameni știau despre dezvoltarea unui nou limbaj, chiar și în interiorul zidurilor Apple, deși până în 2013 era considerat cel mai important proiect de instrumente pentru dezvoltatori. Este important de menționat că compania a dorit să prezinte produsul finit imediat, evitând tot felul de versiuni beta. Prin urmare, lucrările s-au întins până în 2014.

Aici ar fi potrivit să vorbim puțin despre însuși Lattner. A venit la Apple în 2005, înainte de asta a lucrat în beneficiul proiectului LLVM la Universitatea din Illinois, fiind unul dintre dezvoltatorii de top.

LLVM (Low Level Virtual Machine) este o mașină virtuală de nivel scăzut, un sistem universal pentru transformarea, optimizarea și analiza programelor. Proiectul a început ca un proiect independent, dar ulterior a primit sprijin extern semnificativ. Inclusiv de la Apple însuși, care apoi a folosit activ LLVM în propriile proiecte, inclusiv OS X și iOS. Același metal a fost dezvoltat folosind acest sistem.

LLVM nu a putut fi evitat nici în cazul lui Swift. Folosind acest sistem, limbajul este compilat într-un cod de mașină care este optimizat pentru a obține beneficii maxime atunci când utilizați aplicația pe tehnologia Apple.

La un moment dat, mutarea lui Chris Lattner la Apple a fost un pas mai mult decât logic. Nu mai puțin logică a fost decizia de a-i încredința dezvoltarea unei noi limbi. Este prea devreme pentru a da un verdict final, dar se pare că a făcut o treabă grozavă.

Caracteristicile lui Swift

Creația celor mai recente dezvoltări, limbajul de programare orientat pe obiecte compilat Swift se bazează pe limbaje precum Objective-C și C, reunind cele mai bune dintre ele. Nu există restricții în ceea ce privește compatibilitatea; limbile pot coexista perfect într-o singură aplicație. Acesta din urmă, apropo, este foarte important, deoarece există deja un număr mare de programe scrise în Objective-C.

Interesant este că ideea vagă a lui Swift a apărut în zilele lui NeXT, când Objective-C tocmai începuse să fie dezvoltat. Atunci s-a născut ideea de a crea un limbaj care ar putea face procesul de programare mai simplu și mai distractiv. Dar, după cum vedem, a fost nevoie de mult timp pentru a implementa această idee.

De fapt, nu este atât de ușor să găsești acea linie atunci când codul este suficient de simplu de tastat, dar în același timp suficient de lizibil pentru ca un dezvoltator terță parte să înțeleagă fragmente din programul altcuiva fără comentarii. De exemplu, un program scris în Pascal este ușor de înțeles, dar codul este prea lung. PERL vă permite să scrieți totul în câteva rânduri, dar se caracterizează printr-un cod extrem de ilizibil.

Între timp, unii dezvoltatori care au încercat deja Swift în practică susțin că Apple a reușit să se apropie cât mai mult de ideal, să găsească acel mijloc de aur între lizibilitate și ușurință de tastare.

După cum reiese imediat din numele noii limbi ( „swift” - engleză. "rapid, rapid"), accentul principal în timpul creării sale a fost pe viteză. În special, se afirmă că un program în Swift va rula de 1,3 ori mai rapid decât unul similar scris în Objective-C.

De asemenea, la dezvoltarea Swift, s-au luat în considerare parametri atât de importanți precum simplitatea, securitatea și flexibilitatea. Acest limbaj elimină clase întregi de coduri nesigure și este capabil să gestioneze automat memoria. Swift elimină însăși posibilitatea de a face o serie de greșeli atât de comune în rândul programatorilor începători. În ceea ce privește simplitatea, este bine confirmat de faptul că în 24 de ore de la moment, este deja pe el.

Creatorii au depus mult efort pentru a face codul Swift mai expresiv și mai ușor de înțeles. Dezvoltatorul poate urmări imediat rezultatele creativității sale prin vizualizarea părților individuale ale codului în așa-numitul. „locuri de joacă interactive” (Interactive Playgrounds). Dacă este nevoie de destul de mult timp pentru a executa codul, atunci puteți monitoriza procesul pe o linie specială de feedback care apare în acest scop. După ce codul a fost îmbunătățit și algoritmul a fost perfecționat, dezvoltatorul pur și simplu îl mută în proiectul său. Locurile de joacă pot fi utile nu numai în ceea ce privește simplificarea procesului de dezvoltare, ci și pentru a-ți ascuți abilitățile Swift.

O aplicație tradițională „Hello, World” arată astfel în Swift:

println("Bună, lume")

Și iată un alt exemplu de cod simplu:

lasa merele = 3
lasa portocale = 5
let appleSummary = "Am \(mere) mere."
let fruitSummary = "Am \(mere + portocale) bucăți de fructe."

Critica lui Swift

Între timp, pe internet apar și opinii în mod deschis negative cu privire la Swift. Există îngrijorări că aceasta este o cale de dezvoltare fără fund și Swift nu va putea niciodată să devină popular. La urma urmei, chiar și înainte de aceasta, au existat multe limbaje de programare care au fost create tocmai cu scopul de a ușura viața programatorilor și de a simplifica procesul de învățare. Și niciunul dintre ei nu a făcut față pe deplin sarcinilor care i-au fost atribuite. Tot ceea ce creatorii lor au reușit să obțină a fost pur și simplu să crească numărul deja considerabil de limbaje de programare.

Există critici la adresa acțiunilor Apple, care „ar fi mai bine să dezvolte limbaje precum Python sau Ruby, în loc să creeze un altul”. Astfel de cuvinte sunt susținute de opinia că aceste instrumente sunt deja utilizate în mod activ de dezvoltatori din întreaga lume. Mi s-a întâmplat să găsesc și o părere conform căreia Apple face degeaba principalul pariu pe viteză. Ei spun că la nivelurile moderne de dezvoltare a fierului acest lucru nu este atât de important.

Dar ceea ce provoacă cea mai mare iritare este faptul (ca întotdeauna în astfel de cazuri) că Apple a creat ceva doar pentru sine, după propriile standarde și pe propriile sale principii. Mai mult, se afirmă că, deși Swift nu este foarte diferit de multe alte limbi, compania declară din nou crearea unui produs fundamental nou.

În loc de o postfață

Se poate critica Apple pentru că este prea închis și arogant. Puteți admira simplitatea Swift și curățenia codului său. Dar rămâne faptul că viitorul noului limbaj de programare este încă neclar. Și două scenarii de dezvoltare sunt posibile.

Scenariul unu. Swift rămâne doar o dezvoltare interesantă. Este folosit, dar nu prea activ, preferând să lucreze în continuare cu obiectivul-C dovedit și familiar. Dezvoltatorii pentru alte platforme nu observă deloc apariția unui nou limbaj.

Scenariul doi. Abordările utilizate în Swift devin norma în lumea programării. Apple reușește din nou să influențeze întreaga lume schimbând normele general acceptate în rândul dezvoltatorilor. Ideea de „locuri de joacă”, împreună cu transparența codului noului limbaj, poate revoluționa învățarea programarii. Și asta ne va permite să reconsiderăm complet întregul proces educațional și să provocăm apariția unei noi generații de programatori.

Apropo, nu m-ar mira dacă peste câțiva ani, după ce a „lustruit” temeinic Swift, aducând-o la perfecțiune, Apple declară că intenționează să renunțe cu totul la Objective-C și să se bazeze pe un nou limbaj.

Folosesc tehnologia Apple încă din „era clasică”, din 1995. În această perioadă, am văzut mai mult de o „revoluție” bruscă și semnificativă (și uneori de-a dreptul șocantă) în dezvoltarea companiei. Care, în ciuda tuturor, nu și-a pierdut farmecul. Cred că așa va fi în continuare.

Cele mai bune articole pe această temă