Piaskownica, źródło: http://maxpixel.freegreatpicture.com/Children-Playground-Game-Device-Play-722365

Czytając książkę, która tłumaczy zagadnienia związane z konkretnym językiem, zauważyłeś, że autorzy zazwyczaj omawiają je na podstawie przykładów. Przykłady te są, mniej lub bardziej, luźno ze sobą powiązane ponieważ trudnym jest stworzenie takiego problemu, który obejmowałby wszystkie zagadnienia związane z danym językiem.

Gdy omawiany jest przykład, musimy oderwać się od wszystkiego i rozważać go trochę w próżni, a to nieco utrudnia zrozumienie miejsc, gdzie można to zastosować. Tak jak na lekcji nauki pływania- najpierw ćwiczenia, które usprawniają pracę nóg, później technika pracy rąk. Ale dopiero łącząc te umiejętności ostatecznie udaje się płynąć.

Podejrzewam, że nie tylko moim zdaniem najlepszą rzeczą jaką można zrobić podczas nauki programowania jest tworzenie mikro projektów. Taki mikro projekt wymaga różnych umiejętności i dotyka wielu dziedzin, przez co nie tylko pozwala na sprawdzenie jak działają konkretne algorytmy czy struktury danych, ale także pozwala na improwizację. Pracując nad takim projektem można często napotkać problemy, które wymagają rozwiązania przy użyciu jeszcze nie poznanych narzędzi lub stworzenie nowych. Najważniejszym jednak dla mnie aspektem przy realizacji mikroprojektów jest fakt, że po skończeniu pracy uzyskujemy gotowe rozwiązanie, którym można się pochwalić. Otóż nie ma nic bardziej męczącego i frustrującego jak wielotygodniowa (jak nie wielomiesięczna) praca nad projektem, którego nikomu nie można pokazać. Takie projekty po prostu zostają porzucone.

Taki mały projekt można stworzyć samemu, tylko uwaga: musi on być mały, nieskomplikowany i do zrobienia maksymalnie w tydzień. “Projekt na tydzień” zajmuje dwa tygodnie lub dłużej, więc najlepiej wymyślić coś, co jest do stworzenia w kilka, kilkanaście godzin. Ponieważ wszystko zależy od technologii, z której korzystamy, przedstawiam poniżej kilka pomysłów na bardzo małe projekty, które można dla sportu zaprogramować.

Aplikacje desktopowe

Niezależnie czy to aplikacja “pod okienka” czy pod stary dobry terminal, komunikacja z użytkownikiem odbywa się przez mysz lub klawiaturę, więc taki projekt musi skupiać na tym swoją uwagę. Może to być pobieranie wartości liczbowych z klawiatury albo odczyt ruchu myszy. Program po zakończeniu nie zapamiętuje swojego stanu więc można pokusić się o obsługę odczytu i zapisu danych z/do plików.

Np. prosta “gra”, która polega na kupowaniu tanio towarów i sprzedawaniu ich drożej w innym mieście. Gracz może poruszać się po kilku miastach. Przejazd z miasta do miasta kosztuje określoną (albo zmienną) ilość pieniędzy. W każdym mieście ceny poszczególnych towarów różnią się (mogą być losowane). Gracz rozpoczyna grę z określoną ilością pieniędzy, za które może przemieszczać się z miasta do miasta oraz kupować lub sprzedawać towary. W miarę prosty projekt, można go wykonać bez interfejsu graficznego. Zapisanie stanu gry i jego odtworzenie polegałoby na zapisie/odczycie z pliku.

Drugi mikroprojekt, nieco trudniejszy to po prostu klasyczny snejk. Takiego snejka robiłem z uczestnikami Summer Camp i jego źródła są dostępne na Githubie. Dodatkowo na youtube są dostępne screencasty z konfiguracji środowiska oraz jego obsługi. Jak działa snejk: losowany jest pokarm na planszy. Gracz poruszając się “wężem”, czyli zbiorem punktów, którego nie można zatrzymać ale może skręcać/łamać się o 90 stopni. Gra polega na pożeraniu pożywienia poprzez najście na nie, co powoduje zwiększenie długości węża. Taki projekt wymaga przede wszystkim umiejętności projektowania animacji i zarządzania pamięcią- przechowywanie aktualnego stanu planszy i układu węża.

funsh.pngPrymitywny Funsh

Aplikacje mobilne

