Myśl jak komputer!
Myślenie komputacyjne, czyli zdolność do identyfikacji wzorców, rozkładania dużych problemów na małe części, opracowywania algorytmów do rozwiązywania problemów i tworzenia uniwersalnych rozwiązań.
W niektórych kręgach istnieje dość dobrze znana gra o nazwie „fizzbuzz”. Jej przebieg może wyglądać następująco:
1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14, fizzbuzz, …
Czy potrafisz zidentyfikować jakieś powtarzalne wzorce?
W obecnym stanie sekwencja „fizzbuzz’u” prawdopodobnie przedstawia Ci się jako mieszanka liczb i zabawnie brzmiących słów. Ale jeśli podzielimy go na dwie główne części, wzory staną się znacznie wyraźniejsze:
Zacznijmy od tego, co nazywamy częścią „fizz”:
1, 2, fizz, 4, 5, fizz, 7, 8, fizz, 10, 11, fizz, 13, 14, fizz,…
Rozważmy teraz „buzz”:
1, 2, 3, 4, buzz, 6, 7, 8, 9, buzz, 11, 12, 13, 14, buzz,…
Czy zauważyłeś, że część „fizz” wzoru może być określona jako co trzecia liczba zbioru liczb naturalnych, która została opisana słowem fizz? Podobnie w części „buzz” wzoru, co piąta liczba jest zastępowana słowem buzz. Oryginalna sekwencja jest tworzona przez wspólne zestawienie obu części wzorca.
Rozpoznawanie i rozkład wzorców to dwie cechy myślenia komputacyjnego, podstawowa umiejętność w informatyce. W tym przypadku podjęliśmy się rozpoznania skomplikowanej sekwencji i rozłożyliśmy ją na dwie nici, aby pomóc sobie wykryć, które liczby są zastąpione fizzami, a jakie zastępuje buzz.
W 2006 r., informatyk Jeannette Wing (wówczas w Carnegie Mellon University) napisała artykuł wprowadzający większość świata w termin „myślenia komputacyjnego”. W artykule opisuje jedną z cech myślenia komputacyjnego jako „sposób myślenia ludzi, a nie komputerów”.
Wyobraź sobie, że uczysz swojego przyjaciela, jak grać w fizzbuzz. Pomocne byłoby wyjaśnienie gry krok po kroku. Jest to coś co robią programiści, gdy tworzą skrypt programu. Jest to kolejna własność myślenia komputacyjnego: tworzenie algorytmu. W przypadku wyjaśniania znajomemu fizzbuzz, algorytm może wyglądać następująco:
- Zacznij odliczać od 1.
- Za każdym razem, gdy osiągniesz liczbę podzielną przez 3, zamień liczbę na słowo fizz.
- Za każdym razem, gdy dojdziesz do liczby podzielnej przez 5, zamień ją na słowo buzz.
- Za każdym razem, gdy osiągniesz liczbę podzielną przez 3 i 5, zastąp liczbę słowem fizzbuzz.
We wrześniu 2016 roku, dziesięć lat po napisaniu artykułu na temat myślenia komputacyjnego, Jeanette Wing wzięła udział w spotkaniu organizowanym przez Google z członkami CSTA (Computer Science Teachers Association), w którym poszerzyła swoją definicję myślenia komputacyjnego. Nie tylko jest to sposób, w jaki ludzie myślą, ale przede wszystkim jest to metoda na rozwiązanie każdego problemu przez komputer, człowieka czy maszynę. W związku z tym spójrzmy na fizzbuzz i zaprojektujmy algorytm przeznaczony dla komputera.
Używając pseudokodu, mamy coś w rodzaju:
jeśli x% 3 == 0 wpisz fizz
jeśli x% 5 == 0 wpisz buzz
jeśli x% 3 == 0 i x% 5 == 0 wpisz fizzbuzz
Komputery zawsze muszą być informowane, kiedy wystartować oraz się zatrzymać, więc jeśli chcemy zacząć od 1 i zatrzymać się na 100, pseudokod może wyglądać tak:
dla (x = 1; x <= 100; x = x + 1):
jeśli x% 3 == 0 wpisz fizz
jeśli x% 5 == 0 wpisz buzz
jeśli x% 3 == 0 i x% 5 == 0 wpisz fizzbuzz
Teraz mamy dwa kompletne algorytmy, jeden dla człowieka, a drugi dla komputera. Algorytm maszynowy jest nieco trudniejszy do zrozumienia dla większości ludzi, ponieważ wiąże się z warstwą abstrakcji. Abstrakcja jest kolejną główną cechą myślenia komputacyjnego, której uczymy się by stawać się coraz lepszymi informatykami. Jest to prawdopodobnie najtrudniejsza część myślenia komputacyjnego, ale może być również najważniejsza. W szkole Asy Programowania kursanci już od najmłodszych lat poznają i ćwiczą tą niezwykle istotną w tych czasach umiejętność.
Zespół Asy Programowania