admin 0Comment

Pierwszy tydzień nauki związanej z moim projektem już za mną. Jeśli wszystko pójdzie dobrze, takich podsumowań pojawi się jeszcze około dwudziestu pięciu. Ten temat umieszczam na blogu z pewnym poślizgiem czasowym ale nie jest to żaden głos z przeszłości, poślizg jest naprawdę niewielki 😉

Jeśli nie zajrzałeś do powyższego linku, pokrótce wyjaśnię: 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ń.

Zdaję sobie sprawę, że początkowe tygodnie będą mi ustalać tematykę, rytm i tempo uczenia się a wiele szczegółów może się nie raz zmieniać, tym niemniej, w pierwszym tygodniu:

 

Pisałem praktycznie, niewielkie programy w języku Python.

Bo praktyka to podstawa, poza tym po moim pierwszym kursie zostało mi sporo pomysłów na programy użytkowe do napisania Myślę, że przynajmniej część z nich umieszczę tutaj w przyszłości.

 

Dokończyłem kurs Automate the Boring Stuff with Python.

Więcej o kursie w tym temacie. Nareszcie, mając więcej niż circa godzinę dziennie, udało mi się nadać solidne tempo procesowi przechodzenia przez kurs.  Zamknąłem ostatni rozdział wraz z ostatnimi zadaniami praktycznymi. Nie oznacza to, że więcej w żaden sposób do kursu nie wrócę – na blogu pojawiły się już pierwsze tematy (na przykład ten) opisujące proces dochodzenia do rozwiązań praktycznych zadań z tego tutoriala.

Po zakończeniu kursu mogę go (ponownie) podsumować – nie żałuję decyzji o rozpoczęciu nim nauki programowania jako takiej. Jest przemyślany, nastawiony na praktykę, nadaje odpowiednie tempo i pozwala zdobyć solidne podstawy. A może raczej – podstawy podstaw.

Jedyne modyfikacje w nauce, jakie mógłbym z dzisiejszej perspektywy zaproponować to EWENTUALNE przeskoczenie jednego czy dwóch rozdziałów z zakresu 12-14 oraz 16-18. Co nie zmienia faktu, że namawiam do przebrnięcia przez cały kurs.

 

Zajrzałem do źródeł nauki frameworka Django i…zacząłem uczyć się OOP

Czym jest Django i OOP? Django to bardzo popularna platforma programistyczna (taki wspomagacz pisania projektów), przeznaczona do tworzenia aplikacji internetowych.  Już od dłuższego czasu wiedziałem, że zaznajomienie się z nią będzie jednym z moich celów – to jeden z głównych frameworków (czyli właśnie platform programistycznych) wykorzystywanych przez programistów Python.

Po krótkim czasie stwierdziłem jednak, że sensowniejsze będzie wcześniejsze zagłębienie się w bardzo ważny temat OOP, czyli Object Oriented Programming (Programowanie obiektowe/programowanie zorientowane obiektowo), który poruszałem wcześniej ale w bardzo ograniczonym zakresie. Jest to jeden z paradygmatów programowania – metod pisania programów komputerowych, niejako sposobów na odwzorowywanie w nich elementów, na których chcemy dalej działać. Jeśli w tym momencie czytasz i nie za bardzo wiesz o czym, to znak, że ja potrzebuję napisać kilka słów na temat paradygmatów a ty potrzebujesz go przeczytać.

W przyszłym tygodniu mam zamiar kontynuować naukę OOP. Postudiowałem kilka stron na ten temat, zajrzałem do jednego czy dwóch  videotutoriali (tego akurat nie specjalnie polecam). Następnie sięgnąłem do rozdziału odnoszącego się do OOP, umieszczonego w internetowej wersji „Zanurkuj w Pythonie” i tę akurat lekturę mogę polecić ze szczerym sercem.  Przeklikałem też przez kurs podstaw Pythona wraz z OOP, obecny na udacity.com, jednak jest on mocno podstawowy a do tego nie jestem fanem korzystania z takich, de facto, videotutoriali. Ostatecznie zająłem się źródłem, od którego pewnie powinienem zacząć, czyli informacjami zawartymi w oficjalnej dokumentacji Pythona.

Przyznaję, że nie udało mi się znaleźć żadnego świętego graala kursów OOP.  Brakuje mi tutaj źródeł opartych mocno na praktycznych, funkcjonalnych przykładach i nadal, mimo nabytej wiedzy teoretycznej, nie do końca potrafię ugryźć praktyczną stronę zastosowania OOP w Pythonie. Być może jedynym wyjściem jest ucieczka do przodu i zagłębienie się w Django a następnie zaangażowanie się w praktyczne projekty opensourcowe? Czas pokaże.

Warto przy okazji wspomnieć, że w zasadzie OOP nie uczę się w tym momencie tylko na bazie Pythona, ale wraz z nauką podstaw Javy, o czym jednak za chwilę.

 

Przeglądam także do końca kurs Learn Python The Hard Way oraz staram się poznać dobre praktyki programistyczne.

Kurs LPtHW zaintersował mnie już dawno temu, jednak ostatecznie padło na ten opisywany przeze mnie wcześniej – więcej tutaj. Stwierdziłem jednak, że chciałbym zobaczyć co zawiera się w kursie przeznaczonym do nauki programowania, a nie, jak w przypadku AtBSwP, do programistycznej automatyzacji pewnych zadań. Dodatkowo ciekawym elementem kursu LPtHW jest zaznajomienie z podstawami pracy w PowerShellu.

Stwierdziłem też, że nie ma sensu utrwalać złych praktyk pisania programów w Pythonie (i nie tylko) a następnie musieć się ich oduczyć, dlatego czytam o dobrych praktykach programistycznych i widzę ile kwestii będę musiał poprawić względem hobbystycznych programów proponowanych przez autora AtBSwP w jego kursie.

W mniejszym zakresie rozpocząłem także naukę programowania w języku Java.

Dlaczego w mniejszym? Ponieważ głównym podłożem mojej nauki ma nadal być Python. Dlaczego rozpocząłem? Ponieważ chciałem także zobaczyć na czym polega ten, bardzo popularny i (w pewnym stopniu oczywiście) odmienny od Pythona język.

Jako, że nauka Javy od początku równa się nauce OOP, równolegle uczyłem się OOP dla dwóch języków programowania, i bardzo dobrze, pozwala to łatwiej dostrzec różnice między programami i odseparować to, co jest sednem OOP od specyfiki danego języka.

Źródła? Głównie oficjalny kurs Javy, zaserwowany przez Oracle. Jest on wartościowy, jednak jak na razie brakuje w nim działań na praktycznych, funkcjonalnych programach. Inna kwestia, że dopiero zaczynam więc być może zmieni się to w dalszej jego części. Do pracy w Javie zainstalowałem też Eclipse i tutaj przyznaję, że poległem jeśli chodzi o jej bezproblemową obsługę wobec ilości opcji. Doszedłem do wniosku, że tak zaawansowane środowisko programistyczne (znowu nie do końca rozumiesz o co mi chodzi? Poczytaj tutaj) na tym etapie bardziej przeszkadza mi niż pomaga i z internetowego tutoriala udacity.com pożyczyłem pomysł skorzystania z BlueJ (o czym pisałem niedawno na blogu w tym temacie). Na razie nic więcej nie jest mi potrzebne do pracy w tym języku. Oczywiście obwąchiwanie się z Javą (oraz z OOP w jej kontekście) kontynuował będę w kolejnych tygodniach.

***

Tyle jeśli chodzi o pierwszy tydzień. Wnioski? Fantastycznie jest mieć sporą ilość czasu codziennie do poświęcenia na naukę i widzieć (pomimo oczywiście pewnego zmęczenia) jak pojawiają się postępy. Jednocześnie rozpoczynanie kilku nowych zagadnień związanych z programowaniem jako takim potrafi namieszać w głowie ale byłem na to przygotowany.

Pojawia się też to, czego się spodziewałem, czyli świadomość, że wskazanie odpowiedniej drogi pozwoliłoby zaoszczędzić czas zmarnowany na szukanie właściwych kierunków i materiałów do nauki oraz na wychodzenie ze ślepych ścieżek. Być może to tutaj widać przewagę uczenia się w ramach zajęć zaproponowanych przez programistyczne bootcampy lub też pracę z doświadczonym mentorem. Jednak nie jest to nie do przeskoczenia a z błędów także można wyciągnąć wartościowe wnioski. Oczywiście chętnie poczytam wszelkie uwagi i rady związane i niekoniecznie związane z moim planem nauki.

Dodaj komentarz