Difference between revisions of "Ro/Haskell"
m |
m |
||
Line 88: | Line 88: | ||
Exista si alte distributii Linux care includ Hugs sau mai puternicul GHC. | Exista si alte distributii Linux care includ Hugs sau mai puternicul GHC. | ||
De asemenea exista portari profesionale pe Solaris. | De asemenea exista portari profesionale pe Solaris. | ||
+ | * Ubuntu 6.06 include intre pachetele oferite prin site-urile distributiei si GHC. Nu l-am testat indeajuns incat sa-mi formulez o parere. Ideea de a descarca de pe un site si KDevelop si GHC la viteze mici (circa 10k/sec) nu surade nimanui.Promite totusi. | ||
== Biblioteca despre Haskell, Hugs si Limbaje Formale On Line == | == Biblioteca despre Haskell, Hugs si Limbaje Formale On Line == |
Revision as of 20:04, 31 January 2007
Limbajul functional succesor al LISP-ului, Scheme-ului si ML-ului !!!
Cel mai productiv limbaj functional ! (Pagina actualizata pe 28.ian.2007)
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, clasele fiind multimi de structuri algebrice (adica mai mult decat multimi de obiecte). Haskell este DEOSEBIT: El are o sintaxa bidimensionala (bazata pe notiunea de Layout) asa ca simpla aliniere corecta pe verticala va scuteste de paranteze ! Iar daca puneti un spatiu in PLUS nu e o greseala. 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. V-ati batut capul nu o data sa rescrieti rutinele de afisare ale unor structuri de date compuse (liste de arbori cu noduri perechi de ... samd) care se schimbau pe masura ce dezvoltati proiectul ? Ati refacut mereu functiile de comparatie pentru astfel de structuri de date compuse ? Folositi Haskell si adaugati declaratiilor de date "deriving Show" respectiv "deriving Eq" (Iar lista nu se opreste aici.) Haskell face automat restul si tipul nou creat capata din clipa declararii functiile de afisare sau comparare ce-i sunt necesare fara sa le scrieti dumneavoastra ! Dar le puteti rescrie daca nu va plac. Exista o multime de compilatoare si interpretoare pentru Haskell si sunt disponibile gratuit. Hugs e un interpretor bun pentru primele lectii de Haskell. GHC este un compilator pentru proiecte profesionale. Cititi va rog si paragraful despre: Interpretoare si compilatoare de Haskell disponibile, tot pe aceasta pagina. Apropos: Daca va intereseaza teoria automatelor si limbajelor formale sau metode de transcriere a structurilor de date dintr-un format in altul, Haskell este un instrument excelent. Un translator de la o sintaxa la alta se scrie uimitor de repede, in cateva ore. Ba chiar si un mic limbaj de programare ! Dar nu uitati mai inainte sa cititi ceva despre teoria limbajelor formale. Capitolul dedicat gramaticilor de tip 2 (Context Free Grammmars) din ierarhia lui Chomsky in primul rand dar si celelalte lucrari ale lui Noam Chomsky.
Despre Haskell dorim sa prezentam...
Aventura lansari comunitatii Ro-Haskell
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 Puteti descarca software si de pe pagina cu software din site-ul de prezentare a cartii "The Haskell School Of Expression" - Pagina cu link-uri de download.
Lucrari in limba romana
Carti in pregatire
Gasiti in sectiunea Capitole de manual a site-ului parti din DRAFT-ul unui manual despre Haskell si folosirea lui la scrierea unor translatoare utile in securizarea sistemelor on-line. Utilizati-le ca un set de lectii de initiere in Haskell desi unele capitole necesare (monade , I/O etc) nu sunt incluse. Erata si alte sugestii de imbunatatire... vom adauga poate cu alta ocazie.
Vestea proasta: Datorita felului cum se puncteaza asemenea activitati la Universitatea Bacau, impartind punctajul la numarul autorilor si netinind cont de valoarea cartii sau de faptul ca versiunea romaneasca a unei carti libere trebuie integral rescrisa probabil acest proiect va fi amanat ca fiind neprioritar. Pacat :(
Distributii Linux de Download apreciateLista urmatoare nu este nici pe departe completa.
este si o buna platforma pentru laboratorul de Sisteme de Calcul cu Linux si nici nu solicita PC-uri puternice.
Exista si alte distributii Linux care includ Hugs sau mai puternicul GHC. De asemenea exista portari profesionale pe Solaris.
Biblioteca despre Haskell, Hugs si Limbaje Formale On LineNici nu va inchipuiati cate materiale exista pe Internet. Voi incerca sa intretin o lista de carti si articole disponibile pe Internet, in format PDF sau macar sa indic pe cele mai valoroase.
3.1 The type 'Parser' de la pagina 47 3.2 Elementary parsers de la pagina 49 3.3 Parser combinator de la pagina 52 si mai departe... inclusiv 5.1 Finite state automata de la pagina 85 si urmatoarele Dan Popa, initiatorul comunitatii Haskell-Ro, doreste tuturor, atat cadrelor didactice care predau limbaje formale, limbaje functionale sau compilatoare cat si studentilor sai de la Universitatea Bacau care se pregatesc pentru examenul de la jumatatea lunii februarie 2007 (primul examen de Haskell din Romania) o lectura instructiva si cat mai placuta! |