Fundamentele programării (I) - Scala

Începem acum cu adevărat seria de articole dedicate prezentării fundamentelor programării. Acesta este primul articol din versiunea Scala a seriei. Dacă vă uitați la articolele corespunzătoare din versiunile dedicate celorlalte limbaje, veți observa că sunt foarte asemănătoare. Vă rugăm să nu ne acuzați de copy & paste… Există un motiv întemeiat! Vrem să fie asemănătoare. Vrem să arătăm elementele comune ale limbajelor. Nu are rost să reformulăm doar de dragul de a prezenta lucrurile puțin diferit.

De ce Scala?

Motivul principal pentru care Scala este unul dintre limbajele alese este acela că limbajul este din ce în ce mai folosit în domeniul Big Data. Nu este și nici nu va fi cel mai utilizat limbaj în acest domeniu, deoarece aplicațiile sunt hibride, dar probabil că va fi cel mai utilizat limbaj funcțional din acest domeniu. Despre ce este Big Data vom avea ocazia să aflăm în altă serie de articole.

După un start care va părea mai dificil comparativ cu alte limbaje, veți vedea că lucrurile devin din ce în ce mai simple. Se spune că în Scala lucrurile funcționează de la sine, totul este intuitiv și șansele de a greși sunt mai mici. Unii sunt de părere ca e mai ușor și mai intuitiv decât Java. Asta ramâne sa decideți voi. Va trebui să aveți puțină răbdare. Elementele de bază prezentate în cadrul acestui prim articol vor părea exagerat de complicate. Din fericire, trebuie să știți doar că se poate face, că așa se face și nu de ce trebuie scris atât de mult cod.

Scala și Java au în comun faptul că rezultatul compilării rulează pe mașina virtuală Java (JVM). De aici, putem trage concluzia că în Scala vom putea utiliza foarte ușor tehnologii implementate în Java și într-o oarecare masură și viceversa este adevărată în sensul că putem scrie în Scala cod care să poată fi folosit în Java. De aici tragem concluzia că multe lucruri care au fost deja făcute de alți programatori în Java și Scala pot folosite fără probleme în Scala.

Folosind acest limbaj vom putea dezvolta aplicații software dintre cele mai diverse. Vom scrie programe care vor rula pe servere sau pe calculatoarele obișnuite. Scala poate fi utilizat și pentru a scrie programe care rulează pe tablete sau telefoane mobile, dar există alternative mult mai potrivite pentru asta. Cea mai bună utilizare a limbajului este pentru a scrie programe care rulează pe servere și se ocupă de diferite calcule matematice, fiind la origine un limbaj funcțional.

Mediul de programare

Există două medii de programare preferate în comunitatea Scala: ScalaIDE (bazat pe Eclipse) și IntelliJ IDEA (folosind Scala Plugin). Fiecare are avantajele sale, pe măsură ce apar versiuni noi fiecare încearcă să adauge facilități noi, dar și facilitățile deja oferite de celălalt. Chiar și în redacția Gazetei de Informatică părerile sunt împărțite. La un moment dat va trebui să alegeți unul dintre ele (sau altul dacă vă place mai mult, dar șansele sunt relativ mici). Ambele sunt disponibile pentru diverse sisteme de operare și sunt relativ ușor de instalat. Dar, instalarea acestor medii de programare depășește scopul acestui articol. Dacă știți folosi un mediu de programare (sau vă ajută cineva), o puteți face. Pentru a ne păstra neutralitatea, vom oferi o soluție alternativă care nu necesită instalare.

Pe parcursul acestei serii de articole, exemplele vor fi create și rulate folosit un mediu de programare disponibil online. Sunt mai multe disponibile și în cazul Scala am ales aproape la întâmplare http://ideone.com/. Din fericire ni se pune la dispoziție și posibilitatea de a scrie cod Scala. E suficient de bun deocamdată. Dacă aveți motive să credeți că ar fi trebuit să alegem altceva, vă rugăm să ne atenționați…

Să începem…

Dacă accesați site-ul veți ajunge la o pagină care arată cam așa (am eliminat elementele neesențiale):Screen Shot 2015-05-04 at 21.49.43

Observați că avem deja un program scris. Acesta este un fel de program minimal în Java care nu face nimic. Nu avem nevoie de el. Dar, apăsând butonul din stânga jos (cel pe care scrie Java), putem alege un alt limbaj și Scala este în listă. Avem acum un program minimal în Scala care nu face nici el nimic. Nu trebuie să înțelegeți acum ce rol au toate acele texte…

