0% au considerat acest document util (0 voturi)
4 vizualizări32 pagini

Lesson 10 - Programming Languages

Încărcat de

dpvvipszmqfdjmbtsm
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
4 vizualizări32 pagini

Lesson 10 - Programming Languages

Încărcat de

dpvvipszmqfdjmbtsm
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Programming

Languages
Ce este un limbaj de programare?
Limbaj de programare – este un set de instrucțiuni scrise de un programator
pentru a furniza instrucțiuni computerului care va îndeplini o sarcină.
Acest set de instrucțiuni este de obicei văzut ca un cod structurat după o
sintaxă definită de limbajul de programare.
Ce este o sintaxa?
Sintaxa - se referă la regulile care definesc structura
unui limbaj. Sintaxa în programarea computerelor
înseamnă regulile care controlează structura
simbolurilor, punctuația și cuvintele cheie ale unui
limbaj de programare.
Fără sintaxă, sensul sau semantica unei limbi este
aproape imposibil de înțeles. Dacă sintaxa unui
limbaj NU este urmată, codul NU va fi înțeles de un
compilator sau interpretator.
Sustenabilitatea:
Odată ce codul este scris, acesta este citit de mai
multe ori de către persoane diferite. Uneori, codul
poate fi citit si ușor de înțeles la ani după ce a fost
scris datorita standartelor de codificare.
Ce este o sintaxa?
Scrierea denumirilor este o componentă esențială a sintaxei în limbajele de
programare și se referă la modul în care sunt create și utilizate identificatorii,
cum ar fi variabilele, funcțiile, clasele și alte entități.
1. Reguli de Denumire
Caractere Permise: de obicei, identificatorii pot conține litere, cifre și
caractere speciale (de obicei, underscore _), dar NU pot începe cu o cifră.
Sensibilitate la Majuscule: multe limbaje, cum ar fi C++ și Java, sunt
sensibile la majuscule, ceea ce înseamnă că Variable și variable sunt
considerate diferite.
2. Claritate și Semnificație
Denumirile ar trebui să fie descriptive și să reflecte scopul variabilelor
sau funcțiilor. De exemplu, calculateArea este mai clar decât calc.
Ce este o sintaxa?
3. Convenții de Denumire
Camel Case: utilizat frecvent în Java și JavaScript, unde cuvintele sunt
unite fără spații, iar fiecare cuvânt începe cu literă mare (ex:
myVariableName)
Snake Case: folosit adesea în Python, unde cuvintele sunt separate prin
underscore (ex: my_variable_name)
Pascal Case: similar cu Camel Case, dar folosit în special pentru numele
claselor (ex: MyClassName) preluat si de Java
4. Domeniul de Vizibilitate
Identificatorii pot avea diferite domenii de vizibilitate (local, global, etc.),
iar denumirile ar trebui să fie unice în contextul lor pentru a evita
coliziunile.
5. Impact asupra Citirii Codului
O denumire bine aleasă poate îmbunătăți semnificativ lizibilitatea codului,
făcându-l mai ușor de întreținut și înțeles de către alți programatori.
Ce este o source code?
Source code (cod sursă) se referă la setul de instrucțiuni scrise de
programatori într-un limbaj de programare specific, care definește
comportamentul unui program sau al unei aplicații.
Un cod sursa conține:
declarații
instrucțiuni
funcții
loops (cicluri)
Programele pot conține unul sau mai multe fișiere text pentru un cod sursă,
care pot fi stocate pe hard diskul unui computer, într-o bază de date sau pot fi
salvate în code snippets (fragment de code). Programatorii pot adăuga
comentarii la codul lor sursă pentru a ajuta alți dezvoltatori să-l înțeleagă.
Ce este un compilator?
Un compilator este un program software care traduce
codul sursă scris într-un limbaj de programare precum C,
C++, Java în cod mașină sau într-un alt limbaj
intermediar, astfel încât programul să poată fi executat
de calculator.
Compilatorul face următoarele:
1. Analizează codul sursă pentru a verifica dacă este
sintactic și semantic corect.
2. Traduce codul într-un format executabil sau într-un
alt limbaj (de ex., cod obiect sau cod de asamblare).
3. Optimizează codul pentru performanță.
4. Generează fișierul final care poate fi rulat pe o mașină
(ex: un fișier .exe în Windows).
Ce este un compilator?
Exemple de compilatoare:
gcc pentru limbajul C
javac pentru Java (compilează în bytecode pentru JVM)
clang pentru C/C++

