Co kaczki mają wspólnego z programowaniem?

wpis w: Programowanie | 0

Moda na programowanie

Nowa moda zawitała do nas ostatnio zza oceanu. Trzeba uczyć dzieci kodowania, bo już za kilka lat znajomość jakiegoś języka programowania będzie czymś tak oczywistym jak znajomość języka angielskiego. Codziennie jesteśmy bombardowani informacjami o zbyt małej liczbie programistów na rynku pracy. O tym, że już niedługo w Stanach Zjednoczonych zabraknie miliona takich pracowników. Puszczamy te informacje koło uszu, bo nie bardzo mamy pomysł, jak ugryźć ten temat. Przecież nasze dzieci spędzają dużo czasów korzystając z komputerów, tabletów i smartfonów. Na pewno sobie poradzą.  Czy rzeczywiście?

Faktycznie wydaje się, że dzieciaki świetnie sobie radzą z nowymi technologiami. Jednak gdy podpytujemy się na zajęciach, skąd komputer wie, co ma robić, okazuje się, że nie mają zielonego pojęcia. Biorą za oczywistą oczywistość, że komputer /tablet po prostu rozumie, co się do niego mówi. A jak jest naprawdę?

Test kaczuszki – czyli po co jest algorytm?

Proponujemy Wam zrobienie sobie rodzinnego testu, który zajmie Wam niecałe 5 minut. Wybierzcie ze swojej kolekcji klocków takie same zestawy składające się z 6 klocków. Tak może wyglądać przykładowy zestaw:

Zestaw klocków LEGO potrzeby do wybudowania kaczki

Ważne jest, żeby każdy zestaw był taki sam. Fajnie, gdy w tym wyzwaniu biorą udział przynajmniej 3 osoby, ale im więcej chętnych tym lepiej. Każdy buduje w tajemnicy przed innymi kaczkę z otrzymanego zestawu. Gdy wszyscy skończycie, pokazujecie swoje kaczki innym. Czy są dwie takie same kaczki?

Gdy powiecie komputerowi, żeby narysował kaczkę, dostaniecie komunikat o błędzie. Dla tej maszyny pojęcie kaczki nic nie znaczy, dopóki nie powiecie mu dokładnie, co to jest.  Komputer potrzebuje dokładnej instrukcji, jak taką kaczkę narysować. Taką instrukcję nazywamy algorytmem. Cytując za Wikipedią algorytm jest to “skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań”.  Spróbujcie się więc zabawić w komputer i programistę.

Zasady gry:

Osoba, która jest programistą buduje coś w tajemnicy przed drugą osobą – komputerem. Na początek lepiej nie przesadzać z ilością klocków. Ograniczcie swoje budowle do 10 elementów. Gdy programista skończy, wręcza komputerowi zestaw klocków identycznych z klockami w jego budowli. Programista i komputer siadają do siebie tyłem, tak żeby nie mieli możliwości podglądania swoich budowli. Programista wydaje krok po kroku instrukcje, jak należy zbudować jego budowlę. Dobrze jest, gdy w trakcie budowania, komputer potwierdza wykonanie każdego kroku instrukcji. Gdy komputer skończy, obie budowle są porównywane. Czy są takie same? W których miejscach się różnią i dlaczego komputer nie zrozumiał, o co chodziło programiście? Teraz czas na zmianę ról. Kim wolicie  być: programistą czy komputerem? Jak radzicie sobie z budowlami z większą ilością klocków?

W miarę waszego zaawansowania, możecie zmieniać reguły gry i je utrudniać. Zamiast układania klocków możecie na przykład rysować. To jest dopiero wyższa szkoła jazdy! Nie tylko musicie poradzić sobie z kierunkami, ale również wielkości rysowanych figur będą odgrywać duże znaczenie. Kolejną odmianą jest zabawa domowymi czynnościami. Niech programista powie komputerowi, jak krok po kroku umyć zęby, zrobić tosta czy pościelić łóżko.