Apki są dość specyficzne. Przede wszystkim mamy dwa ograniczenia, powierzchnia do komunikacji z użytkownikiem oraz czas pracy baterii. Aplikacje mobilne, przeważnie, ograniczają się do wyświetlania informacji a te są pobierane z serwera czy innego zewnętrznego źródła. Z drugiej strony jest to urządzenie wyposażone w sporo zabawek jak np. GPS, kamerka czy żyroskop- to daje spore możliwości. I tak np. Można pokusić się o napisanie trackera, który rysuje w przybliżeniu ścieżkę, którą przebył użytkownik (taki wstęp do endomondo).

Ponieważ dane są przeważnie pobierane z sieci, mikroprojekt mógłby polegać na wysyłaniu zapytań do publicznych serwisów i wyświetlać otrzymane dane. Mogą to być kursy walut czy prognoza pogody.

tracker.pngPrzykład jak mógłby wyglądać wynik działania trackera GPS, źródło: http://mowson.org/karl/datalog/misc_old_logging/

Aplikacje webowe

Czyli aplikacja zamknięta w przeglądarce internetowej. Te są mocno rozdzielone na dwa podzespoły- część prezentacji (frontend) oraz część danych/biznesu (backend). Obecnie klasycznym przykładowym projektem, który demonstruje działanie technologii jest tzw. TodoMVC. Projekt, który polega na stworzeniu listy zadań do zrobienia. Do listy zadań można dodać zadanie jak i je usunąć albo oznaczyć jako wykonane. W zasadzie każdy nowy framework czy język programowania implementuje ten projekt dla przykładu. Gra, którą zaproponowałem w rozdziale o mikroprojektach w aplikacjach webowych również mogłaby być tutaj ciekawym zajęciem. Ponieważ najlepiej przełamywać aplikacje webowe na frontend i backend, polecałbym jednak taki projekt zrealizować grupie.

todos.pngTodoMVC, web aplikacja demonstrująca użycie konkretnych technologi webowych

Coś innego?

Mam nadzieję, że przedstawione przykłady chociaż trochę zainspirowały Ciebie do stworzenia mikroprojektów. Podkreślam jednak jeszcze raz- muszą być krótkie i nieskomplikowane- są po to aby zapoznać się z technologią i trochę się nią pobawić a efekt końcowy jest przede wszystkim dla frajdy i satysfakcji. Jak się nie uda dokończyć projektu- cóż, innym razem!

A Ty? Masz jakieś swoje ulubione mikro-projekty, które tworzysz? Może masz jakieś ogólne podejście jak zabierasz się za nowe języki? Napisz koniecznie w komentarzu.

Powiązane tematy

URL - adres internetowy

URL - adres internetowy

"W internecie jest wszystko." Do każdego zasobu jest tak samo daleko, wystarczy znać jego adres. Adres zasobu to ścieżka, która prowadzi dokładnie do tej rzeczy. W niej samej zakodowane jest sporo interesujących informacji. Czytaj całość

Sleep- zatrzymywanie programu na pewien czas

System operacyjny, który zarządza uruchomionymi programami, przydziela każdemu porcję czasu procesora, który wykorzystuje ją na wykonanie swojego algorytmu. Program nie może pracować cały czas, bez odpoczynku, jednak istnieje możliwość odłożenia jego pracy w czasie. Czytaj całość

Architektura projektu

Architektura projektu

Niemalże tak szybko, jak wyjdziemy z projektów typu Hello World, tak równie szybko zacznie nam doskwierać poziom skomplikowania struktury projektu. Trzeba sobie z tym poradzić i jest na to masa sposobów. Czytaj całość


Piotr Poźniak

Piotr Poźniak

Programuję od ponad 15 lat. Prowadzę software house. Angażuję i zachęcam wszystkich do programowania w ramach inicjatywy Programowanie jest łatwe.

Twoja opinia

Komentarzy: 3

Avatar użytkownika Rouch
Rouch · 4 lata temu

Zamieniłem obrazek na link do tych tablic :)

Avatar użytkownika Piotr Poźniak
Piotr Poźniak · edytowany 4 lata temu

@Rouch, a mógłbyś podać linki do takich tablic?

Avatar użytkownika Rouch
Rouch · edytowany 4 lata temu

Pamiętam jak w technikum jeszcze robiłem mikroprojekty to były kalkulator, książka adresowa (winforms C++). Jeśli chodzi o ciekawe projekty to są różne apki czy obrazki z tablicami co można porobić. Jeśli chodzi zaś o gry, fajnie jest np przejść jeden tutorial Unity po czym dodać rzeczy od siebie (do czego zresztą twórcy silnika i tutoriali sami gorąco zachęcają). Dodaje zdjęcie takiej tablicy różnych projektów.

https://warosu.org/g/image/Gkpy4jA2dQ8XVwoBQEIIVw

Obrazek przedstawiający nadgryzione ciasteczko