Documente Academic
Documente Profesional
Documente Cultură
2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU
2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU
Psihologia programrii
Psihologia programrii prezint factorii umani legai de conceperea i utilizarea programelor, cum ar fi:
Uurina cu care programatorii manipuleaz diverse construcii ale limbajelor de programare Problemele legate de capacitatea de nvare a programrii Predispoziia spre erori i robusteea construciilor unui limbaj Tipurile de erori fcute de programatori Uurina de a utiliza aplicaii software, cum ar fi procesoarele de text, de ctre neiniiai Rolul help-ului on-line
Aplicabilitatea ecologic
n momentul cnd se fac experimente, o atenie sporit trebuie acordat aplicabilitii ecologice (adic a relevanei rezultatelor n cazul generalizrii n situaii reale) Factori care trebuie luai n considerare
Mulimea subiecilor: Diferenele ntre indivizi influeneaz rezultatele obinute Contextul sistemului Limbaje jucrie vs. situaii reale Dimensiunea problemei Aplicaii mici vs. aplicaii mari i probleme vagi Contextul de lucru Suprapunerea mai multor sarcini
Memoria uman
Programatorii trebuie s memoreze construcii sintactice i semantice i s le prelucreze pentru gsirea unei soluii Tradiional, se consider c exist 3 tipuri de memorie:
Memoria senzorial Memoria de scurt durat (7 2) Memoria de lung durat (semantic, practic nelimitat)
Cunotine semantice
Concepte generale care nu sunt direct legate de un anumit limbaj de programare Privesc att concepte de nivel sczut (de exemplu atribuirea unei variabile), ct i concepte de nivel nalt (de exemplu un algoritm de sortare)
Cunotine sintactice
De exemplu formatul construciei while din C Cunotinele sintactice sunt arbitrare i deci uor de uitat E mai uor de nvat o structur sintactic atunci cnd structura semantic corespunztoare este deja cunoscut.
Aa se explic faptul c nvarea unui prim limbaj de programare se dovedete mai dificil dect nvarea urmtorului (sau urmtoarelor). Dup un timp este necesar numai stpnirea unei sintaxe noi Acest lucru nu se ntmpl dac noul limbaj are o structur semantic diferit (de exemplu un limbaj declarativ cum ar fi CLIPS fa de un limbaj procedural ca C-ul)
Semantic i sintactic
Cunoaterea semantic trebuie nvat i asimilat Cunotinele sintactice pot fi stpnite prin simple exerciii Aceste dou tipuri de cunotine nu sunt integrate mpreun n memorie De exemplu, nelegerea sensului unei sarcini nu este legat neaprat de modul n care aceasta este transpus ntr-un anumit limbaj de programare
Rezolvarea problemelor
Etape:
nelegerea problemei Realizarea unui plan, descoperirea unei strategii de obinere a soluiei Executarea planului Verificarea rezultatelor
Planuri de programare
Fragmente de program care corespund unor aciuni stereotipe i reguli care descriu convenii de programare Jaloanele sunt cunotine care indic prezena unei anumite structuri sau operaii De exemplu, o idee fundamental n rutinele de sortare este interschimbarea a dou valori
2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU
Cnd studiem codul unui program, construim o structur semantic intern care s corespund programului Elemente precum adugarea comentariilor, numele sugestive ale variabilelor, alinierea uureaz acest proces
Comentariile
Experimentele psihologice au artat c subiecii neleg mai uor i mai bine programele comentate Comentariile nu sunt stocate n structura semantic intern construit. Ele doar conduc la o obinere mai uoar a acesteia Programatorii nceptori sunt mai ateni la comentarii dect cei experimentai Pentru programe scurte, profesionitii nu au nevoie de comentarii, mai ales dac structura programului poate fi obinut prin alte mijloace (de exemplu, se pot folosi nume mnemonice, care sunt suficiente pentru a determina structura semantic a programului) Cnd numele nu au neles, comentariile reprezint singurul ajutor
Comentarii utile
Comentariile care explic funcionalitatea sunt preferate comentariilor de nivel sczut. Comentariile nu trebuie s imite codul, ca n exemplul urmtor:
x = 0; // x devine 0
Comentariile trebuie s foloseasc terminologia domeniului. De exemplu, este mai bine s folosim
// Caut studentul cu media cea mai mare dect // Caut cea mai mare valoare din tabel
Numele variabilelor
Dac ne confruntm cu un program n care variabilele sunt numite P, Q, i R, vom ntmpina dificulti n a nelege semnificaia lor Pe de alt parte, mnemonice de forma cont sau factur reflect un anumit rol semantic i determin o legtur direct ctre ceea ce reprezint ele. Aadar, mnemonicele faciliteaz procesul de nelegere Totui, dac cel care citete programul cunoate deja algoritmul, numele variabilelor nu mai prezint o importan deosebit.
Indentaia
Indentaia (engl. spaiere, zimuire) se refer la determinarea distanei fa de margine (n caractere albe) a liniilor de program, astfel nct s poat fi puse n eviden anumite structuri ale programului Scopul indentaiei este creterea lizibilitii codului Stilul indentaiei poate diferi considerabil, chiar dac este folosit acelai limbaj de programare
2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU
Limbaj i gndire
O ipotez din lingvistic afirm c modul nostru de gndire este ngrdit de limbajul n care ne exprimm. Reciproc, modul nostru de a gndi constrnge utilizarea limbajului Limbajele de programare ar trebui concepute n aa fel nct s faciliteze o exprimare ct mai natural a algoritmilor
Go to
Mai uor de indentat Sunt construcii de nivel mai nalt deci mai puin complexe
Prezena instruciunilor goto crete dificultatea i timpul necesar depanrii. Concluziile unui experiment:
Programele cu rezultate eronate aveau de dou ori mai multe goto-uri dect programele cu rezultate corecte Programele cu goto-uri aveau o structur cu mult mai proast dect cele fr goto Timpul mediu pentru depanarea programelor cu goto-uri era mai mare dect cel al programelor fr goto
Abstractizarea
Utilizarea structurilor i claselor crete gradul de abstractizare al programului, cu efecte benefice asupra nelegerii. Astfel se explic i tendina de nlocuire a programrii structurate cu programarea orientat obiect n timpul proiectrii, problema este descompus n module. Pentru programe de mici dimensiuni, avantajul modularizrii nu este evident. Totui, atunci cnd dimensiunea programelor crete, tehnica modularizrii devine foarte important, iar modificrile sunt mult mai rapide dect n cazul programelor monolitice echivalente.
2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU
Interfaa cu utilizatorul
n multe cazuri, interfaa cu utilizatorul necesit mai mult de 30% din cod, deoarece este un factor critic pentru succesul sau eecul sistemului Factori care influeneaz interaciunea dintre utilizatorul uman i calculator: Modelul mental al utilizatorului (modelul mainii pe care l creeaz utilizatorul) Imaginea sistemului (toate elementele sistemului cu care vine n contact utilizatorul) Modelul conceptual (modelul precis din punct de vedere tehnic creat de proiectani) Problema fundamental a realizrii unei interfee ntre om i calculator este apropierea ct mai mare a modelului conceptual de modelul mental al utilizatorului
Interfaa cu utilizatorul
Aciunile percepute ca o singur unitate conceptual trebuie implementate ca o singur comand Sarcinile apropiate semantic trebuie s fie apropiate i n interfa Introducerea datelor trebuie s fie uoar pentru utilizator, nu pentru programator:
10 2 vs. 102
Aa nu
Cunotine generale
Dac CTRL+J ntr-un editor de text mut cursorul cu o linie mai jos Atunci CTRL+S:
Mut cursorul cu o linie mai sus sau terge fiierul?
ncrcarea cognitiv
Determinat de limitrile memoriei de scurt durat i ateniei Noile cunotine sunt integrate cunotinelor existente Secvenele lungi de comenzi, meniurile cu un mare numr de elemente, nesigurana asupra locului unde ne aflm au ca efect stnjenirea interaciunii Pe msur ce ncrcarea cognitiv crete, sistemul devine mai greu de nvat, utilizatorul obosete mai repede i ncepe s fac mai multe greeli
Curb de nvare
Cnd omul ncepe s nvee ceva, el traverseaz o curb de nvare; viteza cu care utilizatorul traverseaz curba de nvare este o msur a complexitii programului
Consistena interfeei
Help-ul
Pentru submulimea de comenzi abia cunoscute, se recomand un sistem de help pasiv, on-line sau off-line (documentaie) Pentru comenzile necunoscute de utilizator, se recomand un help activ, care s-l ndrume pe utilizator i s-i explice noile noiuni necunoscute (tips)
Dialog simplu i natural Limbaj potrivit utilizatorului Minimizarea ncrcrii mnezice Consisten Feedback Ieiri marcate clar Scurtturi (engl. shortcuts) Mesaje de eroare potrivite Prevenirea erorilor
2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU
Valori
Tehnologia nu este neutr din punctul de vedere al valorilor Un program poate transmite valorile programatorului
Acceptarea responsabilitii de luare a deciziilor inginereti n conformitate cu sigurana, sntatea i bunstarea public i dezvluirea prompt a factorilor care ar putea pune n pericol oamenii i mediul Evitarea conflictelor de interese reale sau percepute ori de cte ori acest lucru este posibil i dezvluirea lor ctre prile implicate atunci cnd asemenea conflicte exist Corectitudinea i realismul cerinelor sau estimrilor bazate pe date disponibile Respingerea mitei sub toate formele ei Perfecionarea nelegerii tehnologiei, aplicaiilor sale adecvate i a consecinelor poteniale
Meninerea sau perfecionarea propriei competene tehnice i asumarea rspunderii pentru sarcinile care i privesc pe alii numai n cazul calificrii prin instruire sau experien sau dup dezvluirea complet a limitrilor legate de acestea Cutarea, acceptarea i acordarea de critici oneste ale lucrrilor tehnice, recunoaterea i corectarea erorilor i creditarea adecvat a contribuiilor altora Tratarea neprtinitoare a tuturor persoanelor, fr a ine seama de factori precum ras, religie, sex, handicap, vrst sau naionalitate Evitarea defavorizrii altora, a proprietii, reputaiei sau serviciului lor prin aciuni incorecte sau ruvoitoare Asistena acordat colegilor n dezvoltarea lor profesional i n respectarea prezentului cod de etic
n Romnia, legea drepturilor de autor (numrul 8 din 14 martie 1996) recunoate i garanteaz dreptul de autor asupra operelor de creaie intelectual, literar, artistic sau tiinific, incluznd i programele de calculator Programele de calculator sunt opere de creaie intelectual, a cror valoare nu este dat de suportul material pe care programul n sine este fixat i nici de munca depus pentru realizarea acestor suporturi (de exemplu dischete, CDROM-urile) Consimmntul pe care titularul dreptului de autor l d unei persoane pentru a putea reproduce, folosi, difuza sau importa cpii ale unui program de calculator, se concretizeaz n practic n licene Lipsa licenelor echivaleaz cu lipsa autorizrii din partea autorului, iar desfurarea activitilor menionate fr aceste licene reprezint infraciuni
Intenia Licenei Publice Generale GNU este de a garanta libertatea de a distribui i modifica programele i de a se asigura c programele sunt libere pentru toi utilizatorii Licena GNU dorete evitarea pericolului ca cei ce redistribuie programe libere s obin patente
Termeni i condiii
Se pot copia i distribui copii nemodificate ale codului surs specificnd vizibil autorul programului i licena GNU Se pot modifica sursele menionndu-se autorul, data modificrii i lipsa oricrei garanii Se pot copia i distribui programe nsoite de codul surs
Concluzii
Psihologia programrii studiaz factorii umani legai de conceperea i utilizarea programelor Programatorii dein separat cunotine sintactice i semantice despre un anumit limbaj Interfaa grafic trebuie s minimizeze ncrcarea cognitiv a utilizatorului Un program poate transmite valorile programatorului; de aceea pot fi discutate aspectele etice ale programrii