Béton brut

Przyszłość

2011-06-26

Dzieci są naszą przyszłością, o ile ich nie powstrzymamy

Ludzie często chwalą mnie za zdolność tłumaczenia skomplikowanych zagadnień informatycznych w przystępny sposób. Jest to dla mnie jeden z najmilszych komplementów, który potwierdza słowa Eisteina – „jeśli nie możesz czegoś wytłumaczyć prostymi słowami, to znaczy, że się na tym nie znasz tak dobrze, jak myślałeś”. Moje zdolności wyszukiwania analogii między światem bramek logicznych, a światem nielogicznych homowyprostowanych są jak pancerny kot na wrotkach, karmiony majonezem. Tylko lepsze.

Miałem wielki plan napisania serii tekstów o programowaniu przeznaczonych dla ludzi, którzy nie są głupi, ale nie posiadają prawa jazdy na prowadzenie komputerów po infostradzie. Plan rozpadł się na kawałki kiedy wreszcie usiadłem z kartką żeby wypisać zagadnienia. Okazało się, że próba wytłumaczenia jednej rzeczy przywołuje dwie następne, a te znów kolejne. Sam talent do opowiadania o technice nie przekłada się na zdolność do kompleksowego opisania problemu tak, aby nowo nabyte zdolności wynikały ze zrozumienia tematu, a nie zapamiętania że X robi X, bo.

Zacząłem przekonywać sam siebie, że dogłębna wiedza nie jest potrzebna. Ludzie traktują komputery jak narzędzia. Tu się wkłada, tam naciska, tu wychodzi śłitaśna focia. Próba tłumaczenia stdio i stderr to nic innego jak godzinny wykład o tym dlaczego dichlorodifluorometan występuje pod postacią cieczy w instalacjach chłodniczych komuś, kto sięga po piwo do lodówki.

Tylko, czy ja nie chcę uczyć budowania lodówek? I komu potrzebna taka wiedza?

Zadałem sobie pytanie jak ja – nieuk i dyletant – wszedłem w posiadanie takiej wiedzy? Odpowiedź nie przyniosła mi ulgi. Urodziłem się w idealnym czasie, aby stać się komputerowym wyjadaczem. I nie wiem, czy dziś można posadzić ośmiolatka i zaczarować go kursorem migającym pod napisem READY■.

Komputer domowy, który stał w wielu pokojach obecnych trzydziestolatków był urządzeniem nieskomplikowanym, kiedy porównamy go do czegokolwiek, co uznajemy teraz za komputer. To jedna rzecz. Drugą rzeczą, która z perspektywy czasu wydaje się nie do przecenienia – każdy ośmiobitowiec po włączeniu mówił: „Programuj mnie, jestem gotowy”. Człowiek mógł zostać programistą niemal przez przypadek. W Bajtku publikowano kody źródłowe prostych gier. Nie lubiłeś Kaśki? Wszystkie wystąpienia wyrazu „smok” w przepisywanej właśnie grze tekstowej zamieniałeś na „Kaśka” i czułeś się jak najsprytniejszy dzieciak po tej stronie ulicy.

[![C64 love](http://bronikowski.com/wp-content/uploads/2011/06/love.png “love”)](http://bronikowski.com/wp-content/uploads/2011/06/love.png)

Jak uczyć młodych ludzi komputerologii na rozum, a nie na pamięć?

Nadal mogę myśleć tylko o językach logopodobnych. [LOGO](http://en.wikipedia.org/wiki/Logo_(programming_language było (jest?) świetnym językiem dydaktycznym, zawierało wszystkie ważne elementy dorosłych języków takie jak pętle, warunki i zmienne jednocześnie nagradzając dziecko tańczącym na ekranie żółwiem rysującym proste figury geometryczne.
REPEAT 4 [FD 10 LEFT 90]

Kiedy już nasz młody padawan patrząc na tę linię zobaczy definicję pętli, blok, dwie funkcje i parametry to zrozumie, że możemy opisać kwadrat jako „cztery proste o równej długości spotykające się pod kątem 90 stopni” i będzie na prostej drodze do niebkła 1.

Mimo mojej fascynacji zdaję sobie sprawę, że trzeba iść z duchem czasu i poszukać czegoś równie dobrego jak LOGO, ale ze współczesnym skrętem. Po dniu szukania i instalowaniu różnych języków programowania „dla dzieci” stwierdzam, że jedynym godnym następcą 2 jest toolkit Shoes.

Shoes jest biblioteką dostępną dla języka Ruby, która pozwala na łatwe budowanie UI. Zobaczcie przykład „zegarka”, a zrozumiecie.

Shoes.app do
   @time = title "0:00"
   every 1 do
     @time.replace(Time.now.strftime("%I:%M %p" # 12-hour time
     #@time.replace(Time.now.strftime("%H:%M" # 24-hour time
   end
end

Patrząc na The Shoebox (strona z przykładami użycia Shoes) nie mogę się oprzeć wrażeniu, że znalazłem idealną kombinację edukacyjną. Pod spodem Ruby, obok Gemsy, na górze Shoes. Może już nie będziemy pisać gry tekstowej o przygodach smoka 3, ale reszta pozostaje bez zmian. Z tą różnicą, że teraz możesz wysłać e-maila z gratulacjami ukończenia gry, albo opublikować rekordy na własnej stronie portalu społecznościowego. Piękno tego całego rozwiązania jest w tym, że jako wprowadzający w świat komputerów możesz sam wybrać tempo nauki i nie jesteś sztucznie ograniczony przez „język edukacyjny”. LOGO nie używa zdobyczy ostatnich dwudziestu lat.

Dlaczego w ogóle o tym piszę? Nie pamiętam, czy wspominałem, ale znudziło mnie marudzenie na obecny świat i przeganianie dzieci z mojego trawnika. Zamiast biadolić, że nie będzie następnego pokolenia komputerogłupoli, bo teraz wszyscy mają telefony, gdzie za przyjemność programowania płaci się \$99, a na Kaśkę wrzucać nie można, bo moralne wytyczne sklepu zabraniają 4. Chcę coś zrobić. Będę głównie zagrzewał Was do boju, bo dzieci nie posiadam. Może kiedyś rzucę się na ten projekt serii artykułów.

Praca u podstaw, koleżanki i koledzy. Tylko to spowoduje, że za dwadzieścia lat będzie dla nas wycinek świata, gdzie komputery będą miały otwieraną obudowę, a grę o Smoku 5 będzie można przepisać bez obawy o naruszenie patentu i praw autorskich.

  1. programista jest stale w niebkle, jedną nogą w niebie, drugą w piekle
  2. biorąc oczywiście pod uwagę moje wymogi, tj. brak wizualnych edytorów, „prawdziwość” języka i haczyk, który pozwoli wciągnąć młodego programistę do niebkła
  3. Kaśki
  4. Tak, wiem, że Android i tak dalej, to tylko ilustracja ogólnej sytuacji. I wiem, że można bez płacenia programować. Sio.
  5. Na serio to o Kaśce