Personal tools

Programare Functionala - O introducere utilizand limbajul Haskell

From HaskellWiki

Revision as of 17:07, 14 March 2011 by Ha$kell (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Haskell - Un limbaj functional pur

Haskell este limbajul functional succesor al LISP-ului, Scheme-ului si ML-ului !!!
Haskell este cel mai productiv limbaj functional ! Este limbajul folosit de de autorii limbajului Perl 6 si ales de echipa Linspire.
V-am starnit curiozitatea ? Avem si o pagina cuprinzand Intrebarile incepatorului


Aici este o prezentare a cartii: Programare functionala - O introducere utilizand limbajul Haskell de Mihai Gontineac. Autorul ne-a promis cateva capitole pentru Download care vor apare pe site-ul dumnealui. Veti putea face download-ul si de aici. [Download ]


Pina atunci cititi Capitole de manual din cartea scrisa de Dan Popa, de la Universitatea Bacau. Puteti face Download de pdf.-uri cu Capitole de manual pentru studiu.


Programare functionala - O introducere utilizand limbajul Haskell

de Mihai Gontineac (Stire din 16.feb.2007)
Haskell-Gontineac-coperta-mica.jpg

Cartea semnata de domnul M.Gontineac si intitulata "Programare Functionala - O introducere utilizand limbajul Haskell" cuprinde:

pg 13-39 : Elemente de lambda calcul. Este matematica ce sta la baza limbajelor functionale. Un capitol fara varsta, etern valabil si de neomis de catre un matematician adevarat.

pg 41-47 : Istoria Haskell-ului. Utila, clara, documentata la zi.

pg 48-52 : Instalarea compilatorului GHC si rularea unui program folosind GHC.

pg 53-86 : Traducerea documentatiei Standard Prelude. O lista de circa 79 de functii buna si pentru a fi aratata in clasa, de la catedra. Circa 20 de linii / pagina cu un font mare, vizibil. Utila studentilor cu un eventual handicap in ceea ce priveste vederea sau purtatorilor de ochelari cu multe dioptrii.

pg 87 si urmatoarele...: Manualul de limbaj Haskell incepe practic aici. Primul punct il constituie notiunile despre aritmetica si operatori. Marii absenti remarcati (la prima citire): Operatorii `div` , `elem`, si ! Cuprinde:
- Aritmetica si operatori.
- Upluri.
- Liste, string-uri. show si read.
- Functii : map, filter, foldr. Salutam prezenta unui paragraf despre foarte utilul foldr. Nu-mi amintesc sa-l fi gasit pe foldl.
- Crearea fisierelor proprii.
- Reguli de layout.
- Functii (imperative!?!) cu if si case.
- Declaratii: let, where.

pg 103 si urmatoarele: Recursivitate.

pg 104: Factorialul scris IMPERATIV in limbajul C

pg 108: Fibonacci. Despre celebrul sir cu acelasi nume. Preluat dintr-un articol din care citam: "this is an example how we can improve the performance..."

pg 109: Exercitii. 2 ex.

... urmeaza I/O: si clasicul joc cu numere Guess.hs.

pg 115: "Unde este greseala ?" Clasicul program "askForWords" . (Se gaseste sau se gasea si pe Internet.)

pg 164-201: Anexa realizata de studentii domnului M.Gontineac. - Contine programe facute de studenti care treceau, nu usor, de la Pascal la Haskell :)
- stilul de programare este cel al programarii IMPERATIVE din Pascal-ul anilor '70-'80 pentru terminale consola in mod text.
- multe pagini de surse realizate cu copy si paste desi programarea functionala ar fi permis definirea unor functii in care partea diferita sa fie parametru.
- unele surse de program contin texte partial in engleza si partial in romana. Este un stil specific incepatorilor in programare.
- programele contin comentarii mari, enorme, adesea nejustificate.
- Copierea de texte cu copy , paste si replace ar trebui, repet, abandonata in favoarea folosirii functiilor cu mai multi parametri.
Anexa prezinta mai curand exemple cum sa NU programati in Haskell. Sau exemple care arata ca in Haskell se poate programa si in stilul din Pascal.

Autorul isi apreciaza extrem de corect si critic volumul scriind la pagina 10 "Lucrarea realizeaza o <<mica>> introducere in ceea ce se vrea modelul de programare functional. Dupa o scurta introducere in lambda calcul, adica fundamentul teoretic al acestui model de programare, vom incepe studiul posibilitatilor oferite de programarea functionala cu ajutorul limbajului Haskell." - Bineinteles ignoram ghilimelele ce incadreaza cuvantul "mica".

Nu cautati in carte: Un capitol despre monade desi sunt date exemple de programe care folosesc monada de I/O (atat de des comparata cu un cos ...) cat si un capitol despre vectori in Haskell ( dar la implementarea vectorilor Haskell nu exceleaza.) Poate ca este mai bine asa !?!

Concluzie: Este o carte pregatita sub presiunea timpului cerut de concursul pentru postul la care a candidat domnul M.Gontineac. De admirat turul de forta organizatorica al autorului care fara sa fie specialist in programarea in Haskell a mobilizat studentii, a tradus documentatia Standard Prelude, a cautat pe net exemple clasice si le-a tradus, a selectat teoria matematica si in final a asamablat o carte de peste 200 pagini (mai exact 206) . Dintre ele, manualul de limbaj Haskell se intinde cam intre paginile 87 - 163 (cu o mica intrerupere). Deci sunt circa 75 de pagini despre cum se poate programa in Haskell ce merita cu siguranta citite, separat de documentatia Standard Prelude.

Bibliografia: Include la punctul [10] celebra "The History of Haskell" publicata de ACM Press in 2007 si la punctul [13] G.Hutton, Programming in Haskell, Cambridge University Press (january 31,2007). Bibliografia nu contine nici un titlu despre Haskell in limba romana.


Pagina indexata la indexul Categories:Ro


<= Inapoi la inceputul paginii principale Ro/Haskell.

<- Inapoi la Intrebarile incepatorului Ro/Haskell.