Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Haskell
Wiki community
Recent changes
Random page
HaskellWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Ro/Haskell/Introducere
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== 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 defiinite utilizator, clasele fiind multimi de structuri algebrice (adica mai mult decat multimi de obiecte). Haskell permite nu numai sa ''scrii'' algoritmi ci sa si '''MANIPULEZI algoritmi''' - totul sub un control riguros al tipizarii inaccesibil in LISP. Doriti sa sumati sau sa integrati o functie ... banal. Exista un capitol din [[Introducere in Haskell 98 prin exemple]] disponibil printre acele [[Capitole de manual]]. *Doriti sa gasiti optimul unei functii oarecare ? Se rezolva. *Un algoritm genetic cauta optimul altui proces ? Simplu de realizat. *Doriti sa combinati semnificatiile unor fragmente de limbaj pentru a scrie un compilator sau interpretor ? Nimic mai simplu. Uitati-va la [[Proiecte]] si vedeti cum se scrie un soi de LISP pe nume Scheme in 48 de ore ([http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Scheme in 48 de ore - tutorial.]). In Pascal ati fi scris programe: In Haskell *manipulati programe, *operati cu programe, *combinati programe, *scrieti generatoare de programe sau *optimizatoare de functii/programe. Un program de Inteligenta artificiala combina comportamente simple intr-unul complex, inteligent ? Se programeaza imediat in Haskell. Si lista ar putea continua... Exista cel putin 37 de motive pentru a folosi Haskell ([[Ro/Haskell/MotiveProHaskell]]), in paginile web de limba engleza. 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 [[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. 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, la nevoie 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 la http://www.haskell.org/ -> Download. 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 cum este Limbajul Pseudocod [[Rodin]]. 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. Apropos de gramaticile lui Chomsky, bibliotecile de combinatori de parsere scrise in Haskell sunt mai puternice decat gramaticile independente de context, deoarece combinatorii de parsere sunt functii cu parametri. De exemplu limbajul "a la n, b la n, c la n" cat si limbajul cuvintelor duplicate pot fi usor acceptate de parsere create folosind combinatorii de parsere. Si sunt si imediat implementabile ca programe in Haskell. (Cititi din bibliografia din rubrica Mini-[[Biblioteca]].) ---- [http://www.haskell.org/haskellwiki/Ro/Haskell <= Inapoi la inceputul paginii principale Ro/Haskell. ]<br> <br> [http://www.haskell.org/haskellwiki/Intrebarile_incepatorului <'''-''' Inapoi la Intrebarile incepatorului Ro/Haskell. ]
Summary:
Please note that all contributions to HaskellWiki are considered to be released under simple permissive license (see
HaskellWiki:Copyrights
for details). If you don't want your writing to be edited mercilessly and redistributed at will, then don't submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!
Cancel
Editing help
(opens in new window)
Toggle limited content width