Difference between revisions of "Rodin"

From HaskellWiki
Jump to navigation Jump to search
m (Pus litere â acolo unde e nevoie.)
m (? lipsa si o minuscula corectura)
Line 27: Line 27:
 
Dan V.Popa. Actualmente lucreaza la Universitatea Bacau.
 
Dan V.Popa. Actualmente lucreaza la Universitatea Bacau.
   
==. Cum arata cel mai scurte program in Rodin posibile==
+
==. Cum arata cele mai scurte program in Rodin posibile ?==
 
Unul din cele mai scurte programe, care face totusi o operatie cu datele utilizatorului (reafisarea lor) ar fi:
 
Unul din cele mai scurte programe, care face totusi o operatie cu datele utilizatorului (reafisarea lor) ar fi:
 
<haskell>
 
<haskell>
Line 34: Line 34:
 
}
 
}
 
</haskell>
 
</haskell>
  +
Vom mai adauga exemple.
   
 
==. Unde gasim alte exemple de programe in Rodin ? ==
 
==. Unde gasim alte exemple de programe in Rodin ? ==

Revision as of 21:31, 20 August 2008

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

.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 facultate ?"

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

. 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 aplicarea). Este primul interpretor modular de pseudocod care foloseste cuvinte cheie romanesti.

. 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.Ele se declara automat imediat ce scrieti o atribuire.

. Ce legatura este intre Rodin si Haskell

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

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

De la un alt beta tester Rodin, deocamdata. Urmeaza sa-l distribuim si prin alte metode: dischete, e-mail, download. Deocamdata il distribuim prin e-mail. sau 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 ?

Unul din cele mai scurte programe, care face totusi o operatie cu datele utilizatorului (reafisarea lor) ar fi:

{ tasteaza x;
  scrie x;
}

Vom mai adauga 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;
}


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

{ 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 m.  

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. 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 Rodin sau sa fie beta tester ?

Cu siguranta. Limbajul a fost inventat tocmai cu acest gand in minte, sa fie accesibil elevilor si profesorilor.

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


Pagina proiectului Rodin este in dezvoltare.