Difference between revisions of "Rodin"

From HaskellWiki
Jump to navigation Jump to search
m (More questions about the Rodin DSL)
m (Adding some things adn indications)
Line 34: Line 34:
 
==. De unde vine numele Rodin ? ==
 
==. 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.
 
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 ? ==
 
==. Ce aduce nou Rodin ? ==
Line 201: Line 207:
 
CUVINTELE CHEIE,deci evitati: d a c f p r s t
 
CUVINTELE CHEIE,deci evitati: d a c f p r s t
 
sau prefixati variabilele cu o litera
 
sau prefixati variabilele cu o litera
  +
cum ar fi de exemplu m sau x. E o ocazia buna de a-i invata pe cursanti notatia ungara a numelor de variabile sau daca nu, macar principiile ei.
cum ar fi m.
 
   
 
Iata `cuvintele` cheie din Rodin, desi unele nu sunt cuvinte ci
 
Iata `cuvintele` cheie din Rodin, desi unele nu sunt cuvinte ci
Line 302: Line 308:
   
 
==. Dati si diplome de participare profesorilor implicati in program ? ==
 
==. 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.
+
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 ? ==
 
==. 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.
 
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 la indemana.
  +
 
----
 
----
 
Pagina proiectului Rodin este in dezvoltare. Vizitati-o regulat pentru a gasi update-urile, noutatile precum si programele si exercitiile noi adaugate.
 
Pagina proiectului Rodin este in dezvoltare. Vizitati-o regulat pentru a gasi update-urile, noutatile precum si programele si exercitiile noi adaugate.

Revision as of 17:41, 5 September 2008

.Limbajul Rodin, un limbaj pseudocod nou implementat (2008), in stil C, proiectat pentru profesorii si elevii din România, pentru orele de algoritmistica

Nu uitati sa scanati cu un antivirus executabilul din arhiva.


Upgradati la RodinV06-Ro care are si operatorul modulo, notat %.  

. Download direct !

<Download> Rodinv06-Ro.exe.zip din 28 august 2008. Are si operatorul modulo, pe care nu-l inclusesem in versiunea anterioara.
Descarcati si fisierul cu sintaxa de pe pagina: Image:Cuvinte_cheie_si_operatori-Rodin-Ro-V06-28-8-2008.txt
<Download> Rodin-Ro-floppy.zip incluzand RodinV05-Ro din 7 august 2008.

.Ce este Rodin ?

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.

. 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 si respect,
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)

Multumesc pe aceasta cale inca o data tuturor acelora care mi-au transmis impresiile lor despre limbajul pseudocod Rodin, asa cum este el astazi, (versiunea .05 sau .06).


. 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 ! Sau mergeti direct la http://www.haskell.org/haskellwiki/Rodin.

. 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 "Download direct", de la inceputul acestei pagini. De la un alt beta tester Rodin. Il distribuim si prin alte metode: dischete, e-mail. La inceput l-am distribuit doar prin e-mail. Acum puteti cere o discheta ori un CD de la Univ. Bacau, de la cabinetul domnului Popa. Ori puteti veni cu un stick :)

. Cine este autorul Rodin ?

Dan V.Popa. Actualmente, lucreaza la Universitatea 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 (reafisarea lor, incrementarea si reafisarea) ar fi:

{ tasteaza x;
  scrie x;
}

sau altul

{ tasteaza x;
  fie x=x+1;
  scrie x;
}


Vom mai adauga si alte exemple.

. Unde gasim alte exemple de programe in Rodin ?

Aici vom posta exemple imediat ce vin de la beta testeri si le verificam.


Exemplu. Id: A-1
Beta tester: Adrian
Tema: Bucle imbricate; 1000 x 1000 operatii
Obs: Executia dureaza, bucla interioara fiind o temporizare. 
 
{fie n=1000; 
 cat timp (n>0)
   {fie x=0;
    cat timp (x<1000)
       fie x=x+1;
    fie n=n-1;
    scrie n;
    };
};


Exemplu. Id: A-2
Beta tester: Adrian
Tema: Calculul factorialului
 
{
 fie x=0;
 tasteaza x;
 fie g=1;
 executa 
 {
  fie g=g*x;
  fie x=x-1;
 }
 atat cat (x>1);
 scrie g;
}
Exemplu. Id: D-cmmdc
Beta tester: Dan
Tema: Calculul celui mai mare divizor comun
Notiuni: repeta ... pina cand (ca in Pascal) si operatorul modulo, notat %
Ruleaza pe: RodinV06-Ro din 28 aug 2008. Upgradati daca aveti RodinV05-Ro
 
{ tasteaza a;
  tasteaza b;
  fie undeimp=a;
  fie unimp=b;
  repeta
    { fie unrest=undeimp%unimp;
      fie undeimp=unimp;
      fie unimp=unrest;
     }
  pana cand (unimp==0);
  scrie undeimp;
};


