Ucząc innych warto posługiwać się rzeczywistym kodem z prawdziwego życia - a niewymyślonymi problemami.
Korzystajmy z naszych doświadczeń zamiast wymyślać koło na nowo
Niektórzy z naszych czytelników piszą o programowaniu, czy to na swoich blogach czy w pracy i z pewnością spędzają dużo czasu próbując znaleźć dobre przykłady. Podstawową wskazówką po jaką można tutaj sięgnąć jest rozpoczęcie od prawdziwego kodu, który kiedyś napisałeś czy napotkałeś. Usuwamy z niego wszystkie nieistotne szczegóły, aby uniknąć zbędnego zaciemniania tego co chcemy przekazać. Et voilà: mamy praktyczny przykład zamiast wymyślonego znikąd.
Przykład rzeczywisty
Aby zobaczyć dlaczego przykłady powinny być realistyczne, porozmawiajmy najpierw o nierealistycznym przykładzie. Powiedzmy, że próbujemy wyjaśnić lambdy Pythona. Możemy podać przykład użycia map
i lambda do podwojenia zbioru liczb.
liczby = [1, 2, 3, 4]
wynik = map(lambda x: x * x, liczby)
Ten przykład jest nierealny z kilku powodów:
- zwykłe podnoszenie do kwadratu zestawu liczb nie jest czymś co tak naprawdę będziemy kiedykolwiek robili w prawdziwym programie;
- To użycie
map
nie jest czymś co w Pythonie byś zrobił, prędzej przecież napisalibyśmy[x*x dla x in liczby]
.
Bardziej realistycznym przykładem na użycie lambd w Pythonie byłoby użycie ich z sortowaniem, tak jak to:
dziecko = [{"imie": "marek", "wiek": 10}, {"imie": "justysia", "wiek": 4}]
posortowane_dzieci = sorted(dziecko, key=lambda x: x['wiek'])
Ale ten przykład jest nadal dość nierealny bo nie wiemy po co niby musimy sortować te dzieci według wieku? Jak więc tworzyć realistyczne przykłady?
Rzeczywisty kod
Tak jak pisaliśmy, najłatwiejszym sposobem na zrobienie realistycznych przykładów jest spojrzenie na prawdziwy kod. Na przykład, zgrepujmy sobie jakiś kawałek kodu Pythona, który napisaliśmy ostatnio, szukając sort.+key
. Znajdziemy od razu wiele najprawdziwych przykładów sortowania listy według jakiegoś kryterium, na przykład maile = reversed(sorted(maile, key=lambda x:x['otrzymany']))
.
Tutaj dość łatwo zobaczyć, że chodzi o sortowanie według czasu. Teraz możemy stworzyć prosty realistyczny przykład sortowania niektórych obiektów (e-maili, wydarzeń itp.) według czasu, na przykład sortowanie niektórych wydarzeń kalendarza według ich uniksowego znacznika czasu:
zdarzenia = [
{ 'data': 1615837012, 'nazwa': 'przyjecie'},
{ 'data': 1300581106, 'nazwa': 'spotkanie z klientem'},
{ 'data': 1489145126, 'nazwa': 'niedzielny obiad u tesciowej'},
]
posortowane_zdarzenia = sorted(zdarzenia, key=lambda x: x['data'])
Jest to bardziej realistyczne niż przykład sortowania dzieci według wieku a tak samo proste.
Prawdzie przykłady z życia pomagają „sprzedać” koncepcję, którą próbujesz wyjaśnić
Kiedy próbujemy wyjaśnić jakąś ideę (jak nasze przykładowe lambdy Pythona), warto też się postarać przekonać czytelnika, że warto się tego nauczyć! Lambdy Pythona są bardzo przydatne a najlepiej to udowodnimy pokazując w jaki sposób lambdy mogą pomóc wykonać konkretne zadanie (a najlepiej zadanie, które czytelnik wykonał wcześniej innym, mniej optymalnym sposobem).
Niestety czasami takie wydestylowanie przykładów z prawdziwego kodu może zająć dużo czasu. Ostatecznie zademonstrowanie problemu może zająć „tylko” kilka linijek kodu i wcale nie wskazywać na to, że napisanie przykładu zajęło np. godzinę. Ale pierwotnie były to setki linii kodu a rozplątanie tego wszystkiego i wymyślenie czegoś małego, co stanowi sedno problemu, wymaga czasu! Pamiętaj: warto poświęcić czas, aby przykłady były naprawdę jasne i minimalne – jeśli setki ludzi czytają twój przykład, oszczędzasz im sumarycznie niesamowite ilości czasu.