Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:programare-functionala-lambda-si-streamuri [2025/12/15 11:24]
florian_luis.micu [Laboratorul 11: Programare Funcțională, Lambdas și Stream-uri]
poo-ca-cd:laboratoare:programare-functionala-lambda-si-streamuri [2025/12/15 11:44] (current)
florian_luis.micu [Obiective]
Line 20: Line 20:
   * diferențe dintre stilul imperativ și stilul funcțional de programare.   * diferențe dintre stilul imperativ și stilul funcțional de programare.
   * identificarea avantajelor,​ limitărilor și capcanelor ale abordării funcționale în Java.   * identificarea avantajelor,​ limitărilor și capcanelor ale abordării funcționale în Java.
 +
 +Aspectele **bonus** urmărite sunt:
 +  * definirea și folosirea Optional în programarea în stil funcțional.
 +  * paralelizarea codului folosind parallel streams.
  
 <note warning> <note warning>
Line 26: Line 30:
 </​note>​ </​note>​
  
-======🔧 ​Programare ​funcțională======+======🔧 ​Programarea ​funcțională======
  
 +Există mai multe **paradigme de programare**,​ fiecare definind un mod diferit de a structura și exprima logica unui program. Cele mai importante sunt **programarea imperativă**,​ care descrie execuția pas cu pas, **programarea orientată pe obiecte**, care modelează aplicația prin obiecte ce combină date și comportament,​ și **programarea funcțională**,​ care pune accent pe transformări de date, funcții pure și evitarea stării mutabile.
 +
 +Majoritatea limbajelor moderne sunt **multi-paradigmă**. Java, de exemplu, combină stilul imperativ și orientat pe obiecte cu elemente de programare funcțională (lambda expressions,​ Stream API), permițând alegerea paradigmei potrivite în funcție de problemă.
 +
 +<note tip>
 +Există mai multe tipuri de paradigme de programare:
 +  * programare imperativă (ex. C, Fortran)
 +  * programare orientată pe obiecte (ex. Java, C#, C++, Python)
 +  * programare funcțională (ex. Haskell, Lisp)
 +  * programare declarativă (ex. SQL, HTML)
 +  * programare logică (ex. Prolog)
 +  * programare bazată pe evenimente (ex. JavaScript)
 +</​note>​
 =====De ce am programa funcțional în Java?===== =====De ce am programa funcțional în Java?=====
  
Line 1443: Line 1460:
   * [[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​util/​stream/​package-summary.html|Stream API - Oracle Docs]] ​   * [[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​util/​stream/​package-summary.html|Stream API - Oracle Docs]] ​
   * [[https://​www.baeldung.com/​java-functional-programming|Java Functional Programming - Baeldung]]   * [[https://​www.baeldung.com/​java-functional-programming|Java Functional Programming - Baeldung]]
 +  * [[https://​www.baeldung.com/​java-optional|Guide to Java Optional - Baeldung]]
  
  
poo-ca-cd/laboratoare/programare-functionala-lambda-si-streamuri.1765790678.txt.gz · Last modified: 2025/12/15 11:24 by florian_luis.micu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0