Arhiva

Archive for Decembrie 2008

a fost odata revelionul de altadata

Decembrie 31, 2008 2 comentarii

Evenimentul Zilei, Cu programul de Revelion nici Ceausescu nu se juca  

Si uite asa se arata in articolul cu pricina cum erau revelioanele pe vremuri: minunate, valoroase, pline de vlaga, un regal, un fast – zice la articol. Si se argumenteaza ca erau „poante bune”, „vedete care îi ţineau pe români în faţa micilor ecrane”, cuplete muzicale, monologuri şi recitaluri. Nu apuc bine sa ma dezmeticesc si apar si nume care sa confirme: Mirabela Dauer, Marius Teicu, Stela Popescu, Vasile Murariu. Mirabela ne marturiseste cu lacrimi in ochi ca „te simteai un adevarat artist”. Mi-e putin jena de durerea artistei dar trec mai departe si citesc comentariile in contra ale unei fete: „vreau sa stiti ca va dispretuiam pe toti, de la un capat la celalalt, fara exceptie si ca nu dadeam nici doi bani pe „performantele” voastre. urasc sa-mi amintesc revelioanele in alb-negru, precedate de o istovitoare goana prin oras, in cautare” de hrana… ca mutanta, ca animala. urasc sa-mi amintesc ultimile 10-15 revelioane de dinainte de emigrare, noptile acelea sinistre in care aveam mainile prea inghetate si constiinta prea amortita sa-mi mai fi pasat, sa fi avut macar curajul sinuciderii. VOI ma aduseserati in starea aceea de nevertebrata; voi, cu colaborationismul, lasitatile si pupin** ismele voastre absolut dezgustatoare. nici unu dintre voi nu s-a opus pe fata, nici unu n-a dat vreun semnal ca ne-am fi putut revolta, ca mai puteam spera sa fim liberi. de aceea va dispretuiam. dar mi-a trecut si v-am iertat. si continui sa cred ca nimic nu e mai presus decat Libertatea Spiritului.”

la care replica intelectuala de sorginte romaneasca nu intarzie: „esti cretina complet.stai la muma direacului acolol e locu tau locusta nevertebrata” 

Ce dreq se intampla?! E confuza si mofluza situatia, auzi dar chiar asta e intrebarea?, care erau mai bune: alea sau astea? Pai e demonstrat matematic ca bananele inainte de 89 erau mult mai bune decat alea de dupa. Asta poate sa confirme oricine a trait acele vremuri. In ceea ce o priveste pe Mirabela o inteleg, pe vremea aia avea 30 de ani pe cand acum e imbatranita si nu o mai baga nimeni in seama. Ghinion de nesansa insa hai sa nu ne apucam sa tragem concluzii pripite, va fi tot timpul greu de facut comparatie intre penibil si ridicol. Revelioanele de manelisti organizate de televiziunile romanesti post-89 nu plac nimanui insa din doua rele nu inseamna ca trebuie musai sa alegi ceva.

gazeta matematica

Decembrie 31, 2008 2 comentarii

