Mnoho hraček, málo nástrojů: Proč se nedaří výuce IT? | Kapitola 5
Seznam kapitol
Když se nedávno objevil robot Meccano Meccanoid G15, dostal nejen řadu ocenění, ale také schytal spoustu kritiky. Zvláště Linus Tech Tips se do něj pustil velice tvrdě: Je to drahý a složitý robot, který po hodinách sestavování umí jenom pár kousků. Opravdu takhle vypadá budoucnost výuky informačních technologií?
Když jsem přednedávnem přemýšlel o tom, co definuje platformu pro výuku informačních technologií, kde je skutečná rozlišující hranice mezi hračkou a opravdu hodnotnou výukovou pomůckou, zastavil jsem se u jediné instrukce: IF neboli podmínky. Viděl jsem hodně hraček, které jenom replikovaly sekvenci instrukcí. Drtivá většina z nich představovala pouze hlavolam, který bylo třeba vyluštit. Některé z nich měly koncept „podprogramu“, tedy seznamu opakovaných akcí, ale v podstatě šlo jenom o to, jak za sebe seřadit lineární sekvenci instrukcí tak, aby se splnil zadaný úkol. Takový je třeba velmi dobře hodnocený Lightbot pro iOS.
Jenomže lineární sekvence příkazů je jednoduchý automat, pouhá gramodeska, která jede směrem vpřed a plní krok za krokem. Není odlišitelný od orchestrionu, jednoduchých animovaných automatů, prostě jedou sekvenci příkazů, ať už mají smysl anebo ne. Je to lepší než nic, ale není to programování.
Dělící linie mezi jednoduchou sekvencí příkazů a skutečným programováním je podle mě právě v podmínce. Tahle nenápadná instrukce odlišuje pouhý hlavolam od opravdového programování, opravdové automatizace. Dovoluje vytvářet sekvence příkazů, které se buď plní anebo neplní v závislosti na okolí. Je to jeden z významných kroků k umělé inteligenci, možná ten nejelementárnější. Bez IF není programování a právě jednoduché podmínky typu X=0 a X>=0 odlišovaly programovatelné kalkulačky od – abych tak řekl – sekvenčně skriptovatelných. A zde selhává jak Lightbot, tak i Meccanoid, naopak podmínky najdeme jak u Arduina, tak u Lega Mindstorms.
V programování najdeme instrukce, které jsou významnější než jiné. Tak kupříkladu pro umělou inteligenci je ultra významná funkce generování náhodných čísel RND, tedy „hod kostkou“, který pomáhá v rozhodování se v nejasné situaci. Opravdu náhodné generování čísel s rovnoměrným rozložením lze použít ke generování náhody v jiných rozloženích, jako je normální rozložení – prostě vygenerujete několik náhodných čísel s lineárním rozložením, sečtete je a znormujete na Gaussovo rozložení. Opět najdeme jak u Arduina, tak i u Lega Mindstorms.
Existuje teze, že inteligence je kombinace paměti, logických a náhodných procesů. Bez paměti se nelze učit, bez logiky vyvozovat a bez náhody není tvořivost. Podobně i výuka informačních technologií je založena na pochopení struktury dat, logického vyvozování a práce s pravděpodobností a statistikou. Někdy potřebujete determinismus, někdy hádáte – a pochopení, kdy vyvozovat a kdy hádat je pravděpodobným klíčem k umělé inteligenci. A právě podle těchto parametrů bych rozlišoval, zda se díváme na hračku či logický rébus anebo na něco, co vás může skutečně naučit o IT a umělé inteligenci.