joi, 9 februarie 2012

Informatica in liceu

Pe mai multi profesori de informatica de facultate i-am auzit mereu sa se planga de modul in care este predata informatica in liceu. Zilele acestea am inteles si eu de ce. Un baiat din vecini, elev in clasa a IX-a la un liceu cu o sectie de profil, stiind ca "domnul de la 2" e bun la informatica, m-a rugat sa il ajut in rezolvarea unei probleme in pseudocod.

Enuntul problemei:

Se da un numar natural n. Sa se determine cel mai mare numar prim mai mic decat n.

Bun, nimic complicat. Unde e problema si unde vreau eu sa ajung de fapt? La modul "tâmp" de fortare a elevilor sa toceasca dea dreptul algoritmii. Ii ofer copilului urmatoare solutie, intr-un pseudocod cat mai apropiat de pseudocodul profesorului de la liceu:

intreg n, i, gasit;
citeste n;
i = n - 1;
gasit = 0;
cat timp ! gasit
inceput
   daca i este prim
   inceput
      afisare i;
      gasit = 1;
   sfarsit
   i = i - 1;
sfarsit

Bun, problema rezolvata. Copilul baiat desptet, ma intreaba imediat ce e cu conditia daca "i este prim". A urmat aproximativ urmatorul dialog intre noi:

Eu: Exceptand conditia respectiva, restul problemei l-ai inteles?
El: Da, e foarte simpla. N-am inteles cum de putem scrie daca "i este prim".
Eu: Pai aia e cu totul o alta problema pe care o ai rezolvata deja doua pagini inainte in caiet daca te uiti.
El: Stiu ca o am, dar nu trebuie sa o "bagam" si pe problema aia in asta?

Bun frate, nu i-ai invatat inca subprograme, dar nu forta copiii sa scrie programe in pseudocod lungi de 2 pagini. Ma intreb cati din profesorii de informatica din liceu au citit cartea lui Robert C. Martin: "Clean Code: A Handbook of Agile Software Craftsmanship". O traducere interesanta a unui citat celebru din aceasta carte am gasit pe CodingRomania.net:

Cele doua reguli de baza in scrierea unei functii sunt:
i) o functie trebuie sa fie foarta scurta;
ii) o functie trebuie sa fie mai scurta decat spune prima regula.

Poate ca unii dintre cititorii blogului imi vor reprosa ca algoritmul meu in pseudocod da rateuri pentru n = 2 spre exemplu si ca nu valideaza datele de intrare. Ce validare? In liceu nu s-a auzit de validarea datelor de intrare!

Adevarul e ca nici nu ar trebui sa fim pretentiosi cu profii de info din liceu. Un absolvent bun al unei facultatii de informatica sau calculatoare sigur nu se face prof de info. Pentru ce? Pentru 800 de lei (sau pe acolo, Boc knows).

V-a placut postul? Fiti sociabili si dati mai departe pe reteaua de socializare preferata.

Niciun comentariu:

Trimiteți un comentariu