Anglijos mokyklose netrukus prasidės didelis eksperimentas: kompiuterių mokslai bus prijungti prie kitų trijų esminių dalykų vaikams jau nuo 5 metų amžiaus.
„Vaje, tai labiausiai įtraukiantis žaidimas! – sako Gabrielis. – Nori pamėginti?“ Gabrielis gamina neįprastą vaisių mašinos vaizdo žaidimą. „Mano yra žaidimas su lėktuvu, nes ketinu būti pilotas“, – sako jis, sukdamasis kėdėje ir vėl atsigręždamas į ekraną.
Popamokinės veiklos klube Londono centre, 6 devynmečiai ir dešimtmečiai prilipę prie savo nešiojamųjų kompiuterių. Jie dėlioja spalvotus kodo blokus į vietas, priversdami ryškias animacines figūras šokti.
Šalimais sėdinčiam Imitiyazui nesiseka su fejerverkais. Jo raketos kyla, bet užuot pažirusios spindinčiomis žiežirbomis, virsta kitomis raketomis. Suraukęs antakius, jis dairosi pagalbos.
Bet „Code Club“ vaikai skatinami problemas spręsti patys. Po kelių bandymų ir klaidų jis išsiaiškina, kad reikia įkopijuoti sprogimo seką iš kitos programos dalies ir įdėti naujoje vietoje. „Pataisiau!“ sako jis patenkintas.
Šie vaikai nėra neįprasti. Vienintelis dalykas, skiriantis juos nuo daugumos mokyklinio amžiaus vaikų yra tas, kad jie gauna ankstesnio pradėjimo pranašumą. Šį mėnesį Anglija pradeda vieną didelį eksperimentą. Į mokyklą grįžtantys vaikai per kelias ateinančias savaites išvys tvarkaraštyje naują pamoką, kadangi kompiuterių mokslas pakeičia IT. 5 metų ir vyresni vaikai bus mokomi programuoti – ir nuo 11 metų jau turėtų būti susipažinę su daugeliu programavimo idiomų. „Modernios kalbos“ nebereiškia italų, prancūzų ar vokiečių. Kompiuterinis programavimas įsitaisys šalia skaitymo, rašymo ir aritmetikos, kaip ketvirtasis pagrindinis dalykas – XXI amžiaus gyvenimo įgūdis. Auga programuotojų karta.
„Mokymasis programuoti yra naujasis raštingumas“, – sako Marina Bers iš Tufts universiteto Medforde, Masačusetse. Bet jei jau taip, tai kuo šis naujasis raštingumas skiriasi nuo senojo? Ir ką tai reikš mūsų santykiams su mašinomis? Keista, bet ši tema menkai tyrinėta. Yra šiek tiek įrodymų, kad mokymasis programuoti gali pagerinti gebėjimus abstrakčiai mąstyti ir spręsti problemas. O kai kas mano, kad visiškai pakeisime bendravimą su technologija. Tačiau šnekant bendrai, žengiame į neištyrinėtą teritoriją.
„Code Club“ sukūrė programuotojos Clare Sutcliffe ir Linda Sandvik 2012 metais kaip laikiną priemonę, suteikiančią vaikams tai, ko jautė, kad vaikai mokykloje negauna. Nuo tada visoje JK buvo sukurta beveik 2200 grupių, kuriose savanoriai apie 30 000 vaikų mokė kompiuterinio programavimo pagrindų. Dabar programavimas nėra tik užklasinė veikla, „Code Club“ plečiasi siūlydama treniruotes ir mokytojams.
Padedant Karališkajai inžinerijos akademijai, „Microsoft“ ir „Google“ parengtose kompiuterių mokslo pamokose vaikai bus mokomi kurti programinę įrangą, o ne tik kaip ja naudotis. Jie išmoks kurti paprastus algoritmus ir suprasti programavimo logikos principus.
Toks dramatiškas pertvarkymas yra kelių metų technologijų sektoriaus – pirmiausia, JK vaizdo žaidimų pramonės – lobizmo rezultatas. Pavyzdžiui, „Next Gen Skills“ kampanija, skatino mokyklas teikti techninius įgūdžius, reikalingus JK skaitmeninei ekonomikai. Aukštųjų technologijų poreikis tebeauga. „Pagrindinis augimo trukdis yra kvalifikuotų absolventų, turinčių žinias, gaunamas per daugelį metų užsiėmimo kompiuteriais, trūkumas“, – sako Ebonas Uptonas, vienas iš 25 dolerius kainuojančio kreditinės kortelės dydžio kompiuterio, skirto klasėms, „Raspberry Pi“ autorių.
Bet ar visi vaikai turėtų mokytis programuoti? Juk aišku, kad galiausiai profesionaliai tuo užsiims nedaugelis. Ne visi turi būti mechanikais, kad galėtų vairuoti automobilį – kodėl kitaip turėtų būti su kompiuteriais? Didžioji dauguma kasdienių technologijų būtent taip ir sukurtos, kad mums nereikėtų žinoti, kaip jos veikia. Išmanieji telefonai, programėlės, interneto svetainės – visi jie tiesiog veikia. Metų metus mokėme vaikus naudotis internetu ir „Microsoft Office“. Ar to negana?
Tik ne tokiems žmonėms, kaip Mitchelui Resnickui, „Lifelong Kindergarten“ grupės Masačusetso technologijų instituto technologijų medijų laboratorijos direktoriui. Programavimas suteikia naują santykį su technologija, teigia jis. „Tai duoda naują galvojimo apie save būdą, naują būdą regėti aplinkinį pasaulį.“
Taip, tiesa, dauguma vaikų užaugę iš programavimo duonos nevalgys. Tiesą sakant, plataus naudojimo technologijos – nuo išmaniųjų telefonų iki išmaniųjų automobilių – dabar paprastai lindi aklinai uždarytose dėžutėse, su kuriomis negalėtume terliotis net jei norėtume. Bet Resnickui iš dalies tai ir yra viena iš priežasčių, kodėl žinoti, kas vyksta po kapotu taip svarbu. Mokantis programuoti gauti įgūdžiai padės jiems klestėti skaitmeninių platformų augimo dominuojamame pasaulyje. Kai mūsų gyvenime tiek daug technologijų, vaikai turi tai suvokti kaip kažką, ką jie gali kontroliuoti, sako Resnickas. „Vaikai neturėtų būti tik to, ką sukuria kiti, gavėjai.“
KŪRYBINGAS MĄSTYMAS
Būtent tai turėdamas galvoje, Resnickas su kolegomis prieš 10 metų sumąstė būdą paskatinti vaikų kūrybingumą. Jie sukūrė „Scratch“, programavimo kalbą, kuria vaikams lengva ir smagu dirbti. Su „Scratch“, kurią vaikai „Code Club“ naudoja, galima sukurti paprastas programas tiesiog perkeliant jau paruoštus instrukcijų blokus į norimas sekas, užuot spausdinus kiekvieną programos ženklą. Tada mygtuko paspaudimu galima paleisti kodą.
Mokiniams labiau pažengus, jie gali su kodo blokais nuveikti daugiau ir paskelbti savo programinę įrangą „Scratch“ interneto svetainėje. Nuo svetainės paleidimo 2007 metais, buvo paskelbta daugiau, nei 6 milijonai „Scratch“ projektų – visi atviri naudojimui iš naujo, permaišymui ir tobulinimui. „Norime, kad vaikai kurtų ir išreikštų save“, – sako Resnickas.
Code Club Laura netveria savam kaily. „Išmokoma užmušti raganą. Ji pavirto vaiduokliu“, – sako ji išdidžiai, priversdama savo veido nuotrauką, sprogus fejerverkui, suktis ekrane.
Tai ko Laura mokosi? Kai kurios pagrindinės „Scratch“ koncepcijos turi akivaizdžias paraleles su pažangesnėmis programavimo kalbomis. Pavyzdžiui, esminė programavimo dalis yra seka: išankstinis žingsnių planavimas, kad kažkas veiktų ir šių žingsnių tvarka. Ji taip pat mokosi apie tokias pamatines koncepcijas, kaip ciklai – kodą, kartojantį tam tikrus žingsnius – ir paralelizmą – idėją, kad instrukcijų sekos gali veikti tuo pat metu, netgi jei jos daro visiškai skirtingus dalykus.
Tačiau, ko gero, visų svarbiausia, yra derinimas: blogai veikiančio kodo derinimas, peržiūrint kodą ir aiškinantis, kodėl jis neveikia taip, kaip turėtų, jo pataisymas ir vykdymas, žiūrint, ar to pakako rikto pašalinimui. Tvarkymas, kol kažkas veikia, yra gyvybiškai svarbu „Scratch“ ir programavime bendrai. Tačiau tai yra ir svarbus įgūdis gyvenime, pabrėžia Resnickas.
Mokomės matematikos ir kitų mokslų ne todėl, kad jie svarbūs patys savaime, bet todėl, kad jie moko mus mąstyti taip, kaip naudinga visur. „Kompiuterių mokslas yra idealus to pavyzdys“, – sako Mikeas Warrineris, „Google“ JK inžinerijos direktorius. O žinios apie tai, kaip programinė įranga gali manipuliuoti duomenimis, gali išlavinti smalsesnį ir imlesnį protą. „Mokslininkai kelia tokius pačius klausimus, – sako Amber Settle iš DePaul universiteto Čikagoje. – Bet tada tai yra ir klausimas, kaip buvo apdoroti duomenys.“ Kitaip tariant, mokymasis galvoti kaip kompiuterių mokslininkams yra daugiau, nei vien žinojimas, kaip veikia kompiuteriai.
Tačiau buvo nedaug tyrimų, kokią įtaką mokymasis programuoti daro jauniems vaikams. Dauguma tyrėjų tebecituoja Douglaso Clementso, dabar dirbančio Buffalo universitete Niujorke, devintojo dešimtmečio darbą, rodantį, kad programavimo kalbos „Logo“ naudojimas pagerino jaunų vaikų gebėjimą abstrakčiai mąstyti.
Tai atrodo logiška, kadangi kompiuterių mokslas pagrįstas abstrakcijos koncepcija. Kaip miesto žemėlapis yra tikrų gatvių ir pastatų – nekalbant apie žmones, eismą ir bendrą bruzdesį – abstrakcija, taip ir kompiuterių sistemos kuriamos sluoksniais, kurių kiekvienas slepia žemiau esančiojo detales. Pavyzdžiui, kai rankose laikome išmanųjį telefoną, ekrane regimas vaizdas tėra ledkalnio viršūnė.
Abstrakcija svarbi ir kuriant algoritmus, kurie yra bendros procedūros, skirtos daug kartų spręsti daugelį tos pačios problemos atvejų. Efektyvaus algoritmo sukūrimui reikia gebėjimo išgryninti problemą iki esmės ir dėmesį sutelkti tik į svarbius aspektus. Pavyzdžiui, patiekalo receptas yra algoritmas, kur svarbiausia ingredientai ir patiekalo gaminimo žingsniai, o ne naudojami indai ar virtuvė.
Abstrahavimas yra viena pusė to, ką Jeannette Wing iš „Microsoft Research“ Redmonde, Washingtone, vadina „kompiuteriniu mąstymu“. Kita pusė yra gebėjimas suskirstyti problemą ir jos sprendimus į aiškius paprastus žingsnius – tokius, kuriuos gali atlikti kompiuteris. Nuo termino sugalvojimo 2006 m., Wing kompiuterinio mąstymo charakterizavimas buvo įtakingas, netgi atsidūrė naujojoje Anglijos mokymo programoje. Manoma, kad išmokius vaikus mąstyti tokiu būdu – susitelkiant į svarbius aspektus ir metodiškai juos sprendžiant – suteikiamas galingas problemų sprendimo įrankis. Jis leidžia dideles problemas suskaidyti į mažesnes, lengviau išsprendžiamas. „Be skaitymo, rašymo ir aritmetikos, prie kiekvieno vaiko analitinių gebėjimų turėtume pridėti ir kompiuterinį mąstymą“, – sako Wing.
Bet ką visa tai reiškia penkiamečiui vaikui? Šiais metais rinkoje pasirodys žaislai, skirti mokyti programuoti netgi ikimokyklinukus. O Bers ir jos komanda sukūrė „Scratch Jr“, paprastesnę, grynai vaizdinę „Scratch“ versiją, skirtą mokyti jau 5 ir 6 metų vaikus programavimo pagrindų – dar iki jie išmoks skaityti ar rašyti.
Programavimas vaikus moko įgūdžių, kuriuos šiaip ar taip mokytojai stengiasi įdiegti, sako Bers. Mokymasis apie sekas padeda vaikui suprasti, kaip sudaryti nuoseklų pasakojimą nuo pradžios link galo, sudėti skaičius teisinga tvarka, ar padėti geriau suprasti dienos veiklų eiliškumą. „Tai idėja, kad tvarka yra raštingumo, matematikos, kasdienės veiklos pagrindas“, – sako Bers.
TVARKOS!
Viename iš kelių naujausių tyrimų šia tema, ji su kolegomis išsiaiškino, kad vaikų mokymas paprastos programavimo kalbos pagerino jų gebėjimą rikiuoti pasakojimą teisinga tvarka.
Programavimas nėra vienintelis tvarkos svarbos mokymo būdas, tačiau suteikiantis papildomą pranašumą, kad veiksmų pasekmes galima pamatyti išsyk, sako Bers. Pavyzdžiui, jei programuoji robotą žengti keturis žingsnius į priekį, o pamatai, kad vietoje to jis eina atgal, išsyk gali suprasti, kad panaudojai neteisingą komandą.
Tiksliai nežinome, kokią įtaką kompiuterinis mąstymas galiausiai turės, sako Settle. Bet ji tiki, kad bent jau suteiks gilesnį supratimą to, kaip gauname rezultatus iš skaičiavimo įrankių ir kaip tuos įrankius paderinti, kad būtų gaunami kitoks rezultatas. Vien jau tai būtų didžiulis skirtumas.
Ilgus metus didžiuosius technologinius produktus, kuriuos dabar priimame kaip duotybę, tarkime, „Facebook“ ir „Google“, daugiausia kūrė labai panašiai atrodanti visuomenės dalis: baltieji, viduriniosios klasės vyrai, lankę geriausius JAV universitetus. Ar platesnės visuomenės dalies išmokymas programuoti reiškia, kad kitas „Facebook“, ar būsiantis po jo, atspindės daugiau, nei vien siaurą, inžinerinį požiūrį, kaip viskas turėtų atrodyti ir veikti?
Bers to tikisi. „Noriu, kad ateities technologijas kurtų platesnė visuomenė, ne tik inžinieriai ir kompiuterijos magistrai, – sako ji. – Kai kurti galės bet kas, išvysime dalykus, sukurtus žmonių su kitokia proto sąranga.“
Tikriausiai iš viso to svarbiausia, kad būsima karta nebus tik technologijos vartotojai, bet ir gamintojai, sako Resnickas. Jis mano, kad tai paskatins platų programavimo paplitimą. „Išvysime žmones, naudojančius kompiuterius tokių problemų sprendimui, kurių iki šiol nelaikėme svarbiomis, – sako jis. – Visa žmonių visuomenė iš šios įvairovės išloš.“
ŽAISLAI PROGRAMAVIMUI
„Noriu, kad mano vaikai suprastų, jog kompiuteriai yra paprasti tarnai, galintys padėti jiems pasiekti savo tikslus, o ne bauginančios pabaisos, kurioms reikia paklusti, – sako Danas Shapiro, paliekantis „Google“, kad įgyvendintų savo svajonę mokyti jaunus vaikus programuoti žaislais. – Mano vaikai nedirbs dar daugiau, nei 15 metų. Jie gyvens pasaulyje, apsupti kompiuterių. Vienintelis klausimas, ar jie mokės kalbėti?“ Kad tikrai mokėtų, Shapiro išrado „Robot Turtles“, stalo žaidimą, mokantį algoritmų. Ir tai tik vienas iš kelių tokių žaislų.
„Robot Turtles“ (Amžius 4+)
Stalo žaidimas, kuriame reikia orientuotis labirinte ir rinkti brangenybes. Tam reikia įvaldyti pagrindinius programavimo principus, tokius, kaip naudojantis tik keliais simboliais išreikšti sudėtingas idėjas ir suplanuoti seką, prieš ją vykdant.
„Primo“ (Amžius 3–7)
Neįprasta medinė dėlionė. Dedant medinius blokelius ant lentos, judinamas mažas medinis robotas „Cubetto“. Geltoni blokeliai pasuka jį dešinėn, mėlyni – kairėn, o raudoni blokeliai verčia judėti į priekį. Dėlionė moko sekų ir eilių pagrindų, algoritmų rašymo pamatų.
„Play-i“ (Amžius 5+)
Paprasta grafine programavimo kalba galima kontroliuoti mielų robotų Bo ir Yana judesius. Vyresni vaikai gali koduoti sudėtingesnes instrukcijas, naudodami „Scratch“. Robotai moko tokių koncepcijų, kaip ciklas bei „jeigu – tada“ sąlygų, dėl kurių robotai elgiasi skirtingai, priklausomai nuo ankstesnių veiksmų.
„Hello Ruby“ (Amžius 4–7)
Šioje knygoje mergaitė „su didele fantazija“ tyrinėja pasaulį, sprendžia mįsles, padedama paslaugių pingvinų ir daugybės kitų spalvingų personažų. Knygelės priede yra pratimai, įtvirtinantys pagrindinio pasakojimo subtilų supažindinimą su sekomis, ciklais, jeigu-tada sąlygomis ir netgi atvirojo kodo kultūra, nes savo nuotykiuose ji seka Ruby.