Jest to najprostsza zabawa obrazująca, czego potrzebuje komputer, żeby robić to, co od niego chcemy. A potrzebuje instrukcji! Bardzo dokładnej, krok po kroku. Pamiętajmy też o tym, że komputery nie znają pojęć, dopóki ich tych pojęć nie nauczymy. Programista zaczyna swoją pracę nad programem od zdefiniowania, jak poszczególne obiekty wyglądają. Dopiero potem może tych obiektów używać. Żeby móc powiedzieć, weź pastę, najpierw trzeba mu tą pastę dokładnie opisać. To już jest naprawdę duże wyzwanie!

Po co?

Bardzo często rozmawiając z rodzicami napotykamy na pytanie, po co w ogóle uczyć dzieciaki kodowania. Rodzice zastanawiają się, czy nie jest to tylko moda, która szybko minie. My uważamy, że warto kierunkować dzieci na takie myślenie, bo są to umiejętności uniwersalne. Uczymy logiki, której piewcą był już Arystoteles. Od nauczycieli dzieci z klas I – III często słyszymy jednak, że dla ich uczniów języki programowania, nawet te stworzone dla dzieci (np. Scratch), są trudne. Ciężko im zrozumieć podstawowe pojęcia. Z tego właśnie powodu początkowe lekcje programowania lepiej przeprowadzić z dala od ekranu komputera lub z minimalnym jego udziałem.

Artykuły o tym, dlaczego warto uczyć siebie i dzieci programowania możecie bez trudu znaleźć w sieci. Jest ich bardzo dużo. My podamy wam te powody, które są dla nas najważniejsze:

  1. Sprawczość – gdy program po raz pierwszy napisze “Hello World!’ każdy aspirujący do bycia programistą czuje się niemalże jak Bóg. Nieważne, że nic innego nie potrafi. Ważne, że narzucił maszynie swoją wolę. Jest to bardzo ekscytujące. Wewnętrzna motywacja do dalszej nauki jest ogromna. Najlepsze jest jednak to, że każda nowo nauczona komenda, daje więcej możliwości do działania.
  2. Nauka cierpliwości – mało komu wszystko wychodzi od razu. W programowaniu błędy są normą, a proces ich odnajdywania, to osobna sztuka. Oczywiście im więcej wiemy, tym mniej popełniamy błędów. Moment, w którym udało nam się naprawić błędy w kodzie i sprawić by działał, jest jednakże bezcenny.
  3. Nauka myślenia – ucząc się kodowania, nie tylko uczymy się komend i składni. W pierwszej kolejności musimy poćwiczyć logiczne myślenie, które przydaje się w każdej dziedzinie nauki.
  4. Odkrywamy tajemną wiedzę, o tym jak rzeczy działają. Fajnie jest wiedzieć, jak działa komputer. Z czasem okazuje się, że niektóre rzeczy możemy sami naprawić lub ulepszyć.
  5. Innowacyjność – tutaj nie ma rzeczy niemożliwych. Można rozwijać swoje pomysły razem z umiejętnościami. Im więcej umiemy, tym więcej mamy nowych idei.
  6. Łatwość nauki – w dobie powszechnego dostępu do internetu, hasło “chcieć to móc” ma wielką siłę. W sieci możecie zacząć naukę nigdy nie mając kontaktu z żadnym językiem programowania.

A co z tą kaczuszką?

Gumowa kaczuszka może być najlepszym przyjacielem programisty 😉 Gdy programista wybiera się na spotkanie z gumową kaczuszką, oznacz to że ma problem z kodem, który musi rozwiązać. Mówiąc do gumowej kaczuszki można przeprowadzić proces debugowania kodu, czyli znajdowania w nim błędu. Tłumaczymy jej na głos linijkę po linijce nasz kod. Często dzięki takiemu tłumaczeniu można wpaść na niezauważony wcześniej błąd. Ważne żeby myśleć na głos. To bardzo często rozwiązuje problem na początkowym etapie.Oczywiście gumowa kaczuszka może być  wymyślona.