admin 0Comment

Jeśli jesteś tutaj po raz pierwszy i nie bardzo wiesz o co chodzi, możesz chcieć zajrzeć do tego tematu. A jeśli nie masz na to ochoty, pokrótce wyjaśnię, że zgodnie z planem, przez sześć miesięcy mam zamiar uczyć się programowania w języku Python, oraz w mniejszej skali, w języku Java. Poświęcał będę na to osiem godzin przez pięć dni w tygodniu, co daje 40h/tydzień. Moim celem jest zdobycie zatrudnienia, jako junior developer. Moją naukę będę podsumowywał na blogu w tematach takich jak ten, który właśnie czytasz.

Drugi tydzień nauki minął mi cholernie szybko. Wszystkie zagadnienia, które zaplanowałem sobie na pierwszy tydzień, są tematami bardzo obszernymi więc ten tydzień był kontynuacją poprzedniego.

 

Pisałem niewielkie programy użytkowe w języku Python

 

Od tego starałem się zacząć większość dni. Czysta praktyka, będąca jednocześnie odświeżaniem i przypominaniem sobie wiedzy nabytej m.in. podczas przerabiania mojego pierwszego kursu. Jednocześnie jestem świadomy, że powinienem już przechodzić z fazy pisania programów na zasadzie „co mogę stworzyć z wiedzą, którą posiadam” do podejścia „program o jakiej użyteczności chciałbym stworzyć, i czego muszę się w związku z tym douczyć”. To jedyna sensowna droga rozwoju. Jednocześnie zaczynam obwąchiwać się z ideą pisania programów z GUI (Graphical User Interface – czyli z graficznym interfejsem, a nie realizowane w oknach tekstowych). Tak tak, wiem, że dzisiaj rządzą aplikacje webowe ale uważam, że temat GUI warto chociaż liznąć, co też zrobię. Jest to jednak temat mocno poboczny.

 

Nadal walczyłem ze znalezieniem źródeł nauki OOP nastawionych na praktykę

 

I nadal nie jestem w stanie znaleźć czegoś w pełni satysfakcjonującego. Realizuję więc wciąż plan z poprzedniego tygodnia, o którym (oraz o samym pojęciu OOP) przeczytasz tutaj.  Pojawiają się nieco bardziej zaawansowane zagadnienia, takie jak dekorowanie nazw, glębsze zrozumienie działania iteratorów czy generatory. Oczywiście największy problem mam w przestawieniu się na analizowanie problemów zgodnie z OOA (Object Oriented Analysis) oraz z OOD (Object Oriented Design), czyli takim przeanalizowaniu zagadnienia, by wyodrębnić potencjalne klasy, obiekty, a także działania, na jakich będą się opierać, a następnie przekonwertować to na kod. Pilnie potrzebuję tutaj praktycznych przykładów!

Jednocześnie już niedługo chciałbym przejść do nauki frameworków opartych na pracy w OOP i liczę, że w ten sposób uda mi się praktycznie i użytecznie opanować korzystanie z tego paradygmatu programowania. Brzmi jak plan?

 

Moje zainteresowanie Learn Python the Hard Way opłaciło się!

 

Przeglądając ten kurs dla początkujących wannabie-programistów trafiłem na to, czego szukałem realizując wyżej opisany temat, czyli praktycznie ujęcie nauki OOP, pokazane w ćwiczeniu numer 46 i dalej, na podstawie prostej gry tekstowej. Dostosowanie kodu do Pythona 3 to nie problem (kurs realizowany jest przy użyciu Pythona 2) a analiza, nawet tak prostego, programu napisanego w OOP daje mi bardzo dużo. Dzięki temu, obok nabywania suchej wiedzy o klasach i ich instancjach, dziedziczeniu czy enkapsulacji, mogę podejrzeć jak (i co równie ważne – dlaczego) to wszystko działa w praktyce. No i próbować wdrażać we własnych programach.

 

W mniejszym stopniu kontynuuję naukę Javy

 

Nadal realizuję m.in. oficjalny tutorial od Oracle oraz staram się totalnie nie pomieszać w mojej głowie specyfiki używania OOP przez Pythona i Javę. Tutaj nie naciskam jeszcze sam siebie na pisanie praktycznych programów, wiem, że najpierw muszę poznać absolutne podstawy czyli to, jak w Javie wyglądają typy danych, flow control etc.

 

***

 

Całość idzie mi raz lepiej, a raz gorzej ale cóż, nikt nie mówił, że będzie łatwo. Zwłaszcza na początku. W sumie później pewnie też nie będzie. Ale na pewno jest fajnie!

 

Dodaj komentarz