[so] Warning-uri si alte probleme
Razvan Deaconescu
razvand at cs.pub.ro
Sun Nov 25 11:38:35 EET 2007
On Sun, 2007-11-25 at 11:04 +0200, Dan Badea wrote:
> Buna ziua,
>
> Va multumesc pentru recomandari. Din fericire am o copie personala a
> cartii pe care mi-ati recomandat-o. Va multumesc si pentru articole,
> toate sunt foarte interesante.
>
> Sa trecem totusi inapoi la oile noastre care nu sunt functia strcat in
> sine, ci depunctarea automata care este facuta pentru teme si care
> duce la bad practices (si anume suprimare de warning-uri).
>
> Am atasat un exemplu care compilat cu g++ sub linux nu produce nici un
> warning (-Wall). De aici, sa inteleg ca strcat este deprecated numai
> pentru Windows? Sau mai bine sa inteleg ca strcat e deprecated doar pt
> compilatorul Microsoft, iar pentru cel al GNU nu?
>
> Acum ca sa revin la sugestiile de lectura care mi s-au facut. In primul
> rand este vorba despre o tema la SO (si cum bine stiti avem multe
> teme), iar daca as sta sa citesc cate mi s-au recomandat pentru
> fiecare "problema" care apare, probabil ca, desi as invata foarte
> multe, nu as mai termina niciodata TOATE temele. Nu este normal ca
> atitudinea reprezentantilor facultatii sa fie aceea in care esti mereu
> impins spre lectura personala. Credeti-ma ca am facut destula de acest
> gen si majoritatea cunostintelor pe care le-am dobandit se bazeaza pe
> acest mod de a invata. Insa nu este deloc normal ca studentul sa fie
> mereu pus sa "descopere"/invete singur. Nu venim la scoala ca sa alfam
> totul din alte surse. Daca considerati ca acest subiect merita
> atentie, si ca studentii ar trebui sa stie ca strcat nu este bine de
> folosit atunci ar trebui sa se vorbeasca despre asta. Dar, dimpotriva
> aceasta este functia care ne-a fost predata. In concluzie, va rog sa
> nu apelati la cunostinte pe care studentul trebuie sa dobandeasca
> singur atunci cand propuneti (sau corectati/depunctati) o tema.
>
Imi pare rau daca tu personal consideri ca atitudinea noastra este ca
"studentul" trebuie sa invete singur. In mod cert atitudinea nu va fi
"uite trenuletul cu informatie; deschide gurita ... asa ... papa tot".
Din pacate, nu putem face totul la cursul/laboratorul de Sisteme de
Operare. Mi-amintesc o discutie cu Tavi acum un an in care ii spuneam
"Tavi, trebuie sa facem socketi la SO; nu te poti baza pe ce s-a facut
la PC" (vorbeam din proprie experienta). Tavi mi-a zis (si avea
dreptate): "Razvan, trebuie sa te bazezi pe ceva".
Asa si noi ne bazam pe faptul ca, in mare parte, lumea s-a lovit de
problema buffer overflow-ului si a problemelor folosirii functiilor pe
siruri. Din pacate asta nu se prea intampla, dar nu avem timp sa facem
asta la SO.
Ar fi absurd sa cerem studentilor sa stie sa lucreze cu procese,
thread-uri, semnale, primitive de sincronizare cat timp asta intra in
aria de cuprindere a cursului. Din acest motiv aceste notiuni sunt
prezentate in detaliu la curs si la laborator.
[...]
> Si in final, foarte bine, daca vreti sa corectati temele automat, nici
> o problema, dar ca si in viata si aici exista exceptii. Aceasta in mod
> clar este una si mi se pare cat se poate de normal sa nu primesc nici
> o penalizare.
>
> Astept niste raspunsuri si legat de a doua parte a mail-uli precedent.
Da, este o exceptie.
Depunctarea pe baza de warning-uri are rostul ca studentul sa-si dea
seama ca e ceva in neregula cu programul sau. De obicei asta inseamna ca
ai uitat sa pui mai multe argumente la printf (destul de grav), ca nu
initializezi variabile, etc.
Cazul tau este o exceptie prin prisma faptului ca pe Linux nu se
intampla acest lucru. Dar nu o sa facem o lista de exceptii pentru
fiecare mic warning care apare in cadrul compilarii unui program.
In cadrul testarii automate se scade 1p pentru fiecare warning
indiferent de natura lui, puterea lui, relevanta, etc.
Recomandarea mea este ca, de acum incolo, avand acest suport de testare
automata (care, din cate stiu eu, nu exista nicaieri in alta parte in
facultate si care prezinta avantaje mari atat studentilor cat si
asistentilor) sa vezi rezultatul rularii programului tau, depunctarile,
etc. si sa iei repede actiune.
Ca o scurta paranteza de final, am trei observatii:
* Nimeni nu vrea sa va ia gatul sau punctele la SO; daca ar fi asa,
credeti ca mecanismul de depunctare pentru intarziere ar fi cel descris
in regulile de notare[1]? Bu, consideram ca temele sunt destul de
relevante pentru subiectele abordate si pentru a va acoperi necesarul de
cunostinte si deprinderi.
Drept urmare, intentia, dorinta si placerea noastra ar fi ca voi toti
sa faceti toate temele. Cand aveti timp, chef si placere - punctajul
maxim unei teme nu va scadea sub nota 7 niciodata. Nici in sesiune, nici
in semestrul 2, nici in vara, nici la anul (depinde cand apucati voi sa
faceti temele).
Accentul pica pe dorinta ca voi sa faceti cat mai multe teme si cat mai
bine, nu sa le faceti cat mai repede. De multe ori conteaza mult mai
mult calitatea codului decat cantitatea de cod scrisa.
* Depunctarea ta din cauza warning-urilor inseamna 1p din nota temei
adica 0.1p din nota finala. Stiu ca e vorba de principiu, dar chiar
crezi ca va conta asa ceva la final. Iti garantez ca daca la sfarsit vei
fi la 0.1p de obtinerea unei note mai bune, o vei obtine.
* Daca aici nu avem sistem cu forumuri si, drept urmare, nu exista forum
de feedback, nu inseamna ca nu puteti da feedback chiar pe lista de
discutii. Orice remarca, parere, mesaj critic constructiv, sugestie sunt
mai mult decat binevenite. Pot fi referitoare la punctare, la teme, la
laborator, la curs.
La sfarsitul semestrului va exista un formular de evaluare pe site
(http://cs.pub.ro/~so) pe care va rugam de pe acum sa il completati.
Destul de probabil va exista unul si la nivelul catedrei (pe
http://curs.cs.pub.ro) asa cum a fost si anul trecut in semestrul 1.
Vom analiza si vom lua in considerare observatia/feedback-ul tau
referitor la depunctarea unui singur warning daca acela apare. Acest
lucru nu se poate face insa acum, pentru ca ar insemna sa facem o
exceptie doar pentru tine si ar genera haos. Oricum, daca acel 0.1p ar
face diferenta la final, se va tine cont de acest lucru.
Scuze de mesajul lung. Sper ca nu am repetat (prea mult) unele lucruri
si ca m-am facut inteles.
Razvan
More information about the so
mailing list