Difference between revisions of "Rodin/FAQ"

From HaskellWiki
Jump to navigation Jump to search
Line 249: Line 249:
 
Ro/Haskell
 
Ro/Haskell
 
Facultatea de Stiinte,
 
Facultatea de Stiinte,
Univ din Bacau.
+
Univ. "Vasile Alecsandri" din Bacau.
 
 
"
 
"
  +
 
==. Ce cunostinte ar trebui sa aiba cineva ca sa utilizeze Limbajul Rodin ? ==
 
==. Ce cunostinte ar trebui sa aiba cineva ca sa utilizeze Limbajul Rodin ? ==
 
Minim: Deschiderea unei console Windows cu Run-> Command -> cmd
 
Minim: Deschiderea unei console Windows cu Run-> Command -> cmd
 
apoi tastarea unei linii de comenzi. Plus cateva cunostinte despre limbajul C cu care Rodin se aseamana. <br>
 
apoi tastarea unei linii de comenzi. Plus cateva cunostinte despre limbajul C cu care Rodin se aseamana. <br>
 
Mediu: C la un nivel didactic. Abilitatea de a intelege C-ul dincolo de cuvintele sale cheie. <br>
 
Mediu: C la un nivel didactic. Abilitatea de a intelege C-ul dincolo de cuvintele sale cheie. <br>
Maxim: C si lambda calcul, daca doriti sa exploatati puterea unor expresii speciale (lambda expresiile numite abstractii).La anumite versiuni Rodin 2009a-e.
+
Maxim: C si lambda calcul, daca doriti sa exploatati puterea unor expresii speciale (lambda expresiile numite abstractii).La anumite versiuni Rodin 2009a-e. Dar in rodin experiment Exp 12 nu sunt folosite.
   
 
==. De ce exemplele de pe lista de subtilitati sunt in engleza ? ==
 
==. De ce exemplele de pe lista de subtilitati sunt in engleza ? ==

Revision as of 17:52, 28 October 2009

. Intrebari despre Rodin

Cum se pronunta Rodin ? Raspuns: Ca si numele sculptorului Rodin sau ca RO Dan. Sau ca Pro Dan fara prima litera. Daca nu sunteti siguri, regulile ortografiei va permit sa-l pronuntati ca si cum l-ati citi litera cu litera: RO Din. Mi s-a spus si ca regionalismul rodin ar insemna dar facut unui copil, conform ritualului. (dar n-am verificat)

. Ce este Rodin ?

1.Pentru profesorul de informatica Rodin este un limbaj de programare imperativ, asemanator cu C-ul, destinat rularii de programe in pseudocod. Doriti un software care sa execute, pentru elevii dumneavoastra , programele scrise de ei in pseudocod ? Daca Da, Rodin este pentru dumneavoastra. Limbajul Rodin este foarte bun pentru invatat o serie de notiuni de algoritmistica, dupa parerea beta-testerilor nostri. Limbajul Rodin raspunde la intrebarea "Cum sa rulez pseudocod scris in limba româna, pe calculator, la lectiile de informatica de la liceu sau scoala generala, ori chiar la facultate ?" Limbajul pseudocod Rodin este rezultatul a 7 ani de studiu si cercetare universitara in teoria limbajelor modulare.

2.Pentru cercetatori si dezvoltatori Rodin este o Platforma de dezvoltare a limbajelor de programare modulare. Un veritabil Lego Sintactico-Semantic ce ne permite sa construim limbaje imbinand pur si simplu piesele lor. Daca aveti doua limbaje implementate in Rodin puteti dezvolta oricand pe oricare dintre ele adaugand imediat in el un modul din celalalt care implementeaz o instructiune, sau un operator sau altceva. Si nu numai atat. Deocamdata avem un numar relativ mic de piese ale acestui Lego dar producem asemenea piese in continuare. Urmariti adaugarea pieselor in limbaj in rubrica Rodin/Download.

. Sintaxa

Desi este putin depasita pagina sintxa o veti gasi aici Ro/Sintaxa Limbajului Rodin la http://www.haskell.org/haskellwiki/Ro/Sintaxa_Limbajului_Rodin).
Cele mai bune exemple si documentatii sunt in arhivele noi din Rodin/Download.

Limbajele din clasa C-ului, fie ca este vorba de limbaje pentru software de proiectare (Solid Works ??) fie ca este vorba de limbaje de programare sau limbaje de (web-)scripting au in general o sintaxa asemanatoare. Necazul este ca un incepator trebuie sa invete SIMULTAN si semnificatia instructiunilor - impreuna cu acele concepte fundamentale ascunse in spatele lor - si cuvintele englezesti cu care se scriu programele. Si asta stiind uneori doar romana, franceza sau rusa. Greselile devin in acest caz mult mai usor de facut.

