Programa școlară de informatică propusă pentru clasa a IX-a ridică, din perspectiva unui profesor cu experiență la catedră, o serie de întrebări practice și pedagogice dificil de ignorat. Articolul de față nu este o luare de poziție împotriva modernizării, ci o reflecție sinceră asupra fezabilității reale a unui volum curricular foarte mare predat printr-un limbaj nou, în doar două ore pe săptămână. Plecând de la experiența concretă de 28 de ani de predare a informaticii la liceu și de la observarea dificultăților reale ale elevilor de 14–15 ani în a asimila concepte abstracte, articolul argumentează că Python și C++ sunt instrumente didactice complementare, nu concurente, și că tranziția necesită timp, resurse și o formare profesională serioasă a cadrelor didactice.
1. Introducere
Predau informatică la liceu de 28 de ani. Am trecut prin mai multe tranziții curriculare: am predat Basic, Pascal, C și C++. Nu mă tem de schimbare ci dimpotrivă, consider că actualizarea conținuturilor este sănătoasă și necesară. Tocmai de aceea urmăresc cu interes, dar și cu o îngrijorare sinceră, dezbaterea legată de introducerea limbajului Python ca principal instrument de predare a informaticii începând cu clasa a IX-a.
Îngrijorarea mea nu are legătură cu Python în sine. Este un limbaj excelent, pe care îl apreciez și pe care îl consider potrivit pentru etape avansate ale formării. Îngrijorarea mea este de natură strict practică și pedagogică: volumul de conținuturi propus pentru clasa a IX-a este, în opinia mea, mult prea mare pentru doar două ore pe săptămână, iar unele concepte introduse sunt prea abstracte pentru nivelul de dezvoltare cognitivă al elevilor de 14–15 ani.
2. Ce înseamnă, concret, să predai Python unui elev de clasa a IX-a
Când discutăm despre Python la clasă, uităm uneori că percepția noastră de profesori este profund diferită de cea a unui elev care nu a mai programat niciodată. Pentru noi, Python pare simplu tocmai pentru că avem deja în minte structura unui program, conceptul de variabilă, logica algoritmică. Elevul de 14 ani nu are nimic din toate acestea. El începe de la zero.
Și tocmai aici este problema: Python, deși arată simplu la suprafață, ascunde în interior o complexitate pe care, la un moment dat, trebuie să o explicăm. Dacă o explicăm, copleșim elevul. Dacă nu o explicăm, construim un model mental greșit care va trebui corectat mai târziu.
Cel mai simplu exemplu pe care îl întâlnesc la clasă este citirea datelor. În C++, dacă variabila x este de tip int, instrucțiunea cin >> x citește un număr întreg: simplu, consistent cu ce am explicat despre tipuri de date. În Python, funcția input() returnează întotdeauna un șir de caractere, chiar dacă elevul tastează 7. Ca să obținem un număr, trebuie să scriem int(input()). Asta înseamnă că, înainte de a înțelege ce este un tip de date, elevul este nevoit să aplice o conversie de tip adică un concept mai abstract, impus de caracteristicile tehnice ale limbajului, nu de logica pedagogică. Consecința practică apare imediat: dacă un elev citește două valori și încearcă să le adune:
a = input()
b = input()
print(a + b)
…rezultatul pentru valorile 2 și 7 va fi 27, nu 9. Nu este o greșeală a elevului, este o consecință directă a modului în care Python tratează datele citite de la tastatură.
Un alt exemplu concret este citirea unui șir de numere de pe un singur rând. În C++, elevul folosea un for sau while cu cin, instrucțiuni pe care le știa deja, nimic nou. În Python, același lucru necesită aplicarea metodei split() pe rezultatul lui input(), urmată de conversia fiecărui element. Elevul este pus să folosească liste și metode pe obiecte înainte să fi înțeles ce este o listă și ce este un obiect.
La fel stau lucrurile cu instrucțiunea for. În C++, sintaxa era clară și uniformă:
for (i = 1; i <= n; i++)
Elevul înțelegea imediat variabila de control, condiția și pasul. În Python există mai multe forme, iar capcanele apar rapid: range(n) generează valorile de la 0 la n-1, deci dacă vrei să parcurgi până la n inclusiv trebuie să scrii range(1, n+1) o subtilitate care încurcă constant începătorii. Mai mult, construcția:
for _ in range(n)
…folosită când variabila de iterație nu contează, pare pur și simplu ciudată unui elev care abia a văzut prima instrucțiune repetitivă din viața lui.
3. Problema volumului curricular la două ore pe săptămână
Programa propusă pentru clasa a IX-a include: variabile și tipuri de date, structuri de control, funcții, liste, șiruri de caractere, fișiere text, interfețe grafice și programare orientată pe obiecte cu clase și obiecte. Totul în două ore pe săptămână.
Un calcul simplu: un an școlar are în jur de 33–34 de săptămâni utile. La două ore pe săptămână, rezultă aproximativ 66–68 de ore. Din acestea, cel puțin 10–12 se duc pe evaluări, recapitulări și situații obiective care reduc numărul de ore efective. Rămân practic 55–56 de ore pentru un volum care, predat corect, ar necesita cel puțin dublul.
Nu vorbesc de superficialitate sau de nerespectarea programei. Vorbesc de imposibilitatea fizică de a parcurge aceste conținuturi cu o calitate minimă a înțelegerii. Predarea programării nu înseamnă prezentarea unui concept și trecerea mai departe. Înseamnă exercițiu, greșeală, corectare, reluare, consolidare. Fiecare concept nou trebuie construit pe cel anterior, prin activitate practică. Literatura de specialitate din didactica informaticii confirmă ceea ce observăm zilnic la clasă: înțelegerea programării este lentă, necesită expunere repetată în contexte variate și nu suportă comprimarea excesivă (Duran, Zavgorodniaia & Sorva, 2022; Belmar, 2022).
4. C++ nu este nostalgie, este pedagogie
O obiecție pe care o aud adesea este că apărarea C++ ar fi un gest conservator, o rezistență la modernizare. Înțeleg de unde vine această percepție, dar nu o consider corectă.
Motivul pentru care C++ funcționează atât de bine în predarea bazelor programării nu este că este un limbaj vechi sau familiar profesorilor. Este că face vizibil ceea ce Python ascunde. Când un elev scrie int x = 5; în C++, el știe că x este un număr întreg, că ocupă un spațiu fix în memorie și că dacă depășește o anumită valoare, apare o eroare. Când scrie cin >> x, primește exact tipul de dată pe care l-a declarat. Când face o greșeală de sintaxă, programul nu compilează și elevul înțelege că regulile contează. În Python, același lucru arată diferit: x = input() returnează întotdeauna un șir de caractere, indiferent ce tastează elevul. Ca să obținem un număr întreg, trebuie să scriem x = int(input()), ceea ce îl obligă pe elev să aplice o conversie de tip înainte să fi înțeles ce sunt tipurile de date. Transparența pe care C++ o oferă prin declararea explicită a tipului dispare complet, înlocuită cu o flexibilitate care, în etapa de început, creează mai multă confuzie decât claritate.
Această transparență este, din punct de vedere pedagogic, extraordinar de valoroasă. Ea permite construirea unui model mental corect despre cum funcționează un program, model care va rămâne valid indiferent de limbajul pe care îl va folosi elevul în viitor. Nu pledez pentru C++ ca limbaj exclusiv și permanent. Pledez pentru C++ ca fundament, ca primă treaptă în formarea gândirii algoritmice.
5. Programarea orientată obiect în clasa a IX-a
Un capitol aparte îl reprezintă introducerea programării orientate pe obiecte (POO) în programa clasei a IX-a. Din experiența mea la catedră, POO este unul dintre cele mai dificile concepte pe care le predau – și o predau elevilor de clasa a XI-a, după doi ani în care au lucrat cu variabile, funcții, tablouri și algoritmi. Chiar și în aceste condiții, mulți elevi au nevoie de timp și de multe exemple practice pentru a înțelege cu adevărat ce este o clasă, ce este un obiect și de ce este util să lucrezi astfel.
Cercetările în didactica informaticii confirmă că POO ridică dificultăți semnificative inclusiv la nivel universitar (Efan et al., 2023). Introducerea ei în clasa a IX-a, înainte ca elevii să fi consolidat structurile de control și să fi experimentat suficient cu funcții simple, riscă să genereze confuzie generalizată. Un elev care nu a înțeles încă diferența dintre o variabilă locală și una globală nu are resursele cognitive necesare pentru a înțelege ce este o metodă sau de ce datele unui obiect sunt separate de datele altui obiect.
6. O îngrijorare pentru colegii mei: formarea profesorilor
Nu pot încheia fără a semnala un aspect pe care îl consider la fel de important ca problema curriculară în sine: formarea profesorilor.
Mulți dintre colegii mei predau informatică de mulți ani, cu rezultate excelente, folosind C++. Nu toți au lucrat sau au aprofundat Python în contexte didactice. Tranziția la un limbaj nou nu înseamnă doar să înveți sintaxa, înseamnă să înțelegi didactica lui, să știi ce greșeli tipice vor face elevii, să ai exerciții bine construite, să cunoști platformele de evaluare, să poți diagnostica rapid erorile din codul elevilor. Toate acestea se construiesc în timp, prin practică și reflecție.
Trebuie menționat și un aspect practic adesea ignorat: platformele de evaluare online folosite curent (pbinfo, infoarena, campion, kilonova) sunt construite în jurul limbajelor C/C++. O tranziție bruscă face aceste instrumente inutilizabile, fără alternative validate disponibile imediat. La toate acestea se adaugă o realitate pe care nu o putem ignora: nu există încă manuale pentru noua programă, iar anul școlar viitor începe în câteva luni. Un profesor care trebuie să predea un limbaj nou, fără manual, fără platforme de evaluare adaptate și fără o formare profesională adecvată, este pus într-o situație imposibilă și, în final, tot elevii sunt cei care suportă consecințele.
Dacă schimbarea curriculară se va produce, ea trebuie însoțită obligatoriu de un program serios, susținut și finanțat de formare a cadrelor didactice, nu o sesiune de câteva ore de prezentare a noii programe, ci o formare autentică, cu standarde ridicate, care să aducă profesorii la nivelul de competență cerut.
7. Concluzii
Scriu acest articol nu ca un adversar al schimbării, ci ca un profesor care a văzut, în 28 de ani la catedră, destui elevi luptând cu concepte introduse prea devreme și prea repede. Știu cum arată confuzia unui elev care nu înțelege de ce programul lui nu funcționează. Știu și cum arată satisfacția aceluiași elev când, după ore de exercițiu, lucrurile se leagă.
Programarea se predă pas cu pas, concept după concept, cu răbdare și cu mult exercițiu practic. Fiecare concept are nevoie de timp pentru a se sedimenta. Python este un limbaj extraordinar, dar extraordinarul lui devine vizibil abia atunci când elevul are deja un fundament solid. Introdus prematur, pe un fond de concepte neconsolidate și într-un buget de timp insuficient, riscă să producă exact opusul a ceea ce ne dorim: elevi care știu să tasteze cod, dar nu știu să gândească algoritmic.
România are o tradiție valoroasă în formarea programatorilor de calitate. Această tradiție nu trebuie abandonată, ea trebuie modernizată cu grijă, în ritmul în care elevii și profesorii o pot absorbi cu adevărat.
Bibliografie
Belmar, H. (2022). Review on the teaching of programming and computational thinking in the world. Frontiers in Computer Science, 4, 997222. doi.org/10.3389/fcomp.2022.997222
Duran, R., Zavgorodniaia, A., & Sorva, J. (2022). Cognitive Load Theory in Computing Education Research: A Review. ACM Transactions on Computing Education, 22(4), Article 40. doi.org/10.1145/3483843
Efan, Krismadinata, Jama, J., & Mulya, R. (2023). A Systematic Literature Review of Teaching and Learning on Object-Oriented Programming Course. International Journal of Information and Education Technology, 13(2), 302–312. doi.org/10.18178/ijiet.2023.13.2.1808