Difference between revisions of "De ce numim limbajul Haskell un limbaj functional ?"

From HaskellWiki
Jump to navigation Jump to search
(adding a Pro Haskell Banner)
m (adding text)
 
(One intermediate revision by the same user not shown)
Line 16: Line 16:
   
 
Deoarece spre deosebire de limbajele imperative care manipuleaza practic DATE sub forma de numere intregi sau valori codate prin numere intregi (caractere, stringuri,pointeri), limbajele functionale manipuleaza FUNCTII codate prin lambda expresii.(Iar daca limbajul functional e compilat sunt codate prin combinatori, dar sa nu intram acum in detalii.) Cum multimea functiilor este mai bogata decat cea a numerelor intregi (are un cardinal mai mare) asemenea limbaje sunt mult mai expresive.
 
Deoarece spre deosebire de limbajele imperative care manipuleaza practic DATE sub forma de numere intregi sau valori codate prin numere intregi (caractere, stringuri,pointeri), limbajele functionale manipuleaza FUNCTII codate prin lambda expresii.(Iar daca limbajul functional e compilat sunt codate prin combinatori, dar sa nu intram acum in detalii.) Cum multimea functiilor este mai bogata decat cea a numerelor intregi (are un cardinal mai mare) asemenea limbaje sunt mult mai expresive.
  +
  +
La nivel pragmatic, il puteti vedea pe orice limbaj functional ca pe un manipulator de algoritmi, exprimati ca la orele de matematica elementara, cel mai adesea.
   
 
Exista, e important de stiut, o teorie matematica a lambda calculului. Se studiaza in cadrul cursului de [[Programare functionala]].
 
Exista, e important de stiut, o teorie matematica a lambda calculului. Se studiaza in cadrul cursului de [[Programare functionala]].
Line 46: Line 48:
 
- daca limbajul admite clase (Haskell admite, iar Lisp-ul nu) puteti defini clase in care datele manipulate sunt de fapt functii !!
 
- daca limbajul admite clase (Haskell admite, iar Lisp-ul nu) puteti defini clase in care datele manipulate sunt de fapt functii !!
   
  +
- in Haskell, limbaj functional pur, puteti folosi 'actiunile de IO' si ca niste instructiuni si ca niste date. Le puteti plasa pe liste pe arbori sau pe alte structuri, puteti parcurge cum doriti lista sau arborele si construi DINAMIC, din mers, o actiune de IO compusa. Aceasta~ actriune numita main este executata cand rulati programul.
   
 
..si lista ar mai putea continua. Exista vreo 37 de motive care fac deja subiectul unor pagini web. Cautati cu un motor de cautare cele 37 de motive pro Haskell.
 
..si lista ar mai putea continua. Exista vreo 37 de motive care fac deja subiectul unor pagini web. Cautati cu un motor de cautare cele 37 de motive pro Haskell.
   
  +
<center>
 
 
http://www.haskell.org/sitewiki/images/2/2c/BannerProLinuxAndHaskell.gif
 
http://www.haskell.org/sitewiki/images/2/2c/BannerProLinuxAndHaskell.gif
   

Latest revision as of 19:42, 27 October 2009

Haskell - Un limbaj functional pur

Contactul cu un limbaj de programare nou naste intrebari, mai ales cand este vorba de un limbaj atat de inovator. Cea mai buna cale de a va familiariza cu Haskell este sa conversati cu un interpretor, cum este Hugs. Sau sa folositi GHC si sa conversati cu GHCi (GHC Interactiv).

De ce numim limbajul Haskell un limbaj functional ?

Deoarece spre deosebire de limbajele imperative care manipuleaza practic DATE sub forma de numere intregi sau valori codate prin numere intregi (caractere, stringuri,pointeri), limbajele functionale manipuleaza FUNCTII codate prin lambda expresii.(Iar daca limbajul functional e compilat sunt codate prin combinatori, dar sa nu intram acum in detalii.) Cum multimea functiilor este mai bogata decat cea a numerelor intregi (are un cardinal mai mare) asemenea limbaje sunt mult mai expresive.

La nivel pragmatic, il puteti vedea pe orice limbaj functional ca pe un manipulator de algoritmi, exprimati ca la orele de matematica elementara, cel mai adesea.

Exista, e important de stiut, o teorie matematica a lambda calculului. Se studiaza in cadrul cursului de Programare functionala.


Ce avantaje au asemenea limbaje:

- puteti scrie programe sigure, functiile din limbajul functional nefiind afectate de efecte externe, cum ar fi schimbari de variabile globale etc.

- puteti manipula algoritmi sub forma de functii. Se deschide astfel usa catre o serie de domenii incluzand printre ele "Algoritmii genetici" unele optimizari, "Sabloane de programare", "Inteligenta artificiala", "Sisteme adaptive" etc.

- putem modela procese care se combina intre ele, deoarece avem la dispozitie compunerea de functii.

- putem face verificari ale datelor folosind parsere modulare ale caror efecte / verificari asupra intrarilor se compun

- putem scrie algoritmi generici uramand ca functia/prelucrarea care lipseste sa fie furnizata ca parametru ulterior

- putem demonstra matematic corectitudinea functiilor scrise, daca se cere asa ceva

- avem la dispozitie functii anonime, functii de unica intrebuintare. Aici limbajele traditionale sunt limitate.

- deoarece aplicarea functiilor asociaza la dreapta iar in cursul calculelor regulile de reducere se pot aplica in mai multe locuri din formula, evaluarea unei formule se poate face pe mai multe procesoare conlucrand ! Acest lucru califica limbajele functionale (bazate pe combinatori si/sau lambda calcul) printre limbajele din deceniul procesarii dual-core si/sau quad-core.

- in Haskell, limbaj functional pur, fara efecte laterale, functiile dau intotdeauna acelasi rezultat (da, chiar si functiile pentru I/O - vedeti monada de I/O) ceea ce permite garantarea calitatii software-ului !! Permite si demonstrarea calitatii lui !!

- puteti incapsula sabloane de programare in functii de ordin superior

- puteti lucra in stiluri cum sunt generic programming si monadic programming (cel putin in Haskell !)

- daca limbajul admite clase (Haskell admite, iar Lisp-ul nu) puteti defini clase in care datele manipulate sunt de fapt functii !!

- in Haskell, limbaj functional pur, puteti folosi 'actiunile de IO' si ca niste instructiuni si ca niste date. Le puteti plasa pe liste pe arbori sau pe alte structuri, puteti parcurge cum doriti lista sau arborele si construi DINAMIC, din mers, o actiune de IO compusa. Aceasta~ actriune numita main este executata cand rulati programul.

..si lista ar mai putea continua. Exista vreo 37 de motive care fac deja subiectul unor pagini web. Cautati cu un motor de cautare cele 37 de motive pro Haskell.


BannerProLinuxAndHaskell.gif

La facultate poti invata unul din cele mai productive limbaje: Haskell, limbajul in care programarea e ca un joc pe calculator.


Pagina indexata la indexul Categories:Ro


<= Inapoi la pagina principala Ro/Haskell.

<- Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'.