Sursa originală utilizata in compilare se numește de obicei code sursă iar


rezultatul compilarii code obiect.
Codul obiect este forma intermediară a unui program compilat, generată de
un compilator după ce traduce codul sursă. Acesta conține instrucțiuni în
limbaj de mașină, dar nu este încă un program executabil complet. De obicei,
codul obiect trebuie legat (link-uit) cu alte bucăți de cod (cum ar fi biblioteci
sau alte module) pentru a produce un fișier executabil final.
Ce este un compilator?
Bytecode este un cod intermediar între codul sursă și codul mașină, generat de un
compilator pentru un interpret virtual, nu pentru un procesor real.
Caracteristici:
Nu este cod mașină real, dar nici cod sursă.
Este mai compact și mai rapid de interpretat decât codul sursă.
Este rulat de o mașină virtuală (ex: Java Virtual Machine, Python Virtual
Machine).
Oferă portabilitate: același bytecode poate rula pe orice platformă care are
mașina virtuală potrivită.
Avantajele bytecode-ului:
Portabilitate: bytecode-ul e același pe Windows, Mac, Linux.
Performanță decentă: mai rapid decât interpretarea directă a codului sursă.
Securitate: codul sursă nu este distribuit direct, ci în formă compilată.
Bytecode are nevoie de o mașină virtuală (VM) care să-l interpreteze sau să-l
compileze just-in-time (JIT).
Ce este un compilator?
Caracteristici ale codului obiect:
Este specific arhitecturii procesorului (de exemplu, x86, ARM).
Poate conține simboluri nerezolvate, cum ar fi apeluri către funcții externe
sau adrese care urmează să fie completate la legare (linking).
De obicei are extensia .o (Linux) sau .obj (Windows).
Este generat automat de compilator și nu este destinat citirii directe de
către oameni.
Procesul:
1. Cod sursă (ex. main.c)
2. ↓ (compilare)
3. Cod obiect (ex. main.o)
4. ↓ (linkare cu alte fișiere)
5. Program executabil (ex. [Link] sau [Link])
Etapele principale ale unui compilator:
1. Analiza lexicală (Lexical Analysis)
Sparge codul sursă în token-uri (cuvinte-cheie, identificatori, numere,
simboluri etc.).
Exemplu: int x = 5; → int, x, =, 5 ;
2. Analiza sintactică (Syntax Analysis / Parsing)
Verifică dacă secvența de token-uri respectă regulile gramaticale ale
limbajului.
Creează un arbore sintactic abstract (AST – Abstract Syntax Tree).
3. Analiza semantică (Semantic Analysis)
Verifică sensul logic al codului: tipuri de date corecte, variabile definite,
apeluri valide de funcții etc.
Exemple de erori semantice: folosirea unei variabile nedeclarate sau
împărțirea la zero.
Etapele principale ale unui compilator:
4. Generarea codului intermediar (Intermediate Code Generation)
Codul este transformat într-o formă abstractă, mai apropiată de codul
mașină, dar încă independentă de platformă.
Exemplu: IR (Intermediate Representation)
5. Optimizarea codului (Optimization)
Îmbunătățește performanța codului: elimină calcule inutile, reduce
numărul de instrucțiuni etc.
Nu modifică rezultatul final al programului.
6. Generarea codului obiect (Code Generation)
Codul este tradus în instrucțiuni de mașină specifice procesorului.
Se generează fișiere .o sau .obj.
7. Linkarea (Linking)
Codul obiect este combinat cu biblioteci externe și alte module.
Rezultatul este un fișier executabil complet (ex: .exe, .out).
Ce este un interpret?
Un interpret (sau interpreter) este un program care execută direct codul
sursă, linie cu linie, fără să îl traducă mai întâi complet în cod mașină sau să
creeze un fișier executabil.
Cum funcționează un interpret:
1. Primește codul sursă scris într-un limbaj de programare (ex: Python).
2. Analizează fiecare linie: verifică sintaxa și semantica.
3. Execută direct instrucțiunile, fără a crea un fișier intermediar.
Ce este un interpret?
Caracteristici:
Nu generează fișier executabil.
Codul este rulat în timp real.
Este mai lent decât compilarea, dar mai flexibil pentru testare și
dezvoltare rapidă.
Ideal pentru scripturi, prototipuri, și limbaje dinamice.
Tipurile limbajelor de programare
Limbaje de nivel jos (Low-Level Languages)
a) Cod mașină (Machine Code)
Este format exclusiv din 0 și 1 (binar).
Este executat direct de procesor, fără nicio traducere.
Extrem de rapid, dar greu de scris și înțeles de oameni.
Exemplu: 10110000 01100001
b) Assembly (Limbaj de asamblare)
Fiecare instrucțiune este un cod mnemonic care corespunde unei
instrucțiuni de mașină.
Necesită un assembler pentru a fi transformat în cod mașină.
Este specific fiecărui tip de procesor.
Exemplu: MOV AL, 61h
Tipurile limbajelor de programare
Limbaje de nivel mediu (uneori menționate separat)
Combinație între controlul unui limbaj de nivel jos și ușurința unui limbaj
de nivel înalt.
Exemplu clasic: C – permite manipulare directă a memoriei, dar are sintaxă
mai ușor de înțeles decât Assembly.
Tipurile limbajelor de programare
Limbaje de nivel înalt (High-Level Languages)
Apropiate de limbajul natural uman, ușor de învățat și utilizat.
Independente de arhitectura hardware.
Necesită un compilator sau interpret pentru a fi rulate.
Exemple:
Python – foarte simplu, folosit pentru automatizări, AI, web etc.
Java – portabil, orientat pe obiecte, folosit la aplicații enterprise și mobile.
C++ – performant și versatil, folosit în jocuri, sisteme de operare, etc.
✅ Avantaje:
Ușor de citit și scris
Dezvoltare rapidă
Tipurile limbajelor de programare
Limbaje de nivel înalt (High-Level Languages)
Apropiate de limbajul natural uman, ușor de învățat și utilizat.
Independente de arhitectura hardware.
Necesită un compilator sau interpret pentru a fi rulate.
Exemple:
Python – foarte simplu, folosit pentru automatizări, AI, web etc.
Java – portabil, orientat pe obiecte, folosit la aplicații enterprise și mobile.
C++ – performant și versatil, folosit în jocuri, sisteme de operare, etc.
✅ Avantaje:
Ușor de citit și scris
Dezvoltare rapidă
Procedural Oriented Programming
Este un stil de programare în care programul este scris ca o secvență de
instrucțiuni grupate în proceduri (subprograme), care pot fi apelate de
oriunde în program.
Caracteristici principale:
1. Structură liniară + modulară
Codul este executat de sus în jos, dar organizat în funcții.
2. Separarea funcționalității în proceduri
Fiecare procedură (funcție) rezolvă o sarcină specifică.
3. Accent pe funcții, nu pe date
Datele sunt globale sau transmise ca parametri între funcții.
Funcțiile prelucrează datele, dar NU le dețin.
4. Control clar al fluxului programului
Folosește instrucțiuni de control ca if, while, for, switch.
Object-Oriented Programming
Programarea orientată pe obiecte este un paradigmă de programare în care
programele sunt construite în jurul obiectelor care conțin date (atribute) și
comportamente (metode).
Principalele concepte din OOP:
1. Clasă (Class)
Un șablon care definește cum va arăta un obiect.
Conține atribute (variabile) și metode (funcții).
2. Obiect (Object)
O instanță concretă a unei clase.
Obiectul are stare (valori ale atributelor) și comportament (metode).
3. Încapsulare (Encapsulation)
Ascunderea datelor interne și oferirea unui mod controlat de acces (prin
metode).
Exemplu: variabilele private, metodele public.
Object-Oriented Programming
4. Moștenire (Inheritance)
O clasă poate moșteni atributele și metodele altei clase.
Permite reutilizarea codului.
Ex: clasa Pisica moștenește din Animal.
5. Polimorfism (Polymorphism)
Aceeași metodă poate avea comportamente diferite în funcție de context.
Ex: metoda deseneaza() poate fi implementată diferit în Cerc și Pătrat.
6. Abstracție (Abstraction)
Ascunderea detaliilor și oferirea doar a informațiilor esențiale.
Se folosesc clase abstracte sau interfețe.
Python
Python – este unul dintre cele mai utilizate limbaje de programare ușor de
utilizat. Este un limbaj de programare open-source și ușor de învățat,
dezvoltat în anii 1990. Este folosit mai ales în Machine Learning, Artificial
Inteligence, Big Data, GUI based desktop applications, and Robotics.
Avantaje:
Python este ușor de citit, ușor de înțeles și ușor de
scris.
Se integrează cu alte limbaje de programare precum C,
C++ și Java.
Python execută codul linie cu linie, așa că este ușor
pentru programator să găsească eroarea care a apărut
în cod.
Python este independent de platformă pe care ruleaza
înseamnind că codulscris o dată îl puteți rula oriunde
Java
Java – acest limbaj de programare de uz general, cu structura sa orientată pe
obiecte, a devenit un standard pentru aplicațiile care pot fi utilizate indiferent
de platformă (de exemplu, Mac, Windows, Android, iOS etc.) datorită Write
Once, Run Anywhere (WORA) capabilități. Ca urmare, Java este recunoscut
pentru portabilitatea sa pe platforme, de la centre de date mainframe la
smartphone-uri.
Dezvoltat de Sun Microsystems în 1995 acum, Java este deținut de Oracle.
Este folosit în principal pentru a dezvolta aplicații bancare, aplicatii de tip
retail, tehnologia informaționala, Android, Big Data, aplicatiilor de tip web și
desktop.
Java
Avantaje:
Oferă posibilitatea de a rula același program pe platforme diferite.
Este un limbaj de programare foarte securizat, deoarece în java nu există
un concept explicit de pointeri.
Este capabil să îndeplinească mai multe sarcini în același timp.
C#
C# – este un limbaj de programare modern, de uz general și orientat pe
obiecte, utilizat pentru crearea serviciile Web bazate pe XML utilizind
platforma .NET. Este conceput în principal pentru a îmbunătăți
productivitatea în aplicațiile web. Este mai ușor de învățat pentru acei
utilizatori care au cunoștințe suficiente despre limbaje de programare comune
precum C, C++ sau Java. Dezvoltat de Microsoft, în anii 2000 de Anders
Hejlsberg.
Avantaje:
C# este un limbaj de programare modern, type-safe, ușor,
rapid și open-source, care este ușor de integrat cu Windows.
Menținerea aplicatiei in C# este mai usoara decât in limbajul
de programare C++.
C# este un limbaj de programare pur orientat pe obiecte.
C# are un backup bun pentru memorie astfel fiind protejat de
problema lipsei memoriei.
Javascript
Javascript – este un tip de limbaj de scripting care este utilizat atât pe partea
clientului, cât și pe partea serverului. Este dezvoltat în anii 1990 pentru
browserul web Netscape Navigator. Permite programatorilor să implementeze
funcții complexe pentru a face paginile web vii (alive). Ajută programatorii să
creeze site-uri web dinamice, web servere, aplicații mobile, grafică animată,
jocuri și multe altele.
Avantaje:
JavaScript ne ajută să adăugăm comportament și interactivitate
pe pagina web.
Poate fi folosit pentru a reduce timpul de încărcare de pe server.
Are capacitatea de a crea site-uri web atractive, dinamice și
interfețe cu multe detalii.
JavaScript este un limbaj de programare simplu, versatil și ușor.
JavaScript și sintaxa sa sunt ușor de înțeles.
R
R – este unul dintre limbajele de programare populare care este utilizat în
analiza datelor, cercetarea științifică, algoritmi Machine Learning și calculul
statistic. Este dezvoltat în 1993 de Ross Ihaka și Robert Gentleman. Ajută
specialiștii în marketing și data analistii să analizeze, să prezinte și să
vizualizeze cu ușurință datele.
Avantaje:
Programarea R oferă suport extins pentru Data Wrangling.
Oferă o interfață ușor de utilizat.
Funcționează pe orice platformă precum Windows, Linux și
Mac.
Este un limbaj de programare open-source și independent de
platformă.
Go
Go sau Golang – este un limbaj de programare open-source. Este dezvoltat de
Robert Griesemer, Rob Pike și Ken Thompson în 2007. Go a devenit recent unul
dintre limbajele de programare cu cea mai rapidă creștere datorită simplității
sale, precum și capacității sale de a gestiona sisteme multicore și sisteme de
retea precum si baze de cod masive.
Avantaje:
Limba Go este ușor de învățat și de utilizat.
Vine cu instrumentele de testare încorporate.
Go este un limbaj de programare rapid.
Unul dintre motivele pentru care ar trebui să utilizați Golang
este capacitatea sa de a sprijini concurența
Una din functionalitatile Golang este garbage collection sau
modeulul de eliberare a spatiului memorie neutilizat
Ruby
Ruby – este un limbaj de programare open-source, cu scop general și pur
orientat pe obiecte, lansat în 1993. Este folosit în dezvoltarea aplicatiilor web
front-end și back-end. Este conceput în principal pentru a scrie scripturi CGI
(Common Gateway Interface).
Avantaje:
Ruby acceptă diverse instrumente GUI precum GTK și OpenGL.
Este folosit pentru a dezvolta atât aplicații de internet, cât și
de intranet.
Codul scris în Ruby este mic și conține un număr mai limitat de
linii.
Swift
Swift – În urmă cu câțiva ani, a ajuns în top 10 în clasamentul lunar TIOBE
Index al limbajelor de programare populare. Apple a dezvoltat Swift în 2014
pentru aplicații Linux și Mac.
Un limbaj de programare open-source care este ușor de învățat, Swift acceptă
aproape orice, de la limbajul de programare Objective-C. Swift necesită mai
puține abilități de codare în comparație cu alte limbaje de programare și
poate fi utilizat cu IBM Swift Sandbox și IBM Bluemix. Swift este folosit în
aplicațiile iOS populare precum WordPress, Mozilla Firefox, SoundCloud și
chiar în jocul Flappy Bird.
Ce limbaj de programare ar trebui să înveți?
În primul rând, trebuie să setezi obiective pentru cariera dorita a fi urmata
după ce ai învățat limbajul de programare.
Apoi, sa efectuezi o cercetare de piață amănunțită și sa alegi domeniul la
care doresti să te alaturi.
După aceea, trebuie să înțelegi domeniul profesiei dorite. Învățați
abilitățile și limbile care sunt solicitate în domeniul ales.
Ar fi cazul să începi cu un limbaj de programare mai usor și să ridici treptat
nivelul de dificultate. Python, Javascript, C# și Ruby sunt limbaje grozave,
pentru început.
Căuta sursa de invatare cu material expuse simplu ca sa poti învăța rapid.
Alăturate comunităților și conecteaza-te cu expertii din domeniului.
În cele din urmă, continua să reimprospatezi cunostintele și să înveti ceva
nou, deoarece piața este în continuă schimbare.

S-ar putea să vă placă și