Difference between revisions of "Ro/Haskell"
Line 6: | Line 6: | ||
</center> |
</center> |
||
<br> |
<br> |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | == Introducere == |
||
Haskell este un limbaj de uz general, din categoria limbajelor functionale pure (fara instructiuni imperative sau producatoare de efecte laterale). Foloseste Lazy Evaluation.Beneficiaza de un sistem de tipuri revolutionar, cu tipuri polimorfice si clase de tipuri. Permite programarea cu clase si instante de clase definite utilizator. Are o sintaxa bidimensionala (bazata pe notiunea de Layout). Sintaxa bidimensionala face programele mult mai clare decat echivalentele lor in LISP (netipizat si cu multe paranteze: LISP = Limbajul InSuportabilelor Paranteze) sau cele in Scheme ori ML. Alte plusuri sunt tipizarea stricta, existenta [[monade]]lor si a do-notatiei (o scriere cvasi imperativa posibila intr-un limbaj functional pur) precum si existenta listelor infinite si a "multimilor ordonate" definite descriptiv, numite in manualele de Haskell (in limba engleza) "list comprehensions". |
Haskell este un limbaj de uz general, din categoria limbajelor functionale pure (fara instructiuni imperative sau producatoare de efecte laterale). Foloseste Lazy Evaluation.Beneficiaza de un sistem de tipuri revolutionar, cu tipuri polimorfice si clase de tipuri. Permite programarea cu clase si instante de clase definite utilizator. Are o sintaxa bidimensionala (bazata pe notiunea de Layout). Sintaxa bidimensionala face programele mult mai clare decat echivalentele lor in LISP (netipizat si cu multe paranteze: LISP = Limbajul InSuportabilelor Paranteze) sau cele in Scheme ori ML. Alte plusuri sunt tipizarea stricta, existenta [[monade]]lor si a do-notatiei (o scriere cvasi imperativa posibila intr-un limbaj functional pur) precum si existenta listelor infinite si a "multimilor ordonate" definite descriptiv, numite in manualele de Haskell (in limba engleza) "list comprehensions". |
||
Productivitatea programarii in Haskell este net superioara altor limbaje, un algoritm [[Quicksort]] scriindu-se in doar 3-4 linii de program nu in 30-40 ca in C sau C++. Dati un click pe link-ul [[Quicksort]] pentru a-l vedea. |
Productivitatea programarii in Haskell este net superioara altor limbaje, un algoritm [[Quicksort]] scriindu-se in doar 3-4 linii de program nu in 30-40 ca in C sau C++. Dati un click pe link-ul [[Quicksort]] pentru a-l vedea. |
||
− | |||
Unul din motivele pentru care Haskell este atat de productiv este posibilitatea de a lucra cu functii de nivel superior, polimorfice, operand inclusiv pe structuri de date definite inductiv. Acele structuri de date beneficiaza de functii de afisare si comparare (si nu numai) generate automat prin "deriving" ori definite de utilizator. |
Unul din motivele pentru care Haskell este atat de productiv este posibilitatea de a lucra cu functii de nivel superior, polimorfice, operand inclusiv pe structuri de date definite inductiv. Acele structuri de date beneficiaza de functii de afisare si comparare (si nu numai) generate automat prin "deriving" ori definite de utilizator. |
||
− | Exista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit. Cititi |
+ | Exista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit. Cititi si paragraful despre: Interpretoare si compilatoare de Haskell disponibile, tot pe aceasta pagina. |
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | * [http://www.haskell.org/sitewiki/images/9/97/De_ce_Haskell.pdf De ce Haskell ?]O prezentare a limbajului Haskell din punctul de vedere al unui specialist in Limbaje Formale. |
+ | * [http://www.haskell.org/sitewiki/images/9/97/De_ce_Haskell.pdf De ce Haskell ?]O prezentare a limbajului Haskell din punctul de vedere al unui specialist in Limbaje Formale. Este un capitol dintr-o viitoare carte de Dan Popa. si are doar 166643 bytes. [http://www.haskell.org/sitewiki/images/9/97/De_ce_Haskell.pdf - download "De ce Haskell ?"] |
* [[ Intrebarile incepatorului ]] - pentru cei care aud prima oara de Haskell |
* [[ Intrebarile incepatorului ]] - pentru cei care aud prima oara de Haskell |
||
⚫ | |||
− | * Doriti un articol despre Haskell ? Ati auzit de Haskell ? - Sondaj de pe site-ul revistei MyLinux actualmente comasata cu MyHardware. [http://www.myl.ro/forum/index.php?showtopic=1170 - Sondaj din 2005]. Pe scurt cateva pareri incurajatoare: |
||
+ | |||
⚫ | * [http://haskell.org/hoogle Hoogle,Motorul de cautare pentru functii Haskell din diversele biblioteci se afla aici, la http://haskell.org/hoogle.] Folositi [http://haskell.org/hoogle Hoogle] pentru a invata despre noi functii de biblioteca si pentru a descifra programe. <br> http://www.haskell.org/hoogle/res/hoogle_large.png <br> Puteti cauta atat dupa denumirea functiei cat si dupa tipul acesteia. Exemple: cautati "map" sau "(a -> b) -> [a] -> [b]" ori, de ce nu, chiar tipuri cu preconditii "Ord a => [a] -> [a]". Rezultatele sunt in engleza :( |
||
+ | |||
+ | |||
+ | * Introducerea limbajului Haskell in presa de specialitate informatica fie ca era vorba despre reviste sau carti s-a dovedit o adevarata aventura. Editurile de exemplu declarau doar ca sunt interesate de cartile despre noile limbaje dar dore in principal sa va vanda doar carti despre HTML si C. Am primit un ajutor nesperat din partea revistei MyLinux care a initiat primul sondaj din Romania privind intereul cititorilor pentru un limbaj atat de nou si productiv. Au inceput cu: Doriti un articol despre Haskell ? Ati auzit de Haskell ? - Sondajul exista inca pe site-ul revistei MyLinux actualmente comasata cu MyHardware. [http://www.myl.ro/forum/index.php?showtopic=1170 - Sondaj din 2005]. Pe scurt cateva pareri incurajatoare, limbajul in care sunt exprimate apartine autorilor lor: |
||
** Opinie: "Unii spun ca e chiar mai "object-oriented" decat Python.O prezentare a acestuia intr-un limbaj accesibil tuturor ar fi interesanta." |
** Opinie: "Unii spun ca e chiar mai "object-oriented" decat Python.O prezentare a acestuia intr-un limbaj accesibil tuturor ar fi interesanta." |
||
** Opinie: "Da, e un limbaj destul de mişto. Chiar ar fi util pentru cei care n-au auzit de el." |
** Opinie: "Da, e un limbaj destul de mişto. Chiar ar fi util pentru cei care n-au auzit de el." |
||
** Opinie: "Pare interesant , din cate stiu compilatorul de Perl6 este scris in haskel. [http://www.pugscode.org/ ]" |
** Opinie: "Pare interesant , din cate stiu compilatorul de Perl6 este scris in haskel. [http://www.pugscode.org/ ]" |
||
⚫ | |||
⚫ | * [http://haskell.org/hoogle Hoogle,Motorul de cautare pentru functii Haskell din diversele biblioteci se afla aici, la http://haskell.org/hoogle.] Folositi [http://haskell.org/hoogle Hoogle] pentru a invata despre noi functii de biblioteca si pentru a descifra programe. <br> http://www.haskell.org/hoogle/res/hoogle_large.png <br> Puteti cauta atat dupa denumirea functiei cat si dupa tipul acesteia. |
||
== Utilizarea ca instrument de realizare a interpretoarelor == |
== Utilizarea ca instrument de realizare a interpretoarelor == |
Revision as of 21:12, 11 January 2007
Limbajul functional succesor al LISP-ului, Scheme-ului si ML-ului !!!
Cel mai productiv limbaj functional !
IntroducereHaskell este un limbaj de uz general, din categoria limbajelor functionale pure (fara instructiuni imperative sau producatoare de efecte laterale). Foloseste Lazy Evaluation.Beneficiaza de un sistem de tipuri revolutionar, cu tipuri polimorfice si clase de tipuri. Permite programarea cu clase si instante de clase definite utilizator. Are o sintaxa bidimensionala (bazata pe notiunea de Layout). Sintaxa bidimensionala face programele mult mai clare decat echivalentele lor in LISP (netipizat si cu multe paranteze: LISP = Limbajul InSuportabilelor Paranteze) sau cele in Scheme ori ML. Alte plusuri sunt tipizarea stricta, existenta monadelor si a do-notatiei (o scriere cvasi imperativa posibila intr-un limbaj functional pur) precum si existenta listelor infinite si a "multimilor ordonate" definite descriptiv, numite in manualele de Haskell (in limba engleza) "list comprehensions". Productivitatea programarii in Haskell este net superioara altor limbaje, un algoritm Quicksort scriindu-se in doar 3-4 linii de program nu in 30-40 ca in C sau C++. Dati un click pe link-ul Quicksort pentru a-l vedea. Unul din motivele pentru care Haskell este atat de productiv este posibilitatea de a lucra cu functii de nivel superior, polimorfice, operand inclusiv pe structuri de date definite inductiv. Acele structuri de date beneficiaza de functii de afisare si comparare (si nu numai) generate automat prin "deriving" ori definite de utilizator. Exista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit. Cititi si paragraful despre: Interpretoare si compilatoare de Haskell disponibile, tot pe aceasta pagina. Despre Haskell dorim sa prezentam...
Utilizarea ca instrument de realizare a interpretoarelor
Interpretoare si compilatoare disponibile - pagini in englezaExista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit: Hugs (interpretor), GHC (compilator), Hellium (mediu de instruire) si altele. O serie de distributii Linux includ interpretorul Hugs (ex: Mandrake 10.0), altele il ofera pentru download de pe site-ul distributiei (ex: PC Linux OS 9). Unele permit instalarea imediata a interpretorului sau compilatorului de Haskell (ex: Suse 9.x functioneaza cu cele doua binare din distributia Mandrake 10.0).Iar lista nu se opreste aici. Mediul de dezvoltare Kdevelopment permite si realizarea de proiecte in Haskell (are chiar sablon de proiect inclus, pregatit) dar nu uitati sa instalati compilatorul GHC. Versiuni de WinHugs sunt de asemenea disponibile pe platforma Windows. Compilatorul Haskell GHC poate, cu ajutorul unui plug-in special sa lucreze impreuna cu mediul de dezvoltare ECLIPSE ! Nici Visual Studio-ul nu e uitat, exista versiuni in care se poate lucra cu Hasekll. Un instrument util lansat recent este Visual Haskell Lucrari in limba romana
Carti in pregatire
DRAFT-ul unui manual despre Haskell si folosirea lui la
Vestea proasta: Datorita felului cum se puncteaza asemenea |