Si uite asa alergand eu pe web in ajun de anul nou dadui peste aceasta informatie: „Prin anii ’80, Gazeta ajunsese la un tiraj de 135.000 de exemplare, din care 110.000 erau abonamente. În prezent, tirajul este de 8.000 de exemplare.
(http://www.gazetamatematica.net/?q=node/105

Ma opresc aici ca mi-e teama sa nu sar la cine stie ce concluzii.

Categorii:obsesii Etichete:,

Despre cruzimea procesului de predare a cursurilor de calculatoare. (4)

Decembrie 30, 2008 Lasă un comentariu

(in original la website-ul lui Dijkstra – link)

Am avut cristalul meu de magician de suficient de mult timp. Prezicerile lui sunt invariabil deprimante si de obicei corecte, dar deja m-am obisnuit cu asta si n-o sa ma tina din sugerat cate lucruri, chiar daca este numai un exercitiu in inutilitate al carui singur efect va fi acela de a va face sa va simtiti vinovati.

Am putea, de exemplu, prin a incepe sa curatam limbajul in domeniu, e cazul sa ne oprim din denumit un „bug” „bug”, si sa-l numim „eroare”. Este mult mai onest, pentru ca pune vina acolo unde este de fapt, pe programatorul care a creat eroarea. Metafora „gandacului” care s-a strecurat pe nesimtite cand programatorul se uita inalta parte este intelectual neonesta, pentru ca deghizeaza faptul ca eroarea este de fapt creata de programator. Lucrul de admirat in aceasta simpla schimbare de vocabular este ca are un impact profund: in time ce, inainte, un program cu un „bug” era „aproape corect”, dupa, un program cu o eroare este pur si simplu „gresit”.

Urmatoarea sugestie lingvistica este mai riguroasa. Este sugestia de a lupta cu sindromul „daca asta vrea sa vorbeasca cu celalalt”: trebuie sa ne oprim din antropomorfizat parti de programe sau echipamente, si studentii nu ar trebui lasati sa faca asta. Imbunatatirea aceasta lingvistica este mult mai dificil de implementat, si un departament ar putea sa impuna amenzi pentru violarea regulii – sa zicem 25 centi pentru studentii din programul primar, 50 pentru masteranzi si doctoranzi si 5 dolari pentru cadrele didactice: la finele primului semestru cu noul regim, probabil vor fi suficienti bani pentru doua burse.

Motivul acestei sugestii este ca metafora antropomorfica – pentru care trebuie sa-i multumim lui John von Neumann – este un handicap enorm pentru comunitatea calculatoarelor care a adoptat-o. Am intalnit deja programe care doreau, stiau, asteptau, credeau, etc., si de fiecare data asta a dat nastere unor confuzii evitabile. Analogia de sub aceasta personificare este atat de superficiala incat nu numai pacaleste, dar si paralizeaza.

Pacaleste in sensul ca sugereaza ca ne putem descurca in mod adecvat cu universul discret nefamiliar pus in termeni ai familiarului continuu, adica noi insine. Si este paralizanta in sensul in care, din cauza ca persoane exista si actioneaza in timp, adoptarea metaforei blocheaza in mod eficace parasirea semanticilor operationale si astfel forteaza programatorii sa-si gandeasca programele in termenii comportamentelor computationale, care ruleaza insa pe un alt model computational. Asta e un lucru rau, pentru ca rationamentul in termen de operatii este un urias efort mental inutil.

Dati-mi voie sa explic natura acestei incredibile inutilitati, si dati-mi voie sa incerc sa va conving ca afirmatia nu este o exagerare. Pentru o scurta vreme voi trece la explicatii tehnice, dar nu e cazul sa va speriati: este genul de matematica ce poate fi abordata cu mainile in buzunare. Ceea ce vreau sa afirm este ca daca vrem sa demonstram ceva despre toate elementele dintr-un set mare, este incredibil de ineficient sa ne ocupam de fiecare din elemente in mod special: argumentatia eficace nu se va referi la fiecare din elementele individuale deloc, ci va fi exprimata in termenii definitiei setului.

Sa consideram o figura in plan din 8×8 patrate, pe care o numim Q, si din care extragem, din doua colturi diametral opuse, doua patrate. Aria lui Q devine 62, care este egala cu aria a 31 de piese de domino. Teorema care trebuie demonstrata este ca figura Q nu poate fi acoperita de 31 de piese de domino.

Alta cale de a enunta teorema este ca daca pornesti de la o bucata patrata de hartie si incepeti sa o acoperiti plasand piese de domino una langa alta, nici un plasament de 31 de dominouri nu poate crea figura Q.

O posibila cale de a demonstra teorema este prin generarea tuturor plasamentelor de piese de domino si verificarea faptului ca plasamentele nu creaza figura Q: un efort imens.

Demonstratia simpla urmeaza. Colorati patratele ca pe o tabla de sah. Fiecare domino, acoperind doua patrate adiacente, va acoperi un patrat alb si unul negru, si, deci, fiecare plasament de piese de domino va acoperi la fel de multe patrate albe cate negre. Figura Q, insa, va avea un numar de patrate albe diferit cu doua de numarul de patrate negre, de vreme ce colturile opuse inlaturate erau de aceeasi culoare – in final, nici un plasament posibil de dominouri nu va acoperi figura Q.

Nu numai ca simpla demonstratie de mai sus este cu multe ordine de magnitudine mai scurta decat cautarea exhaustiva prin toate posibilele plasamente, dar este in mod esential mai puternica, pentru ca permite generalizarea figurii Q de la un patrat de 8 pe 8 la orice dreptunghi cu laturile de lungimi pare. Numarul acestor dreptunghiuri fiind practic infinit, metoda cautarii exhaustive se dovedeste inadecvata pentru demonstratia teoremei generalizate.

Si cu asta inchei exemplul. L-am prezentat pentru ca ilustreaza pe scurt puterea matematicii aplicate; nu mai e nevoie sa adaug, refuzul de a exploata aceatsa matematica echivaleaza cu o sinucidere intelectuala si tehnologica. Morala povestii devine: ignora elementele individuale ale multimii si lucreaza pe definitie.

Inapoi la programare. Afirmatia cum ca un program dat indeplineste o specificatie se reduce la o afirmatie despre toate calculele care s-ar putea intampla in programul respectiv. Si de vreme ce aceste set de calcule este definit de programul dat, morala recenta ar putea sa spuna: ignora toate calculele posibile ale programului si lucraza cu programul. Trebuie sa invatam sa lucram cu texte de program (deocamdata) in timp ce ignoram faptul ca ele permit interpretarea codului executabil.

Un alt mod de a spune cele de mai sus este urmatorul: un limbaj de programare, cu sintaxa formala si cu regulile de demonstrare care ii definesc semantica, este un sistem formal pentru care executia programului este numai un model. Este bine stiut faptul ca sistemele formale trebuiesc abordate ca atare, si nu puse in termenii unui model specific. Si, din nou, corolarul este ca ar trebui sa ne gandim la program fara nici un fel de mentiune la posibilele lui „comportamente”.

Si asta incheie mica excursie tehnica in motivul pentru care rationamentul operational despre programare este „un imens si inutil efort”, si, de ce, din cauza asta, antropomorfizarea ar trebui interzisa.

Nu toata lumea intelege cele de mai sus suficient de bine. De curand am asistat la demonstratia a ceva care pretindea a fi un software educational pentru un curs de programare introductiv. Cu „vizualizarile” de pe ecran era un exemplu evident de infantilizare a educatiei, iar autorul ar fi trebuit sa fie judecat pentru desconsiderarea studentilor, dar asta era o ofensa minora pe langa modul in care vizualizarie erau folosite: erau folosite pentru demonstrarea a tot felul de prelucrari evoluand sub controlul programului studentului. Sistemul demonstra cu exactitate ceea ce studentul trebuia sa invete sa ignore, punea accentul pe exact ceea ce studentul trebuia sa uite. De vreme ce ruperea de obiceiurile rele, mai degraba decat invatatul altor obiceiuri, este partea cea mai dificila a procesului de invatare, trebuie sa ne asteptam de la sistemul acela la pagube mentale permanente pentru studentii care au fost expus la el.

Nu e nevoie sa afirm, acel sistem ascundea faptul ca, de unul singur, un program nu este mai mult decat jumatate dintr-o conjunctura. Cealalta parte a conjuncturii este specificatia functionala a programului pe care el trebuie sa o satisfaca. Munca programatorului este de a prezenta conjuncturi complete ca teoreme demonstrate.

Inainte sa ne despartim, as vrea sa va invit sa considerati urmatoarea cale de a face dreptate noutatii radicale a calcului intr-un curs de programare introductiv.

Pe de o parte, predam ceva ce pare calcul predicativ, dar o facem intr-un mod diferit de filozofi. Ca sa antrenam novicii in manipularea formulelor neinterpretate, predam calculul mai degraba ca pe algebra booleana, familiarizand studentul cu proprietatile algebrice ale conectorilor logici. Ca sa retezam mai departe legaturile cu intuitia, vom redenumi valorile de adevar si fals intr-un domeniu boolean cu alb si negru.

Pe partea cealalata, predam un limbaj de programare imperativ, simplu, clar, cu salt si asignari multiple ca instructiuni de baza, cu structuri de blocuri pentru variabile locale, cu punct si virgula pentru demarcarea instructiunilor, cu operator de constructie bine definit, cu o bucla usor de utilizat, si, daca se doreste, cu un apel de procedura. La asta adaugam un minim de tipuri de date, sa zicem booleene, intregi, caractere si siruri de caractere. Faptul estential este ca, pentru orice introducem, semanticile corespunzatoare sunt definite de regulile de demonstratie introduse cu limbajul.

Chiar de la inceput, si apoi in intreg cursul, subliniem faptul ca problema programatorului nu este numai sa scrie un program, dar ca partea esentiala consta in demonstratia formala a faptului ca programul indeplineste specificatia functionala definita in mod formal. In timp ce dezvolta programe si demonstratia lor in acelasi timp, studentul are ocazia ampla de a-si perfectiona agilitatea in a manipula calculul predicativ. In cele din urma, pentru a sublinia mesajul ca cursul deprogramare introductiv este in mod primar un curs in matematici formare, vom avea grija ca limbajul de programare respectiv nu este de fapt implementat, pentru a ii tine pe studenti departe de dorinta de a-si testa programele. Si cu asta inchei schita propunerii pentru cursul introductiv de programare pentru studentii din anii incepatori.

Este o propunere serioasa, si cat se poate de bine gandita. Singurul dezavantaj este ca e prea radicala pentru multi, care, nefiind in stare sa o accepte, sunt fortati sa inventeze un motiv imediat, indiferent cat de invalid, pentru a o contrazice. Voi da cateva exemple de astfel de motive imediate.

Nu e nevoie sa-mi luati propunerea in serios pentru ca „e atat de ridicola incat e evident ca sunt complet rupt de realitate”. Dar motivul asta nu tine, pentru ca cunosc realitatea prea bine: problemle realitatii sunt exact aceia cu care ramaneti cand refuzati sa aplicati solutiile lor efective. Asa ca sa incercam din nou.

Nu e nevoie sa-mi luati propunerea in serios pentru ca e „este incredibil de nerealist sa predati asa ceva studentilor din anii primari”. Dar n-ar fi acest motiv doar o cale usoara de a iesi din impas? Postulati ca ar fi mult prea dificil. Dar nici acest motiv nu tine, pentru ca postulatul a fost deja dovedit gresit: inca de la inceputul anilor 80 astfel de programe au fost predate deja cu succes studentilor din anii primari. (pentru ca, din experienta, spunand acest lucru o singura data nu e suficient, propozita precedenta ar trebui repetata macar de doua ori). Dar sa incercam din nou.

Admitand cu reluctantaca poate ar putea fi predat unor studenti suficient de docili, refuzati totusi propunerea pe motivul ca asa un curs ar devia prea mult de la ceea ce studentii de 18 ani sunt obisnuiti si asteapta sa fie invatati, si ca deci expunandu-i la asa un curs ar fi un act de iresponsabilitate: i-ar frustra numai pe studenti. Nu mai e nevoie sa o spun, nici motivul asta nu tine. Este adevarat ca studentii neobisnuiti in a manipula formule neinterpretate realizeaza destul de repede ca sunt confruntati cu ceva complet nou. Dar, din fericire, regulile manipularilor in acest caz sunt putine si simple, in asa fel incat repede face placuta descoperire ca incepe sa devina expert intr-o unealta, care, in intreaga ei simplitate, ii da o putere care depaseste cu mult orice imaginat in prealabil.

Predarea utilizarii eficace a metodelor formale in fata unor studenti luati prin surprindere este una din bucuriile mele personale, pentru ca da rezultate extrem de benefice. In cateva luni, ei isi gasesc drumul in lumea noua cu un grad inalt de confidenta care e complet nou pentru ei; in cateva luni de zile conceptul lor de cultura intelectuala capata o dimensiune radical noua. Dupa gustul si parerea mea, aceasta e adevarata educatie. Universitatilor n-ar trebui sa le fie frica sa predea concepte radical noi; dimpotriva, asta le este chemarea, de a aborda cu bratele deschise oportunitatea respectiva. Dorinta lor de a face asta ar trebui sa fie principala arma impotriva dictaturii, fie ea proletara, a stabilimentului stiintific sau a elitei economice.

Austin, 2 Dec 1988
prof. dr. Edsger W. Dijkstra
Department of Computer Sciences
The University of Texas at Austin
Austin, TX 78712-1188
USA

Categorii:baliverne

Despre cruzimea procesului de predare a cursurilor de calculatoare. (3)

Decembrie 29, 2008 Lasă un comentariu

(in original la website-ul lui Dijkstra – link)

Urmeaza partea a doua – si cea dificila – a discursului: consecintele educationale si stiintifice ale celor de mai sus. Consecintele educationale sunt, binenteles, cele mai complicate, asa ca le voi amana si voi sta pentru o vreme la partea legata de stiinta calculatoarelor. Ce inseamna calculul? Si despre ce este vorba in aceasta stiinta de fapt?

Ei bine, in cele din urma, singurele lucruri pe care calculatoarele le pot face pentru noi sunt sa manipuleze simboluri si sa produca rezultatele acestor manipulari. Din observatiile precedente sa amintim ca aceasta este o lume discreta, si, mai mult decat atata, ca si numarul de simboluri implicate si cantitatea de manipulare implicata sunt multe ordine de magnitudine mai mari decat ce ne-am imaginat: in continuare sunt deasupra oricarei imaginatii, si deci nu trebuie sa mai incercam sa ni le imaginam.

Dar, inainte ca un calculator sa fie gata sa execute niste manipulari utile, cineva trebuie sa scrie un program. Ce este un program? Cateva raspunsuri ar fi posibile. Putem vedea un program ca ceea ce transforma un calculator generic intr-un manipulator specializat de simboluri, si face asta fara fara sa necesite schimbarea vreunui fir (lucru care constituie un avantaj enorm fata de panourile cablate care rezolvau probleme predefinite). Prefer insa sa descriu un program in mod diametral opus: programul este manipulator abstract de simboluri, care poate fi transformat intr-unul concret aducand un calculator pe care sa ruleze. Pentru ca, la urma urmei, scopul programului nu este acela de a ne instrui masinile; in zilele acestea scopul calculatorului este acela de a executa programe.

Deci, trebuie sa imaginam manipulatoare de simboluri abstracte. Cu totii stim cum arata: arata ca niste programe sau – folosind o terminologie mai generala – ca niste formule elaborate din niste sisteme formale. Ajuta daca privim programele ca fiind niste formule. In primul rand, il punem pe programator intr-o postura corecta – mai intai trebuie sa afle formula. In al doilea, explica de ce lumea matematicii aproape ca ignora provocarea programarii: programele sunt niste formule atat de lungi incat nici macar nu sunt recunoscute ca atare. Acum sa ne intoarcem la sarcina programatorului – aceea de a deriva formula, sau programul. Stim o singura cale de a face asta, prin manipularea simbolurilor. Si acum cercul se inchide: construim manipulatoarele mecanice de simboluri pe calea manipularii umane de simboluri.

Si atunci, stiinta calculatoarelor se ocupa – si intotdeauna se va ocupa – cu jocul dintre manipularea mecanica si umana de simboluri, referite de obicei prin sintagmele „calcul” si respectiv „programare”. Un beneficiu imediat al acestei analize este faptul ca releva „programarea automata” ca fiind o contradictie in sine. Un alt beneficiu este faptul ca da o indicatie clara asupra locului in care ar trebui sa situam stiinta calculatoarelor pe harta globala a disciplinelor intelectuale: in directia matematicilor formale si a logicii aplicate, totul impins insa mult mai departe decat ce am avut pana acum, pentru ca stiinta calculatoarelor este interesata de aplicarea efectiva a metodelor formale la o scara mult mai larga decat cea de pana acum. Si pentru ca nici o intreprindere de genul asta nu e suficient de respectabila fara un Acronim de Trei Litere (ATL), propun sa adoptam pentru stiinta calculatoarelor Initiativa Metodelor Formale (IMF), si,  ca sa fim siguri, ar trebui sa urmam exemplul liderilor nostri si sa il inregistram ca marca.

Pe termen lung ma astept ca stiinta calculatoarelor sa se transforme in disciplinele din care provine, matematica si logica, realizand ca o buna parte din Visul lui Leibniz de a oferi calculul simbolic ca alternativa a rationamentului uman. (sper ca e clara diferenta intre „a mima” si „a oferi o alternativa”: alternativele pot fi chiar mai bune).

Nu e nevoie sa mai spun, viziunea aceasta nu e chiar universal incurajata. Dimpotriva, a fost intampinata de o larga – si uneori violenta – opozitie din tot felul de directii. Voi mentiona ca exemple:

(0) comunitatea matematica, care in continuare prefera sa creada ca Visul lui Leibniz ramane o iluzie nerealizabila

(1) comunitatea economica, care, fiind convinsa deja ca calculatoarele pot face viata mai usoara, este nepregatita mental sa accepte ca foloseste calculatoarele numai pentru a rezolva strict problemele usoare, cu pretul crearii unora mult mai dificile

(2) subcultura programatorilor compulsivi, a caror etica prescrie ca o idee nastrusnica si o luna de scris cod la repezeala ar trebui sa fie suficient sa-i faca milionari pe viata

(3) ingineria calculatoarelor, care continua sa se comporte ca si cum totul nue decat o problema de rate de transfer de biti si mai multe operatii pe secunda

(4) armata, total absorbita de businessul transformarii bugetelor de miliarde de dolari intr-o iluzie a sigurantei automate

(5) toate stiintele umane, pentru care calculul este un fel de loc de refugiu interdisciplinar

(6) educatia, care simte ca daca trebuie sa predea matematici formale studentilor in calculatoare, ar putea la fel de bine sa inchida scolile

Si cu aceste sase exemple am ajuns, pe nesimtite, dar implacabil, la partea cea mai complicata: consecintele educationale.

Problema cu politica educationala este ca nu e influentata major de consideratiile stiintifice derivate din topicele predate, ci determinata aproape in intregime de circumstante extra-stiintifice precum asteptarile combinate ale studentilor, parintilor si viitorilor angajatori, si punctul de vedere universal asupra rolului predeterminat al universitatilor: efortul principal ar trebui pus in pregatirea studentilor pentru slujbe la nivel de incepator, sau in pregatirea unui bagaj de cunostinte si atitudini care sa-i sustina pentru inca 50 de ani? Vom oferi morocanosi stiintelor abstracte coltul cel mai indepartat din campus, sau le recunoastem ca fiind motorul indispensabil al oricarei industrii de tehnologie inalta? Chiar si in cazul al doilea, vom recunoaste o industrie ca fiind tehnologica daca tehnologia ei provine in primul rand din bransa matematicilor formale? Ofera universitatile societatii conducerea intelectuala de care aceasta are nevoie, sau numai pregatirea respectiva?

Retorica academica traditionala este perfect de acord in a oferi acestor intrebari raspunsuri linistitoare, dar eu personal nu o cred. Voi exemplifica dubiile mele printr-un articol recent despre „Cine conduce Canada?”, in care David H. Flaherty spune direct ca „Mai mult de atat, elita economica nu recunoaste mediul academic traditional si intelectualitatea, considerand-o irelevanta si fara puteri”.

Asa ca, daca ma uit in cristalul meu de magician la viitorul educatiei in stiinta calculatoarelor, vad cu precadere o situatie deprimanta de „business as usual”. Universitatilor le va lipsi in continuare curajul de a preda stiinte exacte, vor continua sa pacaleasca studentii, si fiecare pas de infantilizare a cursurilor va fi prezentat drept succes al progresului in educatie.

(va urma)

Categorii:baliverne

Despre cruzimea procesului de predare a cursurilor de calculatoare. (2)

Decembrie 28, 2008 Lasă un comentariu

(in original la website-ul lui Dijkstra – link)

Dati-mi voie sa dau inca un exemplu de lipsa de credinta in existenta noutatilor radicale si, deci, de lipsa de credinta in nevoie de a invata cum sa le abordam. Practica educationala cea mai des intalnita este aceea de a prezenta schimbarea intr-un mod gradual, aproape imperceptibil. Cate texte educationale nu sunt recomandate din cauza ca apeleaza la intuitia studentului! Ele incearca in mod permanent sa prezinte tot ce ar putea sa fie o noutate incitanta drept ceva cat de familiar posibil. In mod constient incearca sa lege noul de ceva ce ar trebui sa fie cunoscut. Incepe cu aritmetica. In loc sa invete ca „2 + 3 = 5”, hidosul operator „+” este camuflat cu grija in conjunctia „si”, iar apoi copiilor le sunt date exemple familiare, preferand obiectele vizibile de genul merelor si perelor celorlalte exemple, la fel de numarabile, precum electronii sau procentele. Aceeasi traditie nastrusnica se reflecta si la nivelul universitar, in diferitele cursuri introductive de analiza matematica pentru viitorul fizician, arhitect sau manager, fiecare ornat cu exemple din mediile respective. Dogma educationala pare sa fie aceea ca totul e ok atata vreme cat studentul nu observa ca invata ceva nou; si de cele mai multe ori, impresia studentului este intr-adevar corecta. Dar consider ca esecul practicii educationale de a pregati noua generatie pentru fenomenul noutatilor radicale va fi o problema serioasa. [Cand Regele Ferdinand a vizitat conservatoarea Universitate din Cervera, Rectorul l-a asigurat pe monarh cu mandrie ca „departe de noi, Sire, primejdioasa noutate a gandirii”. Problemele Spaniei in secolul care a urmat justifica caracterizarea problemei ca fiind „serioasa”.] Dar atat despre adoptarea paradigmei schimbarii graduale in educatie.

Conceptul noutatii radicale are o semnificatie actuala, pentru ca, in acest timp in care noi suntem nepregatiti sa le abordam, stiintele si tehnologia sunt experte in a ni le oferi. Exemple precedente din stiinta sunt teoria relativitatii si mecanica cuantica; exemple tehnologice mai tarzii ar fi bomba atomica si pilula. Timp de decade, primele au dat nastere unui torent de extensii religioase, filozofice sau pseudo-stiintifice. Si zilnic putem observa profunda inadecvare cu care cele din urma sunt abordate, fie de catre oamenii nostri de stat sau de liderii religiosi sau chiar de largul public. Si cam atata despre paguba produsa linistii noastre de catre noutatile radicale.

Pomenesc despre toate aceste lucruri pentru ca sustin ca calculatoarele reprezinta o noutate radicala, si ca numai identificandu-le ca atare putem sa filtram nonsensul, neintelegerile si mitologia din jurul lor. O inspectie mai amanuntita va releva faptul ca este mai mult de atat, si anume ca calculatoarele nu reprezinta o singura noutate radicala ci doua.

Prima noutate radicala este o consecinta directa a puterii efective a echipamentelor de calcul actuale. Cu totii stim cum sa abordam ceva complex si mare – „imparte si stapaneste”, adica afla partile intregului si studiaza fiecare parte in mod separat. Daca partea in continuare este prea mare, repeta procesul. Orasul este alcatuit din cartiere, care sunt structurate pe strazi, care contin cladiri, care sunt facute din ziduri si etaje, care sunt construite din caramizi, etc, pana cand in cele din urma ajungem la nivel de particule. Si, pentru intregul proces, avem specialisti in fiecare din nivelele de partitionare ale problemei, de la urbanisti, prin arhitect, catre fizicianul in mecanica solidelor si asa mai departe. Din cauza ca, intr-un fel, intregul este mai mult decat suma partilor, adancimea ierarhiei de partitionare este un fel de logaritm al raportului dintre „marimile” intregului si ultima, cea mai mica parte. Dar, de la un bit la cateva sute de megaocteti, de la o microsecunda la o ora de calcul, ne confruntam cu rapoarte naucitoare de 10^9 (10 la puterea a 9-a)! Programatorul este intr-o pozitie unica, meseria lui este singura in care un raport de asa o magnitudine, de neimaginat, trebuie sa fie acoperit de o singura tehnologie. Este confruntat cu ierarhii conceptuale mult mai adanci decat orice alta ierarhie intalnita in trecut. Comparata ca numar de nivele semantice, teoria matematica de nivel mediu este aproape plata. In fine, facand evidenta necesitatea ierarhiilor conceptuale de mare adancime, calculatoarele ne confrunta, si ne arunca in fata o noua provocare intelectuala fara precedent in istorie.

Din nou, trebuie sa subliniez aceasta noutate radicala pentru ca un credincios in schimbarea graduala si in imbunatatirile treptate nu va fi capabil sa o vada. Pentru el, un calculator este ceva gen masina de marcat, dar oarecum mai mare, mai rapida, mai flexibila. Dar analogia este incredibil de superficiala: este de cateva ordine de magnitudine mai rea decat comparatia – ca mijloace de transport – dintre un avion supersonic si un bebelus, raportul in acest caz fiind numai de 10^3.

A doua noutate radicala este aceea ca calculatoarele sunt primele dispozitive digitale de scara mare. Am avut si inainte cateva componente discrete: tocmai ce am pomenit casa de marcat, si as putea sa adaug masina de scris – cu o singura apasare cineva poate obtine literele Q sau W, dar, desi tastele sunt una langa alta, nu poate obtine un amestec din ele. Dar aceste mecanisme sunt mai degraba exceptia, vasta majoritate a lucrurilor in realitate pot fi vazute mai degraba ca dispozitive analogice, a caror comportament acopera o arie mai larga a unei functii continui dependente de parametri implicati: daca apasam varful creionului un pic mai tare, vom obtine o linie un pic mai lata, daca violonistul pune degetul putin langa, vioara scoate un sunet un pic diferit. La aceasta ar trebui sa adaug ca, la modul in care ne privim pe noi insine ca mecanisme, ne consideram in mod primar niste dispozitive analogice: daca fortam un pic mai mult ne asteptam sa facem un pic mai bine. Foarte des comportamentul nu este numai continuu, ci urmareste si o functie monotona: ca sa aflam daca un ciocan se potriveste la un numar de cuie de diferite marimi, il incercam cu cel mai mic si cu cel mai mare, si daca rezultatele sunt pozitive, atunci tragem concluzia ca ciocanul va functiona cu toate cuiele din celelalte marimi.

Este posibil, ba chiar tentant, sa consideram un program un mecanism abstract, un fel de dispozitiv. Asta insa ar fi ceva foarte primejdios: analogia este superficiala, pentru ca un program, ca mecanism, este complet diferit de toate dispozitivele analogice care ne sunt familiare. Ca orice informatie codificata digital, are o proprietate neplacuta, aceea ca orice perturbatie, indiferent de infima – de exemplu schimbarea unui singur bit – poate avea consecintele cele mai drastice (de dragul completitudinii voi adauga ca introducerea mecanismelor de corectie a erorii sau redundanta nu schimba schimba situatia in mod esential). In lumea digitala nu exista nici o masuratoare valida cu care schimbarile „mici” merg mana in mana cu efectele „mici”, si nu va exista niciodata.

Aceasta a doua noutate radicala impartaseste soarta celorlalte: este negata, pentru ca admiterea adevarului ar fi prea deranjanta. Nu imi dau seama cati bani sunt irositi din cauza acestui adevar in SUA, dar o estimare de 1 milion de dolari pe zi mi se pare o estimare modesta.

Dupa ce am descris – recunosc ca in termenii cei mai generali – natura noutatilor din domeniul calculatoarelor, voi aduce dovezi ca aceste noutati sunt, intr-adevar, radicale. O voi face explicand un numar de fenomene ciudate precum eforturile sustinute – dar, dupa cum stim, condamnate – de a ascunde sau nega lipsa incomoda de familiaritate.

Un numar de exemple de fenomene din aceasta categorie sunt stranse sub titlul de „Inginerie Software”. Asa cum economia este poreclita „mizerabila stiinta”, ingineria software ar trebui poreclita „disciplina condamnata”, condamnata pentru ca nici macar nu se poate apropia de scopul urmarit de vreme ce scopul este contradictoriu in sine. „Ingineria” in acest domeniu se prezinta ca o cauza demna, dar asta e numai suprafata: daca citesti cu atentie literatura si analizezi ce fac devotatii ei, vei descoperi ca ingineria software si-a preluat ca motto „cum sa programezi cand nu poti programa”.

Popularitatea titlului respectiv este suficient sa o faca suspecta. In cele ce sunt denumite „societati primitive”, superstitia ca stiind cuiva numele adevarat iti da puteri asupra aceluia este relativ comuna. Cu greu se poate spune ca suntem mai putin primitivi: de ce continuam de exemplu sa raspundem la telefon cu un „alo” inutil, in loc sa ne spunem numele?

Mai departe, in continuare nu reusim sa ne ridicam deasupra superstitiei primitive care afirma ca obtinem control asupra unui demon necunoscut si rautacios daca ii dam un nume familiar si inocent, precum „inginerie”. Numele este simbolic, asa cum un producator american de calculatoare a demonstrat acum cativa ani, cand a angajat peste noapte cateva sute de ingineri software, prin metoda simpla de a ridica pe toti programatorii la nivel de invidiat respectiv. Cam atat si despre titlul cu pricina.

Practica este inundata de iluzia repetata ca programele sunt dispozitive ca oricare altele, singura diferenta admisa fiind aceea ca crearea lor ar putea cere un soi special de muncitori, si anume programatorii. De aici este un pas extrem de mic acela de a a masura „productivitatea programatorilor” in termenii „numarului de linii de cod pe luna”. Aceasta este insa o unitate de masura extrem de costisitoare, pentru ca incurajeaza crearea de cod inutil, dar am de gand sa evit pana si critica dintr-un punct economic de vedere. Punctul meu de vedere este ca, daca dorim sa numaram liniile de cod, acestea ar trebui vazute nu ca „linii produse”, ci ca „linii cheltuite”: acesta fiind un caz in care intelepciunea conventionala este atat de gresita incat se poate spune ca numara in directia gresita a axei.

Dincolo de notiunea de productivitate, cea de calitate a controlului continua sa fie distorsionata de iluzia confortanta ca ceea ce merge cu alte dispozitive merge si cu programele la fel de bine. Sunt deja doua decade de cand cineva a facut observatia ca testarea programelor poate demonstra prezenta defectelor dar nu absenta lor. Dar chiar si dupa dupa citarea cu convingere a acestei observatii, inginerul software se va intoarce la ordinea de zi si-si va imbunatati metoda de testare, la fel ca alchimistul de alta data, care continua sa-si imbunatateasca purificarile criocosmice.

O neasteptata lipsa de intelegere este revelata mai departe de termenul „mentenanta de software”, rezultand, in mentalitatea multora, in credinta ca programele sau limbajele de programare sufera de degradare a calitatii. Masina ta are nevoie de mentenanta, nu? Este cunoscut exemplul unei companii de petrol care a sustinut ca programele in Pascal nu vor dura cat cele scrise in Fortran, pentru ca „Pascal nu a fost mentinut”.

Pe aceeasi linie trebuie sa atrag atentia asupra uimitoarei usurinte in a accepta sugesta ca chinurile prin care trec programatorii sunt cauzate de lipsa unor „scule de programare” adecvate (dand nastere si expresiei „bancului de lucru al programatorului”). Din nou, aceeasi analogie superficiala demna de Evul Mediu. Confruntari cu un insipide „scule” din tagma „animatiilor de algoritmi” nu mi-au inmuiat judecata; dimpotriva, mi-au confirmat suspiciunile ca ne confruntam in primul rand cu o alta dimensiune ale unei afaceri cu „ulei de sarpe”.

In final, vreau sa corectez impresia gresita ca inabilitatea de a face fata noutatilor radicale ar fi rezervata lumii industriale, asa ca voi oferi o explicatie a popularitatii – cel putin in America – a bransei Inteligentei Artificiale. Cineva s-ar astepta ca oamenii sa se simta amenintati de „creiere uriase sau masinarii care gandesc”. De fapt, calculatorul infiorator devine mult mai putin infiorator cand este folosit la simularea unui noncomputer familiar. Sunt sigur ca aceasta afirmatie va ramane controversiala pentru o buna bucata de vreme, pentru ca se doreste ca Inteligenta Artificiala ca imitatoare a creierului uman sa fie partea cea mai vizibila, cand de fapt explicatia mea ii rezerva un loc mult mai modest. (Efortul de a folosi masini pentru imitarea mintii umane mi s-a parut intotdeauna oarecum copilaresc; as folosi masinile pentru imitat ceva mai bun de atat).

Si cam atat ca dovada ca noutatile in bransa calculatoarelor sunt, intr-adevar, radicale.

(va urma)

Categorii:baliverne

Despre cruzimea procesului de predare a cursurilor de calculatoare.

Decembrie 27, 2008 Lasă un comentariu

(in original la website-ul lui Dijkstra – link)

A doua parte a acestui discurs urmareste cateva din consecintele stiintifice si educationale ale presupunerii ca „calculatoarele sunt intr-adevar o noutate radicala”. Ca sa putem explica cu claritate aceasta presupunere, va trebui sa fiu foarte exact vis-a-vis de ceea ce inteleg prin „radical”, cel putin in acest context. Voi face asta in prima parte a discursului, in care voi produce dovezi in sprijinul afirmatiei.

Modul rational normal in care astazi planificam ceva pentru maine este cel in care folosim vocabularul de ieri. Facem asta pentru ca incercam sa ne descurcam cu concepte care ne sunt familiare si care si-au dobandit intelesul in cursul experientelor noastre anterioare. Binenteles, cuvintele si conceptele nu sunt perfect alese, pentru ca viitorul va fi diferit de trecut, dar, chiar si asa, vom incerca sa le extindem putin intelesul. Lingvistii sunt familiari cu fenomenul evolutiei cuvintelor in timp, si de asemenea stiu ca procesul este incet si gradual.

Ce urmeaza este modul cel mai natural in care incercam sa abordam problema noutatii: prin intermediul unor metafore si analogii vrem sa legam noul de vechi, noutatea de ce ne e familiar. In contextul unei schimbari incete si graduale, procesul merge suficient de bine; in contextul unei discontinuitati abrupte insa, metoda nu mai functioneaza: desi putem glorifica metoda ca fiind „de bun simt”, experienta noastra anterioara nu mai este relevanta; analogiile devin superficiale iar metaforele aduc mai degraba confuzie decat clarifica. Aceasta este situatia caracteristica unei noutati „radicale”.

Modul de abordare al noutatii radicale cere o metoda ortogonala. Trecutul, experientele traite si obsinuintele create in acest trecut trebuiesc considerate un accident nefericit al istoriei, iar noutatea radicala trebuie apropiata cu o minte deschisa, refuzand in mod constient orice legatura cu ceea ce este deja familiar, pentru ca familiarul a devenit inadecvat. Trebuie, cu un fel de dubla personalitate, incercata asimilarea noutatii radicale ca si topic complet separat si izolat. Procesul insa este similar crearii si invatarii unei limbi care nu-si are traducere in limba materna (oricine a invatat mecanica cuantica stie despre ce vorbesc). Nu e nevoie sa adaug, ajustarea la noutatile radicale nu este un sport foarte popular, pentru ca necesita munca indarjita, si din acelasi motiv, noutatile radicale sunt chiar evitate.

Acum va veti intreba deja de ce am pierdut atata timp explicand ceva atat de simplu si evident precum notiunea de noutate radicala. Motivul este extrem de simplu: noutatile radicale sunt atat de deranjante incat creaza reflexe de suprimare sau ignorare, pana la extrema in care simpla lor existenta este mai degraba negata decat admisa.

Am sa aduc un scurt exemplu din istorie. Carl Friedrich Gauss, „printul matematicii”, dar din pacate un caracter slab, in mod cert era constient de soarta lui Galieo – si ar fi putut prezice calomnierea lui Einstein – cand a decis sa-si treaca sub tacere descoperirea matematicii sale ne-euclidiene, lasand astfel reactia publica dura la descoperire pe umerii lui Bolyai si Lobachevski. Poate ca este si mai clar daca mergem un pic mai departe, catre Evul Mediu. Una din caracteristicile Evului Mediu era ca „rationametul prin analogie” era cel preferat; o alta caracteristica era aproape completa stagnare intelectuala, si acum intelegem de ce cele doua merg mana in mana. Motivul pentru care mentionez asta este pentru ca dezvoltand o minte care depisteaza analogiile fortate, cineva poate detecta modalitatea „medievala” de gandire folosita inca in zilele noastre.

Un alt lucru pe care nu reusesc sa-l mentionez suficient este ca fractiunea populatiei pentru care schimbarea graduala este aproximativ singura modalitate de gandire este extrem de larga, probabil mult mai larga decat m-am asteptat. In mod cert, atunci cand am inceput sa observ fenomenul, numarul celor in situatia respectiva mi-a depasit asteptarile.

De exemplu, vasta majoritate a comunitatii matematicienilor nu a incercat niciodata sa schimbe presupunerea ca lucrand in bransa matematicii va ramane pentru mult timp acelasi tip de activitate mentala care a fost dintotdeauna: noi topici vor apare, inflori si dispare asa cum s-a intamplat si in trecut, dar, cu creierul uman fiind cum e, metodele noastre de predare, invatare si de inteles matematica, de rezolvare a problemelor si de descoperire in domeniu vor ramane in cea mai mare parte aceleasi. Herbert Robbins explica clar de ce nu crede in posibilitatea unor pasi radicali in abilitatile matematice:


Nimeni nu va fi capabil de a alerga 100m in 5 secunde, indiferent de cat de mult a investit in masinarii si antrenament. Acelasi lucru poate fi spus si despre creier. Mintea umana nu este diferita acum de ce a fost acum cinci mii de ani. Si cand se ajunge la matematica, trebuie realizat ca vorbim despre mintea umana la limita extrema a capacitatii.

Comentariul meu de pe margine a fost „atunci reduceti gradul de folosire al creierului si folositi calculatoare!”. Folosind chiar analogia lui Robbins, cineva poate spune ca, pentru a ajunge cat mai repede din punctul A in punctul B, in momentul de fata exista alternative la alergat care sunt de cateva ordine de magnitudine mai eficace. Robbins refuza direct sa accepte orice alta alternativa la modalitatea clasica de folosire a creierului in domeniul matematicii, astfel exorcizand primejdia noutatii radicale printr-o metoda simpla in care ajusteaza definitia matematicii la nevoile sale: in mod simplu, prin definitie, matematica va continua sa fie ce-a fost si pana acum. Si cu asta incheie capitolul matematicienilor.

(va urma)

Categorii:baliverne

idei de business ratate

Decembrie 23, 2008 Lasă un comentariu
Astia sunt un fel de lautari in economie ma, nu te enerva, e ceva ce eu am observat de vreo 10 ani, idee care nu conteneste sa ma uimeasca, sa ma socheze, sa imi dea frisoane. De aici si bucuria apasata, interioara, tampita de altfel care ma surpinde cand vad harababura in care s-a ajuns, recesiunea vezi doamne inevitabila.
Ce vrei, ca si arta, economia are trendurile ei, multe fara forma, fara finalitate, sunt doar asa niste abureli conforme cu cine stie ce pula mea de teorii imbecile. Partea asta cu individul toba de harvard care vine sa fute o companie care cat de cat mergea, e doar una din excrescentele de opinie din scoala fundamentalist capitalista. E un curent care in curand se va stinge prin voia naturii si numai dupa ce i se va canta prohodul si se va renunta la ea, numai atunci vor aparea tot dintre ei niste imbecili care o sa iti demonstreze negru pe alb cat de imbecila e simbioza intre relocare sau globalizare si economie solida. Noi am avut sansa nesansei de a vedea pe viu moartea unui alte scarbosenii numite comunism si i-am vazut tot cu scarbosenie pe aia care erau pusi sa construiasca sistemul cum peste noapte, ca prin minune, le-a venit mintea la cap si au inceput sa propovaduiasca fix pe invers. Paternul mi se pare identic, baietii de la Harvard sunt si ei niste bieti soldatei carora li se dau niste scule pe mana si aia e, de unde vrei mai mult.
Categorii:baliverne Etichete: