Difference between revisions of "Practica interpretarii monadice"

From HaskellWiki
Jump to navigation Jump to search
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[[Image:Coperta5.jpg|left|Haskell - PIM]]
 
[[Image:Coperta5.jpg|left|Haskell - PIM]]
[[Category:Ro]]
+
[[Category:Ro]][[Category:ub.Ro]]
 
 
   
 
==. '''Stiri - Practica Interpretarii monadice''' ==
 
==. '''Stiri - Practica Interpretarii monadice''' ==
   
  +
'''10 ian 2009:''' Am raspuns si vom raspunde in continuare la intrebarile privind combinatorii de parsere si parserele modulare realizate cu ajutorul lor.
Septembrie 2009, ICMI-2, la Bacau: Cu ocazia intalnirii informaticienilor si matematicienilor de la Bacau a fost prezent si editorul nostru Matrix Rom, cu
 
  +
Vedeti la: [[Intrebari despre combinatorii de parsere]]
  +
  +
'''16 dec 2009:'''
  +
[[O corectura minora in capitolul 6 din Practica interpretarii monadice]] puteti face de azi, ca pregatire a lectiilor viitoare. Dati Click pe inceputul randului ca sa vedeti ce si cum.
  +
  +
'''2009 decembrie 12''' In aceasta saptamana studentii de la Univ. din Bacau au lucrat dupa volumul Practica Interpretarii Monadice la implementarea de parsere modulare. Cu aceasta ocazie am revizuit si codul din carte, descoperind unele [[Sfaturi practice]] care ar trebui adresate cititorilor capitolului al 5-lea.
  +
  +
'''2009, decembrie 1-4''' In aceasta saptamana studentii de la Univ. Vasile Alecsandri din Bacau au studiat parserele modulare monadice din monada parserelor, dupa aceasta carte. Cu aceasta ocazie, discutand cu ei, am descoperit o eroare de redactare, un rand din teorie fusese copiat mai jos cu copy-paste si necorectat, astfel ca apare duplicat. Programul, codul sursa este insa corect. Vedeti [[Erata volumului Practica Interpretarii Monadice]]
  +
  +
'''2009, octombrie 24''' Volumul, (adaugit incat sa aiba 9 capitole si istoricul domeniului adaugat) a fost prezentat ca teza de doctorat la IOSUD UAIC. Prin vocea domnului prof. Dorel Lucanu, care in extrasul de P.V. confunda [[compilatoarele]] cu [[combinatorii]], s-a incercat respingerea tezei. Respingerea ceruta la vot nu a fost acceptata de catedra, fiind votata doar de o minoritate. Materialul filmat al votului este disponibil la cerere.
  +
 
'''2009 Septembrie''', ICMI-2, la Bacau: Cu ocazia intalnirii informaticienilor si matematicienilor de la Bacau a fost prezent si editorul nostru Matrix Rom, cu
 
