Kumpel pojechał na Sardynię. Przysłał mi stamtąd to zdjęcie i dwa zdania:
Na Sardynii tak nazywają jeden z wiatrów. Ciepły i wilgotny wiatr z południa.
Mieszkam we Wrocławiu i moja firma nazywa się DevOstro. Nie miałem pojęcia, że jest wiatr o tym imieniu.
Sprawdziłem. I sprawdzałem dłużej, niż zamierzałem.
Osiem słów zamiast kompasu
Zanim ktokolwiek miał kompas, żeglarze na Morzu Śródziemnym mieli różę wiatrów. Kierunki nie miały stopni — miały imiona.
Obchodzisz różę dookoła i każdy kierunek (rumb) ma swój wiatr. Z północy Tramontana. Z północnego wschodu Grecale. Ze wschodu Levante — bo tam si leva il sole, wstaje słońce. Z południowego wschodu Scirocco. Z południa — Ostro. Dalej Libeccio, Ponente i Maestrale: południowy zachód, zachód, północny zachód.
Róża była wyśrodkowana na Morzu Jońskim i dlatego te nazwy nie są ozdobą. Spójrz z Morza Jońskiego na południowy zachód — celujesz w Libię. Stąd Libeccio. Spójrz na północny zachód — Rzym. Stąd Maestrale, wiatr od miasta-mistrza.
To nie był układ współrzędnych. To było osiem słów, a każde niosło konkretną wiedzę: skąd wieje, jaka fala, jaka pogoda za kilka godzin. Powiedzieć „Libeccio" to było jak powiedzieć całe zdanie o tym, co zaraz zrobi się z łodzią.
Co to jest Ostro
Wieje z południa. Nazwa włoska, od łacińskiego auster — wiatr południowy.
Bywa nazywany też Mezzogiorno: „południe", dosłownie „środek dnia". Bo kierunek i pora to dla żeglarza była ta sama informacja — słońce w zenicie stoi na południu.
Tyle na razie. Do etymologii wrócimy na końcu, bo tam robi się dziwnie.
Kumpel miał rację co do joty
Sprawdziłem każde jego słowo i każde się broni.
Ostro rzeczywiście wieje z południa. Rzeczywiście jest ciepły i wilgotny — na tyle wilgotny, że zwykle przynosi deszcz. I rzeczywiście na Sardynii tak nazywają jeden z wiatrów, bo róża wiatrów to włoska konwencja żeglarska i obowiązuje na całym wybrzeżu.
Jedyne, co dołożyłem od siebie, to kontekst: Ostro nie jest wynalazkiem sardyńskim. Najmocniej pracuje na Adriatyku — Friuli, wyspy dalmatyńskie, najostrzej między Triestem a Splitem. Wiatrem, który robi Sardynię — kładzie drzewa, rzeźbi skały, ustawia całe wybrzeże — jest Maestrale, z północnego zachodu.
Ale kumpel nie napisał „sardyński wiatr". Napisał „na Sardynii tak nazywają jeden z wiatrów". To dwie różne rzeczy i on wybrał tę właściwą.
Zapamiętaj to, bo wróci.
Wiatr bez PR-owca
Tu muszę przyznać się do drugiej rzeczy, której latami nie zauważałem.
Bywam w okolicach Neapolu. A całe to wybrzeże — zatoki poprzedzielane cyplami — otwiera się na południowy zachód, na Tyrreńskie. Czyli Ostro wchodzi tam prosto z morza. Nie zza gór, nie z lądu. Przez otwartą wodę, aż na nabrzeże.
Stałem w tym wietrze nieraz. Moja firma nosi to słowo w nazwie. Nigdy mi to nie przyszło do głowy.
Zresztą wszystkie opisy Ostro się zgadzają: spokojny, równy, pewny. Ciepły. Wilgotny. Przynosi deszcz. Jeden z włoskich przewodników nazywa go „spokojnym w rodzinie". Latem potrafi strzelić krótką burzą, ale to nie jest jego natura.
Bo cały PR w tej rodzinie zgarnia Scirocco.
I to nie jest przenośnia. W okolicach Neapolu słyszałem, jak znajomi rzucają do siebie:
Ma sei sciroccato? — Czy ciebie pogięło?
Sei proprio sciroccato! — Ale z ciebie wariat!
Dosłownie: jesteś przewiany Scirokiem. Gorący wiatr z Sahary namieszał ci w głowie i teraz gadasz bzdury. To słowo weszło do codziennego języka — nikt nie myśli o meteorologii, rzucając je przez stół.
Żaden inny wiatr nie ma takiego słowa. Nikt nie powie o tobie „jesteś przetramontaniony". A o Ostro? Nie ma nawet czasownika. Ostro po prostu wieje. Ciepło, wilgotno, z jednego kierunku, dzień po dniu — i nikt nie robi z tego obelgi, bo nie ma z czego.
Dlaczego zostaję przy tej nazwie
Nazwę miałem wcześniej, bez całej tej wiedzy o wietrze. Teraz, kiedy ją mam, zostaję przy niej świadomie — bo opisuje moją robotę lepiej, niż sam bym to ujął.
Uczę Pythona przez tworzenie gier. I nauka programowania wygląda dokładnie tak: wieje z jednego kierunku, ciepło i równo, dłużej niż byś chciał. Nie ma dnia, w którym coś w tobie przeskakuje. Nie ma montażu, w którym bohater przez trzy minuty stuka w klawiaturę, muzyka narasta — i wstaje od biurka jako programista.
Ostro niczego nie rzeźbi — skały na Sardynii są dziełem Maestrale. Ostro przynosi deszcz. Nie robi widoku, tylko podlewa, a zieleń, którą potem widzisz, jest z niego, choć nikt jej tak nie podpisze.
Tak samo jest z tym momentem, który przychodzi na pewno. Otwierasz własny kod sprzed pół roku i rozumiesz go w dziesięć sekund. Siadasz do zadania, które w marcu wyglądało jak ściana, i po prostu je robisz. Nie umiesz wskazać dnia, w którym to się stało — bo takiego dnia nie było. Padało codziennie po trochu.
Efektowny jest Scirocco. Robotę robi Ostro.
Wracamy do tabliczki
Obiecałem, że wróci: kumpel napisał „na Sardynii tak nazywają jeden z wiatrów", a nie „to sardyński wiatr".
Kiedy pierwszy raz to czytałem, w głowie zrobiło mi się z tego drugie zdanie. Dopiero gdy zacząłem sprawdzać, zobaczyłem, że on tego nigdy nie napisał. Był precyzyjny. To ja byłem niechlujny — przeczytałem, co się spodziewałem przeczytać.
I to jest właściwie cała umiejętność, której uczę. Nie „pisania kodu". Rozróżniania między tym, co jest napisane, a tym, co ci się wydaje, że jest napisane.
Bo tak wygląda 80% debugowania. Patrzysz na własną funkcję i widzisz, co miała robić, a nie co robi. Czytasz komunikat błędu i widzisz, czego się spodziewałeś, a nie co tam stoi. Jesteś absolutnie pewny — i mylisz się od dwudziestu minut.
Różnica jest taka, że komputer nie jest uprzejmy. Nie powie „ciekawa interpretacja". Po prostu zrobi to, co napisałeś, i będzie to robił, dopóki nie przeczytasz uważniej.
Nastolatek, który przez rok pisze gry w Pythonie, wychodzi z tego z nawykiem, którego nie da się nauczyć na wykładzie: czytaj, co jest, nie co powinno być. To się przydaje daleko poza kodem. Choćby przy czytaniu SMS-a od kumpla.
I ostatnia rzecz o nazywaniu
Ci żeglarze nie mieli GPS-a. Mieli osiem słów i wiedzę, co każde znaczy: temperatura, wilgotność, fala, pogoda za sześć godzin. Nazwa była wiedzą.
Nazwa zmiennej to nie ozdoba. x kontra predkosc_gracza to różnica między „coś tam wieje" a „wiem, co się dzieje i co zrobić". Moi uczniowie na początku nie rozumieją, czemu się tego czepiam. Potem piszą pierwszy program dłuższy niż jeden ekran, wracają do niego po tygodniu i rozumieją w dziesięć sekund.
Dobra nazwa to nawigacja — tak samo w XII wieku, jak dziś.
Więc zrobiłem z tego lekcję
Siadłem z tą tabliczką i zorientowałem się, że róża wiatrów to nie jest metafora programowania. To jest po prostu struktura danych.
Osiem nazw, osiem kierunków:
WIATRY = {
"tramontana": (0, -1),
"grecale": (1, -1),
"levante": (1, 0),
"scirocco": (1, 1),
"ostro": (0, 1),
"libeccio": (-1, 1),
"ponente": (-1, 0),
"maestrale": (-1, -1),
}
To jest słownik. Nazwa → dane. Dokładnie to, co żeglarze mieli w głowach w XII wieku, tylko zapisane składnią Pythona.
Jedna rzecz wymaga uwagi, bo inaczej te liczby nie mają sensu. Wektor pokazuje, skąd wiatr przychodzi, a nie dokąd popycha. "maestrale": (-1, -1) to lewo i góra ekranu, czyli północny zachód — tam jest źródło. Żeby ruszyć łódką, trzeba ten wektor odwrócić.
I na tym polega pułapka, na którą wchodzi każdy. Uczeń dodaje wektor do pozycji, uruchamia — i łódka płynie pod wiatr, jakby miała silnik. Kod się wykonuje, Python nie protestuje, wynik jest bez sensu. Przez tę jedną sekundę nazwa przestaje być etykietką.
Tego się nie da opowiedzieć na wykładzie. Musisz sam odpalić kod, zobaczyć, jak łódka płynie prosto pod wiatr — i przez tę jedną sekundę „przecież napisałem dobrze" zrozumieć, że nazwa bez uruchomienia to tylko etykietka. To się robi, nie czyta.
Na razie tej lekcji jeszcze nie ma w kursie. Ale wkrótce — i wtedy uruchomisz ją sam.
Nie wybrałem tej nazwy
Muszę się przyznać: cały ten tekst zbudowałem na małym oszustwie.
Nazywam się Ostrowski.
Nie było żadnego brainstormingu. Nie było wybierania, bo brzmi ostro. Wziąłem kawałek własnego nazwiska i skleiłem z „dev", jak setki ludzi przede mną. Zero filozofii, dwie minuty roboty.
A potem kumpel przysłał tabliczkę i musiałem sprawdzić, skąd właściwie jest moje nazwisko.
Trzy słowa, które brzmią tak samo i nie mają ze sobą nic wspólnego
Ostrowski to nazwisko odmiejscowe — od wsi typu Ostrów, Ostrowo. Notowane w Polsce od 1389 roku. A ostrów to staropolska nazwa na zarośniętą wyspę rzeczną.
I teraz najlepsze. Brückner rozkłada to słowo na czynniki: ostrów znaczy dosłownie „oblany" — od prasłowiańskiego rdzenia sreu-, „lać, płynąć". Ten sam rdzeń dał nam strugę i strumień, a Grekom rhoos — prąd, rzekę.
Ostrów to nie jest miejsce ostre. To jest miejsce, które opływa woda.
Ostro — wiatr — przyszło z zupełnie innej strony: z łacińskiego auster, południe. Stąd też Australia.
Ostro — po polsku i chorwacku „ostro" — to trzeci, jeszcze inny rdzeń.
Trzy słowa. Trzy niepowiązane rodowody. Jeden dźwięk. Żadne z nich nie wie o istnieniu pozostałych.
A dwa z nich są o wodzie. Wyspa oblana rzeką i wiatr znad morza — spotkały się przez czysty przypadek, na tabliczce, którą ktoś sfotografował, bo mu się nazwa skojarzyła.
Koniec
Więc nie: nie nazwałem firmy po wietrze. Nazwałem ją po sobie — a moje nazwisko wymyślił ktoś w XIV wieku, kto mieszkał na wyspie oblanej rzeką i nie wiedział, że sześćset lat później ktoś zrobi z tego nazwę firmy.
Kiedy kumpel napisał „na Sardynii tak nazywają jeden z wiatrów", pomyślałem: zbieg okoliczności, fajny. Sprawdziłem — i zbieg okoliczności okazał się głębszy, niż zabawny fakt na wieczór.
To jest właściwie jedyny nawyk, jaki chcę zostawić moim uczniom. Nie składnię Pythona — składnia się zmienia. Odruch sprawdzenia. Ten moment, w którym coś do siebie pasuje odrobinę za dobrze, a ty zamiast się zachwycić — otwierasz słownik.
Zwykle okazuje się, że miałeś rację z niewłaściwego powodu.
Czasem, jak dziś, okazuje się, że rzeczywistość była ciekawsza od twojej wersji.
Dzięki, Dominik — za tabliczkę i za pretekst, żeby sprawdzić.
Uczę Pythona przez tworzenie gier
Nastolatków i dorosłych, którzy zaczynają od zera. Spokojnie i po kolei — piszesz kod od pierwszej lekcji, w przeglądarce (nie oglądasz, tylko robisz). To są Podstawy Pythona.
Zobacz, co jest w środku →