Arhive etichetă: iOS

Care limbaj de programare sa invat prima data?

Multi doritori sa abordeze ca profesie sau ca hobby programarea software sau web se intreaba cu ce limbaj de programare sa isi inceapa calatoria.

Suntem acum in 2018, si cele mai utilizate dispozitive in prezent sunt telefoanele mobile, urmate de tablete si ulterior laptopurile si desktopurile. Sa fim realisti, dispozitivele mobile au castigat detasat batalia. In diverse domenii de activitate, numarul de utilizatori ce acceseaza pagini web sau folosesc un serviciu printr-o aplicatie, a depasit 50%, in unele cazuri chiar si 75%.

Personal, daca ar fi sa reincep sa invat de la zero, m-as informa despre ce e cel mai cerut in prezent pentru mobile.

Simplificand, as avea de ales intre 2 modele de programare. Nativa, specializata pe dezvoltare de aplicatii ce se doresc a functiona cat mai perfect, si hibrida, respectiv tehnologii web.

Si in cazul nativ pentru mobile veti intalni diverse pareri despre tehnologii hibride ce permit cod reutilizabil atat pentru Android, cat si pentru iOS. Personal, nu m-as concentra initial deloc pe aceasta varianta mai mult disperata, plina de frustrari in proiecte medii si mari.

Nativ

Android

Mi-as incepe calatoria invatand notiunile de baza de Java. Pentru Android nu e necesar sa invatati Java la nivel de specialist. In prezent, Android Studio va ajuta sa concepeti aplicatiile folosind mai mult decat Java, lasand acest limbaj sa se ocupe exclusiv partea de logica, restul fiind facut in cea mai mare proportie prin unelte vizuale si foarte intuitive.

Un curs introductiv grozav si gratuit in Java il recomand pe cel de pe Udacity: Java Programming Basics. Cursul se adreseaza incepatorilor total si le va oferi elementele de baza necesare a intelege ulterior exemplele oferite de Google pentru Android.

Ulterior, avand idee ce e o clasa, o metoda, o variabila s.a.m.d., cursul de introducere in Android, tot de la Udacity, recomandat si facut in colaborare cu Google, Android development for beginners.

Odata ce ati capatat idee despre ce e in domeniul dezvoltarii de aplicatii pentru Android, puteti fie rumega efectiv documentatia oficiala, fie continua pe Udacity cursurile gratuite, ulterior cele platite. Personal gasesc documentatia oficiala sa acopere absolut totul, dar lipsa unei programe de invatare poate incetini straduinta oricui.

Pentru 2018+, deoarece Google/Android au adoptat Kotlin ca limbaj de programare, as arunca un ochi pe documentatie, cel putin pe tot ceea ce are legatura cu Android. Avand o introducere in Java, Kotlin nu va parea strain, mai ales ca e mai simplist, mai uman ca sintaxa. Va fi foarte util pentru proiecte noi.

iOS

Nu sunt foarte cunoscator in zona Apple, si as completa cu cea mai mare placere un sfat si pentru iOS.

Ceea ce am experimentat, a fost sa incerc in cateva cazuri Xcode, IDE-ul oficial de la Apple, si am fost incantat sa descopar functionalitate similara cu Android Studio pentru partea grafica in constructia "activitatilor" (nu cunosc termenul pentru iOS, echivalent in Android).

Presupun ca abordarea ar fi in aceeasi pasi ca si pentru Android, in cazul acesta fiind limbajul de programare swift. Un bun start care l-am gasit e in documentatia oficiala, care va ajuta ca total necunoscator sa construiti o aplicatie cu scopul de a va familiariza cu tot conceptul.

Voi reveni cu o completare separata, cand imi voi rezerva timpul de a parcurge si eu aceasta.

Hibrid

Tehnologiile web au un mare succes in a scrie aplicatii mobile.

Viitorul garantat il vad personal in dezvoltarea de Single Page Application.

Cu toate ca existe zeci de framework-uri ce va promit dezvoltarea de aplicatii mobile ce vor merge si pe Android, si pe iOS, si chiar si pe Windows Phone (Windows 10+), ca incepator as sta cat mai departe initial de ele. Veti fi indoctrinati cu a face lucrurile intr-un mod anume, si va va limita posibilitatile de cariera in domeniu.

In cazul tehnologiilor web avem un limbaj candidat esential: JavaScript.

JavaScript este folosit atat pentru browsere web, servicii ce ruleaza pe servere, cat si pentru aplicatiile hibride mentionate acum 2 paragrafe.

La fel ca si o introducere in Java, un curs introductiv in JavaScript va va oferi aceleasi notiuni elementare de programare, ce sunt comune intre toate limbajele.

Cursul de la Udacity, Intro to JavaScript, va va oferi gratis startul in a intelege limbajul.

Personal as insista pentru un incepator sa incerce varianta nativa, Java + Android sau Swift + iOS. Dupa 8 ani de cariera si 10 ani ca hobby in programare web (JavaScript si PHP in special), am ajuns la concluzia ca totul devine mult prea complicat din cauza la "fiecare face dupa cum il duce capul" si cu toate ca veti intalni extrem de multa lume care sa va convinga in a va arunca in JavaScript de la inceput, va sfatui sa fiti mai reticenti si sa va ganditi bine.

Nu regret toti acesti ani, si recunosc ca zecile de proiecte in care am fost implicat pentru a-mi castiga salariul, m-au facut sa invat enorm de mult, dar aceasta a fost si mai ales pentru ca a trebuit in majoritatea timpului sa repar si sa refac dupa altii.

Ca idee totusi, amandoua platformele mobile majore, Android si iOS, se indreapta inspre a oferi un suport mult mai bun pentru JavaScript, folosind conceptul de WebView. Astfel puteti construi website-uri pe conceptul de Single Page Application, care daca implica si conceptul de Progresive Web Application, puteti oferi in majoritatea cazurilor solutii alternative.

Calea de a invata constructia de aplicatii web profesionale care ruleaza atat ca aplicatie mobila cat si ca website de calitate, necesita mult mai mult timp decat alternativa nativa.

Trendul de cerere de programatori avansati JavaScript pentru aplicatii hibride a inceput sa scada in tarile vest europene recent, pentru ca concurenta startup-urilor cu varianta nativa pentru acelasi tip de serviciu pur si simplu intrece calitatea posibila.

Tehnologiile hibride nu ofera acces la capabilitatile complete oferite de SDK-ul nativ al sistemului de operare nativ.

Jocuri mobile sau desktop

Aceasta categorie nici macar nu mai are nevoie de multe aliniate.

Cel mai usor de abordat mediu pentru incepatori este platforma Unity si limbajul utilizat (din nou doar pentru logica din jocuri) este C#.

Am avut ocazia sa cunosc pe cineva care nu are nici o legatura cu limbajele de programare, si care isi castiga existenta construind jocuri pentru Android.

Este simplu. Tot ce aveti nevoie pentru a incepe gasiti in documentatia oficiala Unity. Pana nu o parcurgeti, ideal ar fi sa stati departe de cursuri de pe Youtube si alte website-uri (chiar si platite), pentru ca va va limita cunostintele doar la cateva preconcepte ale autorilor despre cum s-ar construi un joc.

Concluzie

Sa scurtez totul, limbajul de start in 2018 pe care l-as alege, ar fi Java si as incerca o cariera ca programator pentru Android. Restul vor veni de la sine, inclusiv iOS si Web/JavaScript.

Aplicatiile native incep din nou sa fie la mare cerere datorita concurentilor ce ofera acelasi serviciu si aceasta duce la necesitatea calitatii superioare aplicatiilor.