. Asemenea programe pot fi rulate efectiv pe calculator ?

Da, fireste. De altfel aceasta este o definitie a pseudocodului: pseudocodul este un limbaj scris cu propriile noastre cuvinte dar suficient de precis incat daca am avea o masina capabila sa-l ruleze, el al rula.

Iata o imagine pentru cei care nu sunt convinsi: - Click aici. Programul din imagine a calculat factorialul numarului trei, care este 6.

. Ce facem daca un program nu ruleaza corect ?

Consultati lista de sugestii si subtilitati cunoscute:

S1) Atentie:   let x=1,x     va fi perceput ca      let x = (1,x) 
puneti (let x=1),x in loc. 
Dar         {1;2;}
             1,2     

S2) Puneti spatiu dupa do la do while . Obligatoriu.

S3) 12+(\\ y . y) (4+4) -- nu puneti spatii linga plusuri si alti operatori.    Valabil si pentru comparatii: <,>, ==, !=

S4) Daca incercati sa folositi o atribuire pe post de expresie,
si o puneti in paranteza, atunci  inchideti paranteza imediat, fara spatii:

H:\_Pr>MainV03.exe Rodin2.hs
Asa nu e bine:

{ let y =2;
  let x=100;
  while (x>10)
    let x=x-(let y = 1 );
  print x;
  print y;
}

H:\_P>MainV03.exe Rodin2.hs
Dar asa e bine (dar nu uitati la RodinV05-Ro sa scrieti cuvintele cheie pe romaneste conform listei de echivalente de mai jos.)

{ let y =2;
  let x=100;
  while (x>10)
    let x=x-(let y = 1);
  print x;
  print y;
}

S5) \" este " ca si in C
Deci mesajul: 
unexpected "\""
expecting space or expresion
inseamna ca a gasit o " neasteptata in string-ul de intrare

S6) Recomandare: Desi in teorie numele variabilelor
poate sa inceapa cu orice litera, Rodin nu accepta (cel putin acest prototip)
variabile care incep cu aceeasi litera ca si cuvintele cheie. 
(deoarece are un fel de scannerless parser).
NU FOLOSITI VARIABILE CARE INCEP LA FEL CA SI
CUVINTELE CHEIE,deci evitati: d a c f p r s t
sau prefixati variabilele cu o litera
cum ar fi de exemplu m sau x. E o ocazia buna de a-i invata pe cursanti notatia ungara a numelor de variabile sau daca nu, macar principiile ei.  

Iata `cuvintele` cheie din Rodin, desi unele nu sunt cuvinte ci 
adevarate sintagme:

if = "daca"
then = "atunci"
else = "altfel"
let = "fie"
while = "cat timp" 
do = "executa"   / in versiunile vechi era "socoteste"
print = "scrie"
read = "tasteaza"
begin = "{"
end = "}"
repeat = "repeta"
until = "pina cand"
for = "pentru"

'Egalitatile' sugereaza cu ce alte cuvinte din alte limbaje de programare se aseamana cuvintele din limbajul Rodin.

Lista este orientativa, n-ar fi exclus s-o mai schimbam daca gasim motive intemeiate pentru a face acest lucru.


s7) Nu incepeti programul cu un rand liber ! 
Rodin va da eroare gasind acel Enter.

s8) Puneti imediat ; dupa atribuirea 
fie x=0;  asa e bine 
dar nu asa  
fie x=0 ; 

s9) dupa "socoteste" /"executa" deschideti pe acelasi rand acolada,
puneti un spatiu (macar) intre "socoteste"/"executa" si acolada.

Atentie, una din versiunile mai vechi ale Limbajului foloseste "socoteste" alta "executa". Orientati-va dupa numarul ei si data de lansare pentru a le deosebi.


. 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 mic ghid dupa care un necunoscator al acestora sa poata 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 priviinta Rodin ?

Da, daca exista cerere. Voi anunta prin e-mail.

. Pe ce notiuni se bazeaza Rodin ?

Pe notiuni de teoria categoriilor, monade, semantici monadice modulare si altele despre care am scris mai sus.

. 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 incepoatori. Dar totusi sa fie suficient de strict ca sa te oblige sa deprinzi disciplina programarii.

. 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:

"Pe scurt, ce ar fi de facut:

Sa programati intr-un fel de pseudocod mici programe care fac calcule cu numere intregi. Software-ul vi-l ofer gratuit. Va trimit si o mica documentatie. Programele care merg 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 (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:

Ex: {tasteaza x; scrie x;}

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

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

Software-ul ocupa o discheta sau poate fi descarcat de pe web.

P.Dan "

. 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).

. 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 la indemana.


Pagina proiectului Rodin este in dezvoltare. Vizitati-o regulat pentru a gasi update-urile, noutatile precum si programele si exercitiile noi adaugate.