Rodin

From HaskellWiki
Revision as of 00:43, 5 November 2008 by Ha$kell (talk | contribs) (It's 2:47am. Local time. ( In the morning). Sory for the missprints.)
Jump to navigation Jump to search

Rodin-Banner.gifRodin-Banner.gif

.Limbajul Rodin, un limbaj pseudocod nou implementat (2008), in stil C, proiectat pentru profesorii si elevii din România, pentru orele de algoritmistică (V0.81 acum - 22/10/2008)

Ultraedit-run-for.jpg
Rodin rulînd împreună cu Ultraedit-ul pe 32 biti.


NOU Upgradati la RodinV081.zip <Download> . Upgrade obligatoriu. Renuntati la RodinV08, avea o semantica gresita pentru daca. Si cu RodinV081 Puteti sa folositi ”text”, instructiunea de scris string-uri.

Rodinv08e.gif Nota pentru RodinV081: Daca obtineti o eroare la litera a II-a din sintagma "pana cand" scrieti cu i: "pina cand".

Exemplu de utilizare a instructiunilor de intrare / iesire.

{text "dati valoarea lui x";
 citeste x;
 text "x este ";
 scrie x; 
 text "dati valoarea lui y";
 citeste y;
 text "y este ";
 scrie y; 
 fie b=x>y;
 text "b este 1 daca x mai mare ca y altfel 0";
 scrie b;  
 daca b atunci text "x mai mare ca y" 
        altfel text "y mai mare sau egal ca x";
 citeste z;
 }
 -- Acest program ar trebui sa scrie doar unul dintre mesaje
 -- Pentru RodinV081.exe din 22/10/2008.

. Stirile lunii

5 nov 2008 Seara de testare pentru RodinV081. Subiectul 1: Instructiunea "daca ... atunci ... altfel ...". Toate programele testate au functionat.

Subiectul 2: Bucle cu test initial si final. Am inceput cu exemplul clasic al sumei de numere dintr-un sir terminat cu zero. S-au dat indicatii si de metodica predarii buclelor, notiuni fundamentale.

Am primit cea mai frumoasa apreciere indirecta: Cineva (din motive evidente nu spun numele desi merita aplauze pentru sinceritate) a spus spontan, ceva care suna cam asa: Acum inteleg ceea ce nu intelegeam la liceu, despre limbajele de programare. Va multumesc calduros, voua, tuturor care ati participat.


25 oct 2008 Pagina Rodin se apropie de download-ul / accesul numarul 700. (erau peste 696 mai inainte.)

22 oct 2008 Am corectat instructiunea alternativa daca cu doua ramuri, atunci si altfel. Daca-ul cu o ramura nu e inca implementat. (Eventual puneti: text "Nimic de facut" pe ramura cealalta.)

21 oct 2008 Seara de testare pentru RodinV08. Am gasit o serie de probleme la instructiunea daca, de altfel planificata pentru revizuire deoarece lipsea ”daca”-ul fara o ramura ”atunci”. Multumiri tuturor participantilor. Rodin va intra intr-o faza de testare intensiva.

10 oct 2008 RodinV08 va functiona cu un editor extern, probabil Ultraedit si va folosi instructiunile anuntate „text” , „scrie”, „citeste”. La „tasteaza” am renuntat. Puteti incerca sa folositi si actualul RodinV07 impreuna cu Ultraedit, ar trebui sa functioneze macar programele fara instructiuni de intrare (deci cele fara ”tasteaza”). Incercati, merita !

DPPD Bacau a promis ca va acorda diplome participantilor la proiectul Rodin, pentru a confirma pregatirea acestora. Participati !

. Download direct !

<Download> RodinV081.zip . Varianta cu exemple in arhiva. Upgrade obligatoriu, deoarece RodinV08 are un defect la instructiunea "daca". Puteti folosi si instructiunea ”text”. Trebuie doar sa inlocuiti ”tasteaza” cu ”citeste”. Nu uitati sa scanati cu un antivirus executabilul din arhiva.

<Download> RodinV081.zip . Upgrade obligatoriu, deoarece RodinV08 are un defect la instructiunea "daca". Puteti folosi si instructiunea ”text”. Trebuie doar sa inlocuiti ”tasteaza” cu ”citeste”. Nu uitati sa scanati cu un antivirus executabilul din arhiva.


. Intrebari despre Rodin

Vor fi pe o pagina separata. Pagina cu intrebari despre limbajul pseudocod Rodin. (nu e scrisa inca)

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


Sintaxa

(O veti gasi curand pe o pagina separata Ro/Sintaxa Limbajului Rodin la http://www.haskell.org/haskellwiki/Ro/Sintaxa_Limbajului_Rodin).

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, instructiuni, operatori, primele exemple:

RodinV07-Ro -- 10/9/2008

Secventa de instructiuni: { <expr>; .... <expr> ; }

Atribuirea fie <name> = <expr>

Alternativa/Decizia/Conditionala: daca <expr> atunci <expr> altfel <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>

Tastarea unui nr (op de citire): tasteaza <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.

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;
}

Operatori: + - * / %

Comparatii: > , < , == , !=

Lipsesc: ! negatia, op logici ,op 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 M.J. Cod sursa comentat despre interpretoarele monadice modulare gasiti sau veti gasi in volumul Practica interpretarii monadice si pe 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, (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 ! 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.

. 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: (exemplu depasit, vezi mai jos de ce)

{ tasteaza x;
  scrie x;
}

sau altul

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


Alte exemple,noi. De la Rodin V08 incolo, si recomand cel putin Rodin V081 "tasteaza" este inlocuit cu "citeste".

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

Aici vom posta Exemple de programe in Pseudocod Rodin imediat ce vin de la beta testeri si le verificam.

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

Da,exista cerere. Deja a avut loc o prima intalnire cu acele cadre didactice interesate de Limbajul Pseudocod Rodin.

. 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 (pentru versiuni mai vechi de Rodin V07):

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-site-ul Rodin.

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 si foaia cu sintaxa limbajului la indemana.

. Download direct al versiunilor mai vechi

Rodin-A-3ok.jpg


Daca aveti un program in pseudocod care rula sub o versiune mai veche de Limbaj Pseudocod Rodin, incercati sa descarcati una din versiunile (vechi) de mai jos. Atentie: au unele bug-uri, cel putin prerelease-urile V05 si V06,V07 si V08.

<Download> RodinV08-xmax-exe-surse.zip . Upgrade optional, doar daca vreti sa testati mai repede si instructiunea ”text” si sa inlocuiti ”tasteaza” cu ”citeste”. Are un defect la instructiunea daca. Nu uitati sa scanati cu un antivirus executabilul din arhiva.

<Download> RodinV07-Ro-10-09-2008.zip din 10-09-2008. Foloseste „scrie” si „tasteaza”

Mai am de lucru la semantica buclei "pentru". Nu folositi inca acele stranii bucle ”pentru cu doua contoare”. Upgrade obligatoriu. Nu uitati sa scanati cu un antivirus executabilul din arhiva.


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

Inapoi la inceputul paginii Rodin: http://www.haskell.org/haskellwiki/Rodin.

. Ce facem daca un program nu ruleaza corect ?

Intai verificati daca l-ati rulat cu versiunea de Rodin pentru care a fost scris.

Nu uitati sa corectati erorile sintactice si sa scrieti corect acele cuvinte cheie romanesti. (”pina” vs ”pana”). Pastrati lista cu instructiuni la indemana.

Consultati pagina: Rodin/Lista de sugestii si subtilitati cunoscute

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



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

Inapoi la inceputul paginii Rodin: http://www.haskell.org/haskellwiki/Rodin.


This page has been accessed 647 times. This page was modified 21:49, 22 October 2008.

This page has been accessed 696 times. This page was modified 15:54, 25 October 2008.

This page has been accessed 785 times. This page was modified 13:19, 28 October 2008.

This page has been accessed 810 times. This page was last modified 20:22, 28 October 2008.

This page has been accessed 867 times. This page was last modified 00:39, 5 November 2008.


Rodin-Banner.gif

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

Inapoi la inceputul paginii Rodin: http://www.haskell.org/haskellwiki/Rodin.