Engleza3.JPG

Pentru a nu ajunge in situatia proiectantilor din imaginea de mai sus este recomandabil sa se predea intai conceptele in limba romana (sub forma de pseudocod), urmate de cuvintele cheie englezesti. Deoarece studentii si elevii pot protesta (pe drept cuvant) ca vin in laboratorul de informatica si fac pseudocod la tabla fara sa puna mina pe calculatoare (voi adauga link-ul ...) am realizat Limbajul Pseudocod Rodin, care rezolva aceasta problema. Si, bineinteles produce altele :)

.Cuvinte cheie folosite pentru instructiuni; operatori si exemple

Rodin 2009e, in curs de actualizare:

Secventa de instructiuni: { <expr>; .... <expr> ; } In seria de versiuni inceputa in vara 2009: ExperimentExpX am folosit ; drept SEPARATOR de instructiuni, deci inaintea ultimei acolade nu mai punem ; . Va dati seama unde trebuie modificat deoarece mesajul de erore spune "}" incorecta/ acolada neasteptata.

Atribuirea fie <name> = <expr>

fie <vect>[<exp>]=<exp>

Alternativa/Decizia/Conditionala: daca <expr> atunci <expr> altfel <expr> in teste ... daca <expr> atunci <expr>

Bucla cu test initial: cat timp (<expr>) <expr>

Bucla cu test final: executa <expr> atat cat (<expr>)

Bucla cu test de succes final: repeta <expr> pana cand <expr>

Observatie: Unele versiuni de Rodin (> v081 folosesc "pina" in loc de "pana"). Daca primiti o eroare la al doilea caracter din "pana" scrieti "pina" in loc.

Bucla cea mai generala: pentru (<exp>; <exp>; <exp>) <exp>

Operatia de citire: tasteaza <ident> este inlocuita de citeste <ident>

Tasteaza se va inlocui in versiunile superioare lui Rodin V08 cu "citeste". La acestea exista si o instructiune text "string" dedicata afisarii de texte. Dati un Find-Replace pe sursele Rodin vechi, pentru a le avea pregatite pentru noile versiuni.

Astfel avem:

citeste <ident> si citeste <vect>[<exp>]

Scrierea: scrie <expr>

text "string intre ghilimele format din cifre litere si spatii" (de la Rodin v081 inclusiv)

Functii anonime nerecursive: (\ <name> . <expr>) unde name e numele variabilei parametru formal

Aplicarea (asociaza la dreapta): <functie anonima> <expr>

Atribuirea are valoare: valoarea atribuita e si valoarea ei

{ fie y =2;
  fie x=100;
  cat timp (x>10)
    fie x=x-(fie y = 1);
  scrie x;
  scrie y;
}

Dar in seria Rodin Experiment din vara 2009 atribuirea este instructiune si nu expresie, deci nu mai are valoare. Nu mai mizati pe valoarea ei.

Operatori: + - * / % sunt implementati.

Comparatiile: > , < , == , != , sunt implementate. Iar de la Rodin ExperimentExp 10 din 12-14 aug 2009 sunt implementate si <= si >=. Un mic detaliu: Dupa <, > NU PUNETI SPATIU. S-a rezolvat de la Rodin ExperimentExp >= 11.

Negatia este implementata ca "!"

Sunt implementati Operatori logici SI , SAU , ! , &&, || Lipsesc inca: Operatori logici pe biti


. Se poate folosi la orele obisnuite de programare si algoritmistica ?

Da. Deoarece orele presupun predarea in pseudocod. Ori exact asta este Rodin, un software pentru rulat programele scrise in pseudocod. (Deocamdata o varianta limitata de pseudocod.) Nu e nevoie sa va ganditi la niste ore speciale la care sa se predea Rodin. Rodin nu este in esenta deosebit de limbajul pseudocod de manual, atata doar ca este ceva mai strict, cu o sintaxa ca a C-ului (acolade, ; etc) si obliga elevii sa fie mai atenti la detalii, atunci cand transcriu algoritmii pe calculator.