ideone-scala-default

Puteți apăsa butonul Run din dreapta jos și se va executa. Veți ajunge în situația din imaginea de mai jos.

ideone-scala-default-run

Observăm că execuția s-a încheiat cu succes, dar în rest nu s-a întâmplat mare lucru. Totuși, vedem că adresa paginii afișate s-a modificat (în cazul nostru este http://ideone.com/9Fnw6N, dar programul fiecăruia va fi disponibil la o altă adresă). Vom putea întotdeauna accesa programele scrise folosind aceste adrese.

Dacă dorim să facem ceva, ar trebui totuși să modificăm acest program care nu face nimic. Pentru aceasta putem apăsa butonul edit din stânga-sus. Adresa nu se mai modifică, dar acum putem efectua modificări în program.

Să înlocuim // your code goes here cu // aici trebuie scris codul. Din motive cunoscute doar de creatorii site-ului, în locul butonului Run avem un buton numit Ideone it! Apăsându-l vom rula noul program care, poate v-ați așteptat, nu va face nici el nimic. Pentru a ne păstra modificările va trebui să apăsăm butonul Save.

Primul program adevărat

Tradiția spune că primul program scris într-un limbaj de programare nou este cel care tipărește mesajul Hello World! Noi vom fi mai originali și vom tipări Gazeta de Informatică.

Așa cum probabil vă imaginați, codul va fi scris în zona în care ne-am “jucat”. Vom înlocui textul // aici trebuie scris codul cu o comandă Scala propriu zisă, vom salva și vom rula programul. Comanda respectivă este cea din articolul introductiv:

După rulare, veți observa că în zona din partea inferioară a ecranului a apărut textul dorit.

ideone-scala-hello

Tocmai am realizat una dintre operațiile fundamentale efectuate de programele de calculator. Am oferit o informație în exterior. De data aceasta am scris ceva pe ecran. Programele comunică rezultatele executării lor furnizând așa numitele date de ieșire. Acestea pot lua diverse forme. Cea mai simplă este tipărirea unui simplu text, dar sunt multe altele cum ar fi tipărirea la o imprimantă, desene sau filme pe ecran, sunete în boxe etc., dar și informații codificate care nu pot fi înțelese decât de alte programe.

Date de intrare

Programele ne furnizează date de ieșire. De cele mai multe ori ele au nevoie de informații din exterior. Acestea le sunt comunicate prin intermediul așa numitelor date de intrare. Dacă prin intermediul datele de ieșire programele ne furnizează informații, prin intermediul datelor de intrare noi suntem cei care oferim informații. Și datele de intrare pot lua diverse forme: informații introduse de la tastatură, mișcarea mouse-ului, apăsarea butoanelor mouse-ului, apăsarea unui touchscreen, rostirea în microfon, etc. Poate vă imaginați că acele informații codificate pe care le menționam la sfârșitul secțiunii anterioare, cele care nu pot fi înțelese decât de alte programe, reprezintă date de intrare pentru aceste alte programe.

Dar, să ne concentrăm asupra unui exemplu simplu. Vom cere numele utilizatorului și îl vom saluta. Utilizatorul își va introduce numele și după aceea va apărea mesajul Salut, urmat de nume și de un semn de exclamare. Ca să arate totul bine, vom adăuga și un spațiu înaintea numelui. De exemplu, dacă utilizatorul ar introduce numele GInfo, mesajul ar fi Salut GInfo!.

Simplu, nu?. Să vedeți acum…

Site-ul ne permite să specificăm date de intrare sub forma unor text înainte de a rula programul. Acestea trebuie introduse în caseta din partea inferioară:

ideone-scala-salut-input

Dacă rulăm programul, observăm că este afișat mesajul ales.

ideone-scala-salut-output

În episoadele următoare veți înțelege ce este acel nume și, mult mai încolo, ce este un Console

Deocamdată, singura observație demnă a fi luată în considerare este aceea că, în Scala, instrucțiunile se încheie prin ; sau la sfârșitul liniei pe care apar.

Va urma

În episodul următor vom vedea cum lucrăm cu numere și texte. Veți înțelege puțin mai mult din programul pe care l-am folosit ca model în cadrul acestui episod.