艣roda, 27 kwietnia 2022

馃惂Niezrozumia艂e znaki skrzyd艂owe, czyli nauka podstaw podstaw - troch臋 o notacjach馃幎

W serialu animowanym Pingwiny z Madagaskaru, w ka偶dym odcinku Skipper podczas akcji pokazywa艂 skrzyd艂ami r贸偶ne dziwne znaki. Pewnego dnia Szeregowy zdradzi艂 si臋, 偶e nie wie co one oznaczaj膮. Okaza艂o si臋, 偶e s膮 to znaki skrzyd艂owe, pokazuj膮ce pingwinom przebieg akcji. Dla Skippera (i pewnie dla Kowalskiego), mia艂y one kluczowe znaczenie, natomiast pozostali cz艂onkowie zespo艂u ca艂kowicie je ignorowali. Brak profitu.

Podobnie jest z programowaniem w zespole - niekt贸re osoby mog膮 nie zwraca膰 uwagi na rzeczy kluczowe dla innych. Przyk艂adowo, diagramy UML mog膮 dostarcza膰 wiedzy na temat dzia艂ania projektu, natomiast mniej do艣wiadczeni programi艣ci i testerzy, nie umiej膮c wywnioskowa膰 z nich informacji, mog膮 z ka偶d膮 w膮tpliwo艣ci膮 zwraca膰 si臋 do analityka. 

Dochodzi wtedy do nieporozumie艅 - efektem pracy analityka s膮 diagramy, ale je艣li nie stanowi膮 one wsp贸lnego j臋zyka mi臋dzy nim a programist膮, wsp贸艂praca jest utrudniona. 

Czasem jest te偶 tak, 偶e jedna osoba u偶ywa jakiego艣 meta-j臋zyka, sposobu kodowania, kt贸ry jest ca艂kowicie niezrozumia艂y dla innych. W czasach gimnazjum nauczycielka angielskiego z uporem maniaka rozpisywa艂a wymow臋 s艂贸wek w mi臋dzynarodowym alfabecie fonetycznym, ale nigdy nie wyt艂umaczy艂a nam co on oznacza. Jak to m贸wi膮 - rzeczy oczywistych si臋 nie wyja艣nia...

Znajomo艣膰 r贸偶nych notacji odr贸偶nia moim zdaniem profesjonalist贸w od amator贸w. Bardziej dosadnie, nauczenie si臋 ich jest wr臋cz niezb臋dne do osi膮gni臋cia jakiegokolwiek poziomu w wybranej dziedzinie. Kilka przyk艂ad贸w:

  • Je艣li nie znamy zapisu nutowego, nie b臋dziemy dobrym muzykiem. 
  • Aby dobrze programowa膰, trzeba zna膰 zapis matematyczny
  • Rozw贸j w szachach jest trudny bez znajomo艣ci notacji algebraicznej
  • J臋zyki programowania s膮 te偶 pewn膮 form膮 notacji, kontraktu mi臋dzy komputerem a programist膮. 
  • Dokumentacje wielu j臋zyk贸w programowania s膮 zapisywane w notacji BNF
  • Dokumentacja CSS wykorzystuje w艂asn膮 form臋 notacji, na przyk艂ad typy danych umieszczane s膮 w ostrych nawiasach
  • Ciekaw膮 notacj膮 jest zapis ruch贸w kostk膮 Rubika. 
  • Chyba najtrudniejsz膮 form膮 notacji z jak膮 si臋 spotka艂em s膮 wyra偶enia regularne.
Poznanie notacji daje nam ogromn膮 d藕wigni臋, poniewa偶 to w艂a艣nie na niej opiera si臋 dalsza nauka pozosta艂ych rzeczy zwi膮zanych z dziedzin膮. Zwykle notacja wywodzi si臋 z teorii naukowej, stanowi co艣 znacznie wi臋kszego ni偶 po prostu przemianowanie jednych symboli na drugie.

Jak najlepiej uczy膰 si臋 r贸偶nych notacji?

Po pierwsze, nale偶y zauwa偶y膰 konieczno艣膰 nauki. Bywa tak, 偶e ignorujemy rzeczy kt贸re widujemy bardzo cz臋sto, staj膮 si臋 one dla nas 'dziwnymi szlaczkami' czy 'chi艅skimi znaczkami'. Sprawy nie u艂atwia fakt, 偶e jeste艣my wr臋cz zasypywani r贸偶nymi aplikacjami do nauki oraz wideotutorialami. Dzi臋ki temu, mo偶emy na przyk艂ad nauczy膰 si臋 grania prostych piosenek bez znajomo艣ci nut, albo pisa膰 kod bez zrozumienia jak i dlaczego dzia艂a. Nauka w taki spos贸b jest d艂ugoterminowo trudna, poniewa偶 uczymy si臋 pami臋ciowo, bez zrozumienia. Mo偶na za ka偶dym razem gra膰 (czy pisa膰 kod) z nagraniem wideo, ale nie uczy nas to sposob贸w rozwi膮zywania problem贸w. Je艣li co艣 nie dzia艂a, zagl膮damy do dokumentacji i wy艂膮czamy j膮, bo nic tam nie rozumiemy. Mo偶emy w takim stanie trwa膰 przez lata.