. Impresii despre Limbajul pseudocod Rodin

  • Domnule Profesor,
 Va multumesc.Colegii din invatamintul preuniversitar va vor fi recunoscatori.
 Cu prietenie,
 Prof. Vasile P. (Neamt)
  • . Programul va fi foarte bun pentru cei care vor sa inteleaga algoritmi si modul de gandire pentru a programa. Presupun ca in viitor vor fi adaugate: vectori si matrici :) Va urez mult succes cu programul. :) Si va ajut oricand aveti nevoie.
 A.C. absolvent informatica (Bacau)
  • Poate ar fi bine, cand aveti timp, sa ne chemati la o instruire.
Cu stima ,
Prof. Mihaela B. (Bacau)
  • [...] zilele astea "is legat de glie" dar imediat ce incepe scoala voi avea de lucru chiar cu aplicatia...
Prof. Mihai C. (Iasi)
  • Multumesc pentru informare si felicitari pentru demersul d-voastra, Am sa pomenesc studentilor mei despre Rodin, mai ales daca voi mai primi detalii si daca va ajunge in grupa FOSS. Mult succes !

Prof. Mihai J. (Cluj)

Va multumesc pentru interesul dumneavoastra domnule profesor M.J. Cod sursa comentat despre interpretoarele monadice modulare gasiti sau veti gasi in volumul [[Practica interpretarii monadice] Aici e pagina web a acestei carti:Practica interpretarii monadice. De asemenea o introducere in semanticile monadice modulare scrise in Haskell ati putea gasi in volumul Introducere in Haskell 98 prin exemple - dar la nivel studentesc. Sursele proiectului Rodin vor fi publicate, ma gandesc inca sub ce forma, poate in viitoarea carte Transformers - nu dati click ca nu e pagina gata.


Multumesc pe aceasta cale inca o data tuturor acelora care mi-au transmis impresiile lor despre limbajul pseudocod Rodin, asa cum este el astazi, (versiunile: Rodin ExperimentExp8 si 10, 12).


. De unde vine numele Rodin ?

Rodin, RoDin, Din Ro , Din România. Este un mic limbaj care vine din România, scris de un român pentru colegii sai profesori de liceu Români sau asistentii de la facultatile românesti, oriunde ar fi sau ar preda ei.

Daca aveti timp, explicati-mi denumirea acordata acestui produs. Confuzia cu numele sculptorului a fost dorita ori pur si simplu este intamplatoare? (intreaba Gabriella K.)

Pur si simplu incercam sa descriem un limbaj DIN ROmânia, printr-un cuvant. Dinro ar fi sunat ca intr-un serial de desene animate, mai ales daca-l uitam, pe R. Asa ca am schimbat ordinea. E drept ca nu e un nume inspirat ales, deoarece este imposibil sa-l gasiti cu Google sau Yahoo si deja mai exista la nivel European cel putin un proiect Rodin, din fericire finalizat.


. Ce aduce nou Rodin ?

Cuvinte cheie in limba româna, cateva inovatii in materie de expresii (admite si unele lambda expresii cu un parametru impreuna cu operatia de aplicare). Este primul interpretor modular de pseudocod care foloseste cuvinte cheie romanesti (din cate stiu).

. Ce mai ofera Rodin ?

O posibilitate de a vedea seria de atribuiri care au loc in timpul executiei programului (lansati-l cu switch-ul -mem). Liberatatea de a alege orice extensie pentru fisiere si orice editor pentru a scrie programe, chiar si Notepad-ul. Nu este nevoie sa declarati variabilele, cel putin deocamdata.

. Ce legatura este intre Rodin si Haskell

Rodin a fost scris in Haskell 98 si compilat cu GHC-ul.

. Unde gasesc pagina limbajului pseudocod Rodin ?

Intrati la www.haskell.org si cautati cu motorul de cautare din dreapta sus cuvinte cum ar fi: pseudocod, Rodin. Pe lista pagini apare pagina Rodin. Nu il puteti gasi cu Google ! Decat,poate, daca incercati "Limbaj pseudocod si cititi a treia pagina." Sau incercati sa cautati "Limbajul Pseudocod Rodin". Sau mergeti direct la http://www.haskell.org/haskellwiki/Rodin.

. De unde descarc ultima versiune Rodin ?

De la Rodin/Download. Cititi inainte si Rodin/News.

. Ce v-a determinat sa alegeti Haskell ca limbaj de implementare ?

Productivitatea sa fantastica. RodinV05-Ro a fost scris in circa 4 zile a cate 4 ore de munca, timp in care am facut si cercetare. Dar dupa cativa ani buni (7) de studii in domeniul constructiei compilatoarelor si interpretoarelor limbajelor de programare.

. De unde se poate obtine Rodin ?

Din rubrica "Rodin/Download", de la inceputul acestei pagini. De la un alt beta tester Rodin.

. Cine este autorul Rodin ?

Dan V.Popa. Actualmente, lucreaza la Facultatea de Stiinte de la Universitatea din Bacau..

. Cum arata cele mai scurte program in Rodin posibile ?

Unele dintre cele mai scurte programe, care fac totusi macar o prelucrare cu datele utilizatorului

De la Rodin ExperimentExp8 din august 2009 incolo, ExperimentExp10 "tasteaza" este inlocuit cu "citeste" iat ultimul ; din secventa { ... } de instructiuni nu mai este necesar, ba chiar este inutil.

{ citeste x;
  text "x este =";
  scrie x
}

sau altul

{ citeste x;
  fie x=x+1;
  text "x este =";
  scrie x
}


. Unde gasim alte exemple de programe in Rodin ?

Cele mai noi exemple sunt in arhivele care insotesc fiecare lansare de versiune Rodin. Aici vom posta ocazional Exemple de programe in Pseudocod Rodin imediat ce vin de la beta testeri si le verificam, in timpul anului scolar. Avem si o pagina: Ro/Rodin/Alte exemple la care mai avem de lucru. Ambele pagini sunt mai vechi, din 2008 si reflecta stadiul de atunci al evolutiei Rodin.

. Putem contribui la dezvoltarea Rodin ?

Daca stiti Haskell si extensiile sale, daca cunoasteti transformatori de monade, daca ati folosit parsere modulare, atunci da. Ca alternativa sper sa pot publica un Ghid al Dezvoltatorului Rodin din care un necunoscator al teoriei sa poata afla scrie totusi componente pentru Rodin. Alt mod de a contribui la dezvoltarea Rodin este sa scrieti pur si simplu programe in Rodin si sa le postati pe aceasta pagina sau sa mi le trimiteti prin e-mail. Ma oblig sa le verific inainte, daca nu sunt prea complicate sau prea multe. (Altfel n-as avea timp indeajuns pentru ele.)

. Faceti si instruire in privinta Rodin ?

Da,exista cerere. Deja a avut loc o prima intalnire cu acele cadre didactice interesate de Limbajul Pseudocod Rodin. Va mai fi probabil una in perioada de inceput a anului scolar dar sa nu anticipam.

. Pe ce notiuni se bazeaza Rodin ?

Pe notiuni de teoria categoriilor, monade, semantici monadice modulare si altele despre care am scris mai sus. Dar aceste aspecte sunt transparente pentru utilizator.

. Ar putea un elev de liceu sa programeze in limbajul Rodin sau sa fie beta tester ?

Cu siguranta. Limbajul a fost inventat tocmai cu acest gand in minte, sa fie accesibil elevilor si profesorilor incepatori. Dar totusi sa fie suficient de strict ca sa te oblige sa deprinzi disciplina programarii. Si suficient de expresiv ca sa ilustreze clar notiunile programarii structurate.

. Ce are de facut un beta tester Rodin ?

Daca ati dori sa deveniti beta tester Rodin si sa experimentati limbajul la primele ore de programare v-as trimite urmatoarea scrisoare:

" Stimate domnule/doamna Profesor

Privitor la lectiile de clasa a IX-a folosind Rodin iata, pe scurt, ce ar fi de facut:

Sa programati intr-un fel de pseudocod - caci sa ceva este Rodin - mici programe care fac calcule cu numere intregi. Software-ul vi-l ofer gratuit. Va trimit si o mica documentatie si un pachet de programe pentru lectii. Programele dumneavoastra care merg va rog sa mi le trimiteti cu mentiunea ca sunt bune si v-au iesit cum va asteptati. Cele care nu va ies cum va asteptati va rog sa mi le trimiteti (totusi) ca sa verific daca este corect implementat limbajul. Pseudocodul propus este un fel de mini C, fara declaratii, doar cu intregi si vectori (deocamdata) si e scris cu instructiuni in limba romana. Daca simtiti nevoia unor corecturi sau adaugiri la limbaj, va rog sa imi spuneti, astfel pot sa continui sa-l dezvolt.

Banuiesc ca aveti exemple de programe in pseudocod, pentru lectii, nu-i asa ? Trebuiesc doar scrise cu un vocabular anume, folosind cuvinte romanesti, fara declaratii.

Iata niste exemple minuscule (pentru versiuni mai noi decat Rodin V08, inclusiv):

Ex: {citeste x; scrie x;}

Ex2: {citeste x; fie x=x+1; scrie x;}

Atentie la versiunile mai noi: Ultimul ; din secventa este scos din sintaxa.

Ex: {citeste x; scrie x}

Ex2: {citeste x; fie x=x+1; scrie x}

Va descurcati sa scrieti asemenea programe si chiar unele mai complicate, nu-i asa ?

Atunci va doresc succes !

Software-ul poate fi descarcat de pe web-site-ul Rodin.


Dan V. Popa Ro/Haskell Facultatea de Stiinte, Univ. "Vasile Alecsandri" din Bacau. "

. Ce cunostinte ar trebui sa aiba cineva ca sa utilizeze Limbajul Rodin ?

Minim: Deschiderea unei console Windows cu Run-> Command -> cmd apoi tastarea unei linii de comenzi. Plus cateva cunostinte despre limbajul C cu care Rodin se aseamana.
Mediu: C la un nivel didactic. Abilitatea de a intelege C-ul dincolo de cuvintele sale cheie.
Maxim: C si lambda calcul, daca doriti sa exploatati puterea unor expresii speciale (lambda expresiile numite abstractii).La anumite versiuni Rodin 2009a-e. Dar in rodin experiment Exp 12 nu sunt folosite.

. De ce exemplele de pe lista de subtilitati sunt in engleza ?

Natural, facand cercetare pentru prezentarea la o intalnire stiintifica internationala, primele experimente au fost in limba engleza. Dorim tare mult sa sustinem simultan abele versiuni de Rodin: Rodin-Ro si Rodin-En, fiecare folosind alt set de cuvinte cheie. Afirm ca s-ar putea trece de la Rodin-Ro la C prin intermediul Rodin-En, eventual folosindu-l ca suport pentru realizarea temelor. (Ipoteza. Ce zic specialistii in pedagogia informaticii ?) Am inceput sa adaug pe lista de subtilitati exemple in Rodin-Ro (adica scrise pe romaneste.).

. Puteti realiza versiuni de Rodin in limbile minoritatilor nationale ?

Putem. Nu inseamna insa ca vor fi gata tot in 4 zile, mai ales ca vacanta de vara 2008 s-a terminat.

. De unde mai aflam vesti despre Rodin ?

De pe site-ul proiectului http://www.haskell.org/haskellwiki/Rodin. Voi trimite beta testerilor si cate-o notificare din cand in cand dar acest site din domeniul Haskell.org ramane sursa principala de informatii despre proiectul Rodin. Nu apelati la mirror-uri.

. Dati si diplome de participare profesorilor implicati in program ?

De ce nu ? Din partea mea, da. Urmeaza sa alegem organizatia / institutia / departamentul care va pune stampila finala pe diplome. Dar aceste diplome vor fi oferite abia DUPA ce respectivii vor publica o serie de programe Rodin pe site, ocazie cu care le fac cunoscute numele, asa cum se vede.

. Se va putea contribui la site direct ?

Da, avem in vedere si acest fel de colaborare atunci cand numarul profesorilor participanti va depasi o anumita limita. Contactati-ma si rezolvam si aceasta problema. Dar cei care o vor face raspund pentru corectitudinea a ceea ce scriu.

. Indicatii de lucru cu limbajul pseudocod Rodin

Editati cu editorul preferat si pastrati fisierele sursa grupate in dosare in care aveti si versiunea de Rodin necesara rularii lor. Daca se ajunge sa existe incompatibilitati (ca la .doc -urile M$) intre diversele versiuni e bine sa aveti la indemana veriunea sub care anumite exemple rulau. Tineti lista de cuvinte cheie si foaia cu sintaxa limbajului la indemana.

. Ce facem daca un program nu ruleaza corect ?

Cititi la pagina Rodin/CeSaFac.


. Istoricul acceselor la pagina principala Rodin

Rodin/History.

. Probleme la a vedea aceasta pagina ?

Puteti seta computerul sa afiseze o imagine cu dimensiuni 1280 x 768 la 60 Hz rata de reimprospatare (refresh) chiar si cu un monitor care suporta doar 1024 x 768 la 60Hz.
ATENTIE: Acest reglaj se poate face numai cu placi video mai noi, (de exemplu cu unele din seria Intel 865 si superioare).
ATENTIE: Folosirea unor FRECVENTE de refresh MAI MARI de 60Hz cu unele monitoare analogice (au butoane care se INVIRT pentru a regla contrastul) poate duce la distrugerea sincroprocesorului analogic.