Sunteți pe pagina 1din 38

Ingineria programrii

14. Psihologia i etica programrii


Florin Leon
Universitatea Tehnic Gh. Asachi Iai Facultatea de Automatic i Calculatoare http://eureka.cs.tuiasi.ro/~fleon/curs_ip.htm

Psihologia i etica programrii


1. Psihologia programrii
1.1. Scrierea programelor 1.2. Concepte ale limbajelor de programare 1.3. Interfaa cu utilizatorul

2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU

Psihologia i etica programrii


1. Psihologia programrii
1.1. Scrierea programelor 1.2. Concepte ale limbajelor de programare 1.3. Interfaa cu utilizatorul

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

Psihologia i etica programrii


1. Psihologia programrii
1.1. Scrierea programelor 1.2. Concepte ale limbajelor de programare 1.3. Interfaa cu utilizatorul

2. Etica programrii
2.1. Codul etic IEEE 2.2. Legea drepturilor de autor 2.3. Licena public general GNU

nelegerea unui program

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

Psihologia i etica programrii


1. Psihologia programrii
1.1. Scrierea programelor 1.2. Concepte ale limbajelor de programare 1.3. Interfaa cu utilizatorul

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

Cercetrile experimentale au artat c sunt preferate construciile if-then-else fa de construciile if-goto


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

Totui, un program fr goto-uri nu este obligatoriu fr erori

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.

Psihologia i etica programrii


1. Psihologia programrii
1.1. Scrierea programelor 1.2. Concepte ale limbajelor de programare 1.3. Interfaa cu utilizatorul

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

Mesajele de eroare trebuie s fie explicite i formulate n termenii utilizatorului, nu ai programatorului

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

Compromis ntre consisten i funcionalitate De exemplu dispunerea tastelor sgei

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)

Principii de proiectare a interfeei grafice


Dialog simplu i natural Limbaj potrivit utilizatorului Minimizarea ncrcrii mnezice Consisten Feedback Ieiri marcate clar Scurtturi (engl. shortcuts) Mesaje de eroare potrivite Prevenirea erorilor

Psihologia i etica programrii


1. Psihologia programrii
1.1. Scrierea programelor 1.2. Concepte ale limbajelor de programare 1.3. Interfaa cu utilizatorul

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

Open source Virui

Codul etic IEEE

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

Codul etic IEEE

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

Legea drepturilor de autor

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

Licena public general GNU

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

S-ar putea să vă placă și