Osoba ciekawa i nastawiona na rozw贸j stwierdzi jednak 偶e chce i艣膰 dalej. 
Pierwszym krokiem notacji mo偶e by膰 zwyk艂e przeczytanie artyku艂u na Wikipedii na dany temat. Cz臋sto okazuje si臋, 偶e to co wydawa艂o si臋 dla nas przez lata niezrozumia艂e, jest bardzo proste i przydatne. Wspomniana wcze艣niej notacja BNF sk艂ada si臋 zaledwie z kilku symboli. Je艣li to za ma艂o, bierzemy ksi膮偶k臋 i uczymy si臋 zapisu, najlepiej jednocze艣nie trenuj膮c czytanie na przyk艂adach. Je艣li naszym wyborem jest nauka UML, czytamy jak najwi臋cej diagram贸w staraj膮c si臋 zwraca膰 uwag臋 na wszystkie szczeg贸艂y. Je艣li czego艣 nie wiemy, wracamy do dokumentacji i uczymy si臋 ponownie. Powt贸rki powinny by膰 regularne, najlepiej codzienne po kilka minut. Praca raz w tygodniu po 3 godziny odpada.

Niekt贸re notacje s膮 bardzo trudne w samodzielnej nauce. Przyk艂adem mo偶e by膰 nauka cyrylicy czy zapisu nutowego. Trudno艣膰 polega tutaj na tym, 偶e do praktycznego wykorzystania, konieczna jest znajomo艣膰 wielu symboli. Dodatkowo w cyrylicy mamy wielu false friends, niekt贸re litery po polsku znacz膮 zupe艂nie co艣 innego. 
Mo偶na tutaj zastosowa膰 metod臋 drobnych kroczk贸w. Gdy uczymy si臋 pisa膰 na klawiaturze 10 palcami, to nie zaczynamy od przepisywania Pana Tadeusza. Pierwszego dnia uczymy si臋 pisania literki F, drugiego F oraz J, a trzeciego, F, L oraz J (jak ju偶 opanujemy poprzednie). Z czasem opanowujemy ca艂膮 klawiatur臋. Podobnie z czytaniem r贸偶nych notacji. Mo偶emy uczy膰 si臋 ma艂ymi partiami, powtarzaj膮c materia艂 z poprzedniego dnia. Nowe rzeczy dodajemy, jak ju偶 poprzednie umiemy bardzo dobrze. Wed艂ug ameryka艅skich naukowc贸w 馃馃徎‍馃敩w ten spos贸b wytwarzaj膮 si臋 nowe po艂膮czenia w m贸zgu. 
Ucz膮c si臋 innego alfabetu, zaczynamy od czytania pojedynczych znak贸w, nast臋pnie robimy 膰wiczenia na dwu i trzyliterowe zbitki, wprowadzaj膮c z czasem nowe litery. 

Mo偶emy wtedy te偶 wraca膰 do nauki na trudniejszych, losowych przyk艂adach. Wdra偶aj膮c si臋 w nowy j臋zyk programowania, mo偶emy analizowa膰 kod na forum dla programist贸w, albo czytaj膮c pull requesty koleg贸w i sprawdzaj膮c, co robi膮 poszczeg贸lne fragmenty kodu w dokumentacji. 
Nie by艂bym sob膮, gdybym nie poleci艂 tutaj metody Anki.

Zwykle uczymy si臋 czego艣 nie dla samej nauki, ale do wykorzystania zdobytej wiedzy w u偶yteczny spos贸b. Po nauczeniu si臋 podstawowych nut, mo偶emy rozpocz膮膰 gr臋 na instrumencie z notacji nutowej. Podczas programowania, usprawnionego wcze艣niejsz膮 nauk膮 notacji UML, b臋dziemy wyci膮gali wi臋cej informacji. Mo偶emy wtedy doucza膰 si臋 tych rzeczy, kt贸rych jeszcze nie wiemy i na kt贸re raz na jaki艣 czas b臋dziemy napotykali. Moim zdaniem warto z takich szczeg贸lik贸w robi膰 fiszki i powtarza膰 je co jaki艣 czas.
Nie zapominajmy tak偶e o regularnych powrotach do nauki podstaw. Szachowi arcymistrzowie przerabiaj膮 (a przynajmniej przerabiali), podr臋czniki ni偶szych kategorii, by nie zapomnie膰 o filarach swojego fachu. 

Mrowienie w g艂owie

艢wiadoma nauka trudnych rzeczy wymaga bardzo du偶ej koncentracji. Jest przeciwie艅stwem dzia艂a艅 nawykowych, powtarzania r贸偶nych rzeczy, z jednoczesnym przegl膮daniem Facebooka i ogl膮dania czego艣 na YouTube. 
Niekt贸re metody nauki mog膮 dawa膰 zwodnicze poczucie robienia post臋p贸w. Wydaje mi si臋, 偶e nauka cyrylicy w Duolingo jest zbyt prosta. Polega na dopasowywaniu ca艂ych s艂贸w do angielskich odpowiednik贸w. Znacznie r贸偶ni si臋 to od wpisywania tekstu samodzielnie. 艢wiadomy trening nowych umiej臋tno艣ci jest nieprzyjemny, ale daje przyjemne efekty.
Programowanie bez zag艂臋biania si臋 w meandry dokumentacji jest przyjemne, ale dok艂adne sprawdzanie co na prawd臋 robi膮 dane metody i zmaganie si臋 z notacj膮 matematyczn膮 algorytm贸w, powoduje niepok贸j. Z czasem jednak zauwa偶amy rezultaty, wiemy coraz wi臋cej i widzimy szczeg贸艂y tam, gdzie inni ich nie dostrzegaj膮. 

Literatura

Brak komentarzy:

Prze艣lij komentarz