un stand de carte care includea si acest volum despre Haskell. Vedeti in [http://www.haskell.org/haskellwiki/Imagini arhiva cu imagini.]
 
un stand de carte care includea si acest volum despre Haskell. Vedeti in [http://www.haskell.org/haskellwiki/Imagini arhiva cu imagini.]
   
Line 16: Line 28:
   
 
==. Volumul '''Practica interpretarii monadice''' ==
 
==. Volumul '''Practica interpretarii monadice''' ==
... isi propune sa prezinte aplicarea cunostintelor de limbaje formale (gramatici in special dar si semantica monadica) la constructia interpretoarelor. Se folosesc [[monade]] scrise in [[Haskell]]: O monada a parserelor si una cu Stari si IO. [http://haskell.org/sitewiki/images/b/b3/RecenzieDanPopa.pdf Citi o recenzie aici.]
+
... isi propune sa prezinte aplicarea cunostintelor de limbaje formale (gramatici in special dar si semantica monadica) la constructia interpretoarelor. Se folosesc [[monade]] scrise in [[Haskell]]: O monada a parserelor si una cu Stari si IO. [http://haskell.org/wikiupload/b/b3/RecenzieDanPopa.pdf Citi o recenzie aici.]
 
Se adreseaza constructorilor de limbaje, in special constructorilor de limbaje de scripting si filtre pentru Web, acele programe care primesc o intrare structurata conform unor specificatii si produc un output text.
 
Se adreseaza constructorilor de limbaje, in special constructorilor de limbaje de scripting si filtre pentru Web, acele programe care primesc o intrare structurata conform unor specificatii si produc un output text.
Materialele au fost folosite la [[Universitatea Bacau]] in cadrul laboratoarelor de Limbaje Formale in anul 2006. (Link-urile rosii sunt pagini in pregatire, nu dati click pe ele.)
+
Materialele au fost folosite la [[Universitatea Bacau]] in cadrul laboratoarelor de Limbaje Formale in anul 2006. (Link-urile gri sunt pagini in pregatire, nu dati click pe ele.)
 
Materialele asociate cartii au fost prezentate si la Congresul ICMI45.
 
Materialele asociate cartii au fost prezentate si la Congresul ICMI45.
   
 
==. '''Capitolele cartii contin ''' ==
 
==. '''Capitolele cartii contin ''' ==
 
<br>- O clasificare a interpretoarelor care ne permite sa alegem tipul interpretoarelor pe care le vom implementa
 
<br>- O clasificare a interpretoarelor care ne permite sa alegem tipul interpretoarelor pe care le vom implementa
<br>- [http://www.haskell.org/sitewiki/images/b/b1/Back-End.pdf Un back-end monadic. <Download>]
+
<br>- [http://www.haskell.org/wikiupload/b/b1/Back-End.pdf Un back-end monadic. <Download>]
 
<br>- Parserele modulare pentru expresiile din limbaj. Gramatica expresiilor.
 
<br>- Parserele modulare pentru expresiile din limbaj. Gramatica expresiilor.
 
<br>- Parserele modulare pentru comenzile din limbaj si gramatica lor.
 
<br>- Parserele modulare pentru comenzile din limbaj si gramatica lor.
Line 44: Line 56:
   
 
[[Image:Download2.gif|left| Download ]]
 
[[Image:Download2.gif|left| Download ]]
* [http://www.haskell.org/sitewiki/images/c/cd/Pr_Int_2_DRAFT-Ex-Cap5-o-pg.pdf <Download>] [http://www.haskell.org/sitewiki/images/c/cd/Pr_Int_2_DRAFT-Ex-Cap5-o-pg.pdf Descarcati o pagina cu Exercitii din Cap 5 - Draft din 26 dec 2007]
+
* [http://www.haskell.org/wikiupload/c/cd/Pr_Int_2_DRAFT-Ex-Cap5-o-pg.pdf <Download>] [http://www.haskell.org/wikiupload/c/cd/Pr_Int_2_DRAFT-Ex-Cap5-o-pg.pdf Descarcati o pagina cu Exercitii din Cap 5 - Draft din 26 dec 2007]
* [http://www.haskell.org/sitewiki/images/b/b1/Back-End.pdf <Download>] [http://www.haskell.org/sitewiki/images/b/b1/Back-End.pdf Draft-ul primei versiuni a primului capitol.] Un asemnea Back-End monadic este explicat in capitolul DOI al cartii finalizate.. Back-End-ul acesta l-am folosit in cadrul lucrarilor de laborator pentru a putea rula programele reprezentate prin arbori sintactici.
+
* [http://www.haskell.org/wikiupload/b/b1/Back-End.pdf <Download>] [http://www.haskell.org/wikiupload/b/b1/Back-End.pdf Draft-ul primei versiuni a primului capitol.] Un asemnea Back-End monadic este explicat in capitolul DOI al cartii finalizate.. Back-End-ul acesta l-am folosit in cadrul lucrarilor de laborator pentru a putea rula programele reprezentate prin arbori sintactici.
* Extra: [http://www.haskell.org/sitewiki/images/8/8d/Ro-Haskell-Istoric-PR_INT_17_fara_TEZA.pdf <DOWNLOAD> Istoria (probabil incompleta) a studiilor privind Interpretarea monadica.] Este cam ceea ce merita citit inainte de a scrie o carte cum este cea de mai sus.
+
* Extra: [http://www.haskell.org/wikiupload/8/8d/Ro-Haskell-Istoric-PR_INT_17_fara_TEZA.pdf <DOWNLOAD> Istoria (probabil incompleta) a studiilor privind Interpretarea monadica.] Este cam ceea ce merita citit inainte de a scrie o carte cum este cea de mai sus.
   
   
Line 90: Line 102:
 
==. Recenzie ==
 
==. Recenzie ==
   
O recenzie a cartii a fost adaugata pe pagina web.[http://haskell.org/sitewiki/images/b/b3/RecenzieDanPopa.pdf Citi o recenzie aici.]
+
O recenzie a cartii a fost adaugata pe pagina web.[http://haskell.org/wikiupload/b/b3/RecenzieDanPopa.pdf Citi o recenzie aici.]
   
 
==. Biblioteci universitare sau centre universitare in care a ajuns cartea ==
 
==. Biblioteci universitare sau centre universitare in care a ajuns cartea ==
 
Desi nu am urmarit in mod special si nici nu am cerut de la editor
 
Desi nu am urmarit in mod special si nici nu am cerut de la editor
 
o lista de clienti, totusi volumul poate fi gasit, a ajuns sau a fost cerut in urmatoarele centre universitare;
 
o lista de clienti, totusi volumul poate fi gasit, a ajuns sau a fost cerut in urmatoarele centre universitare;
Bacau, Iasi, Bucuresti, Cluj - la unele cadre didactice - , Baia Mare, Brasov (?). Lista este in crestere.
 
   
  +
*Bacau,
  +
*Iasi,
  +
*Bucuresti,
  +
*Cluj - la unele cadre didactice - ,
  +
*Baia Mare,
  +
*Brasov,
  +
*Sibiu - la Univ.Romano-Germana de la Sibiu, la Calculatoare, am trimis un exemplar.
  +
*Arad. Lista este in crestere.
  +
  +
  +
==. Cartea P.I.M. in expozitii de carte ==
  +
  +
Ed. Matrix Rom ne-a sprijinit in promovarea conceptelor interpretarii monadice,
  +
iar volumul "Practica Interpretarii Monadice" a aparut la standurile editorului si la expozitiile de carte ocazionate de conferintele de matematica si informatica. Vedeti sectiunea [[Imagini]] .
 
----
 
----
 
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
Pagina indexata la indexul [[Category:Ro]] [http://www.haskell.org/haskellwiki/Category:Ro Categories:Ro]
 
----
 
----
  +
Linkuri reactualizate dupa mutrarea site-ului. OK
  +
----
  +
 
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
 
[http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la pagina principala Ro/Haskell. ]<br> <br>
 
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'. ]
 
[http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la inceputul paginii 'Intrebarile incepatorului Ro/Haskell'. ]

Latest revision as of 06:47, 3 June 2011

Haskell - PIM


. Stiri - Practica Interpretarii monadice

10 ian 2009: Am raspuns si vom raspunde in continuare la intrebarile privind combinatorii de parsere si parserele modulare realizate cu ajutorul lor. Vedeti la: Intrebari despre combinatorii de parsere

16 dec 2009: O corectura minora in capitolul 6 din Practica interpretarii monadice puteti face de azi, ca pregatire a lectiilor viitoare. Dati Click pe inceputul randului ca sa vedeti ce si cum.

2009 decembrie 12 In aceasta saptamana studentii de la Univ. din Bacau au lucrat dupa volumul Practica Interpretarii Monadice la implementarea de parsere modulare. Cu aceasta ocazie am revizuit si codul din carte, descoperind unele Sfaturi practice care ar trebui adresate cititorilor capitolului al 5-lea.

2009, decembrie 1-4 In aceasta saptamana studentii de la Univ. Vasile Alecsandri din Bacau au studiat parserele modulare monadice din monada parserelor, dupa aceasta carte. Cu aceasta ocazie, discutand cu ei, am descoperit o eroare de redactare, un rand din teorie fusese copiat mai jos cu copy-paste si necorectat, astfel ca apare duplicat. Programul, codul sursa este insa corect. Vedeti Erata volumului Practica Interpretarii Monadice

2009, octombrie 24 Volumul, (adaugit incat sa aiba 9 capitole si istoricul domeniului adaugat) a fost prezentat ca teza de doctorat la IOSUD UAIC. Prin vocea domnului prof. Dorel Lucanu, care in extrasul de P.V. confunda compilatoarele cu combinatorii, s-a incercat respingerea tezei. Respingerea ceruta la vot nu a fost acceptata de catedra, fiind votata doar de o minoritate. Materialul filmat al votului este disponibil la cerere.

2009 Septembrie, ICMI-2, la Bacau: Cu ocazia intalnirii informaticienilor si matematicienilor de la Bacau a fost prezent si editorul nostru Matrix Rom, cu un stand de carte care includea si acest volum despre Haskell. Vedeti in arhiva cu imagini.

Va intereseaza Informatica ? Puteti studia practica interpretarii (cu tehnici monadice) daca va inscrieti sau va transferati dosarul la Universitatea din Bacau la Facultatea de Stiinte http://stiinte.ub.ro/ Tel secretariat: 02 345 16 345.

Acei viitori matematicieni interesati mai mult de teoria interpretarii monadice (capitol din cursul de teoria categoriilor) pot sa se inscrie / transfere la Univ. Al . I.Cuza Iasi, la Fac. de Matematica. Am realizat si un Istoric al interpretarii monadice,supliment al cartii, ca parte a tezei de doctorat.

ISBN: Am primit de la Editura Matrix Rom numarul ISBN 978-973-755-417-8 propus pentru aceasta carte. Asa ca acum stiti care este editorul care a devenit Editor oficial al Grupului Ro/Haskell.

. Volumul Practica interpretarii monadice

... isi propune sa prezinte aplicarea cunostintelor de limbaje formale (gramatici in special dar si semantica monadica) la constructia interpretoarelor. Se folosesc monade scrise in Haskell: O monada a parserelor si una cu Stari si IO. Citi o recenzie aici. Se adreseaza constructorilor de limbaje, in special constructorilor de limbaje de scripting si filtre pentru Web, acele programe care primesc o intrare structurata conform unor specificatii si produc un output text. Materialele au fost folosite la Universitatea Bacau in cadrul laboratoarelor de Limbaje Formale in anul 2006. (Link-urile gri sunt pagini in pregatire, nu dati click pe ele.) Materialele asociate cartii au fost prezentate si la Congresul ICMI45.

. Capitolele cartii contin


- O clasificare a interpretoarelor care ne permite sa alegem tipul interpretoarelor pe care le vom implementa
- Un back-end monadic. <Download>
- Parserele modulare pentru expresiile din limbaj. Gramatica expresiilor.
- Parserele modulare pentru comenzile din limbaj si gramatica lor.
- Combinarea front-end-ului interpretorului cu back-end-ul
- Adaugarea de instructiuni complexe care sunt abordate cu tehnici semantice (prin modificarea back-end-ului monadic)
- Adaugarea de instructiuni complexe care sunt implementate cu tehnici sintactice (rescriere de arbori)
Capitol suplimentar (scris in timpul recenzarii cartii formate de primele 7 capitole)
- Adaugarea functiilor anonime (cam ca in Ruby) sub forma de lambda expresii (cam ca in Haskell si nu numai)


==. Cartea mai include :==

- Cuvantul inainte bilingv (en/ro)
- Exercitii si probleme la fiecare capitol
- Capturi de ecran ilustrand functionarea programelor
- Anexe
- Sursele complete,
- O biblioteca de combinatori de parsere comentata
- Un mini glosar de notiuni prezentate

Download


. Multumiri

Multumesc tuturor celor care s-au implicat indirect in realizarea acestei carti dand un pretios ajutor: editorului care ne sprijina, referentilor, membrilor familiei mele, studentilor care au pus intrebari, personalului tehnic care a asigurat comunicatiile digitale atat la Haskell.org cat si la Bacau, intreagii comunitati Haskell si bineinteles (last but not least) lui Simon P.J. Thank you Simon ! Thank you, everybody !


. De unde puteti procura cartea

De pe site-ul editorului nostru Matrix Rom http://www.matrixrom.ro Click aici ! E-mail: office@matrixrom.ro


. Nota

Autorul recunoaste ca nu a pus in carte tot ceea ce ar fi dorit cititorii si exact cum ar fi dorit cititorii. Dar promite sa adauge si pe web materiale pe masura ce le cereti si daca sunt disponibile sub o licenta libera. un Istoric al interpretarii monadice,supliment al cartii, ca parte a tezei de doctorat.

. Foreword of the book (en)

I am delighted to introduce this book on the use of monads in Haskell as a way of structuring interpreters. In the early days, Haskell's most distinctive feature was lazy evaluation. Laziness forced us to take a pure approach to input/output, which meant that Haskell's I/O was initially rather weak. This weakness ultimately proved a strength, however, because it led us to the discovery that monads were not just an abstract mathematical concept, but were immediately applicable as a powerful program structuring mechanism.

Monadic programming is not just to do with input/output: it is much more powerful. That is why I am pleased to see this book, which describes in some detail how to write a language interpreter using a monadic approach.

In retrospect, the discovery of monads as a practical programming pattern is one of Haskell's most substantial contributions to the world of programming -- and it is one that you will share if you work through this book.

I am also very happy to see Haskell growing in popularity among our brothers and sisters in Eastern Europe, and in Romania in particular. Enjoy!

Simon P.J.

. Cuvantul inainte al cartii (ro)

Am bucuria de a scrie cuvantul de prezentare al acestei carti dedicate celor care utilizeaza monade pentru a structura interpretoarele scrise in Haskell. La inceputurile sale, Haskell avea ca trasatura distinctiva evaluarea intarziata (lazy evaluation). Aceasta ne-a fortat sa procedam la o alta abordare, pura, a operatiilor de IO, pasind timid pe un nou drum. Aparenta slabiciune s-a dovedit pina la urma o sursa de forta ascunsa fiindca cercetarile ne-au condus pe alt drum la conceptul matematic de monada, stiut ca un concept abstract dar care s-a dovedit imediat aplicabil devenind o tehnica inovatoare de structurare a programelor.

Programarea monadica nu inseamna doar utilizarea operatiilor de IO: ea este un instrument general foarte puternic. De aceea sunt incantat sa vad aparand aceasta carte care descrie in detaliu cum se scrie un interpretor de limbaj utilizand stilul monadic de programare.

In rezumat, descoperirea monadelor drept un sablon practic de programare este una din cele mai mari contributii aduse de Haskell in lumea limbajelor -- si aceasta descoperire v-o impartasim oferindu-va spre studiu si folosinta aceasta carte.

Sunt bucuros de asemenea deoarece descopar Haskell-ul crescand in popularitate printre acei si acelea care, lucrand cu el in Estul Europei si in particular in Romania au intrat astfel in aceasta mare familie. Bucurati-va de intrarea in aceasta familie.

Simon P.J.

. Recenzie

O recenzie a cartii a fost adaugata pe pagina web.Citi o recenzie aici.

. Biblioteci universitare sau centre universitare in care a ajuns cartea

Desi nu am urmarit in mod special si nici nu am cerut de la editor o lista de clienti, totusi volumul poate fi gasit, a ajuns sau a fost cerut in urmatoarele centre universitare;

  • Bacau,
  • Iasi,
  • Bucuresti,
  • Cluj - la unele cadre didactice - ,
  • Baia Mare,
  • Brasov,
  • Sibiu - la Univ.Romano-Germana de la Sibiu, la Calculatoare, am trimis un exemplar.
  • Arad. Lista este in crestere.


. Cartea P.I.M. in expozitii de carte

Ed. Matrix Rom ne-a sprijinit in promovarea conceptelor interpretarii monadice, iar volumul "Practica Interpretarii Monadice" a aparut la standurile editorului si la expozitiile de carte ocazionate de conferintele de matematica si informatica. Vedeti sectiunea Imagini .


Pagina indexata la indexul Categories:Ro


Linkuri reactualizate dupa mutrarea site-ului. OK


<= Inapoi la pagina principala Ro/Haskell.

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