Wiedzę trzeba odświeżać, bo szybko znika.

Chyba nie ma nikogo, kto nie chciałby się rozwijać. Szczególnie programiści są tym typem osób, które potrzebują być na czasie. Niestety, jesteśmy ograniczeni pod względem możliwości przypominania sobie starych wiadomości. Dziś poruszę temat miłych dla ciała i umysłu metod, które pozwolą nam powtórzyć i zdobyć nową wiedzę!

Ostatnimi czasy panuje boom na serwisy, które ćwiczą nasze umiejętności programistyczne. Sam mam niestety dość mało wolnego czasu, lecz ten, który mi pozostaje przeznaczam głównie na ćwiczenie umiejętności przydatnych w programowaniu. Czemu jest to ważne? Po pierwsze, rozwinę to, co powiedziałem na początku – jesteśmy ograniczonymi istotami, jakkolwiek inaczej by nam się nie wydawało. Głównym problemem jest nasz mózg. Nie, to nie jego pojemność jest problemem. Amerykańscy naukowcy twierdzą, że może on pomieścić około: 256 eksabajtów, 1167 gigabajtów, 50 terabajtów, 10 zetabajtów, 2,5 petabajta. Jak widać, jaki naukowiec, taki wynik. Tak naprawdę, problemem jest to, że niezależnie od tego, jak wiele możemy zapamiętać, trudno jest te dane potem wyciągnąć na zewnątrz. Dlatego ważne jest, by najważniejsze informacje odświeżać, zapisując je w bliższych pierwszym sektorach naszej pamięci długotrwałej.

Przechodząc do meritum, jak możemy to robić? Oczywiście, można wertować wielkie tomiska jak Czysty Kod czy Zrozumieć Programowanie, jednak jest to raczej lektura na dłuższą „chwilę”. A co można zrobić w chwilę?

Tak jak mówiłem na początku, przeżywamy plagę serwisów, które mogą nam pomóc wyciągać wiedzę z dalszych zakątków naszego mózgu. Wymienię teraz cztery, później przejdę do prostego omówienia:

Więc, zaczynając od początku,  CheckiO. Serwis ten jest przeznaczony głównie dla programistów Pythona (chociaż wcale nie mówię, że taki programista PHP nie może tam próbować swoich sił – Python to jeden z prostszych języków).

Zrzut ekranu (5)

 

Serwis polega na rozwiązywaniu zadań, umieszczonych na wyspach sygnalizujących ich poziom trudności. Po tym jak już rozwiążemy zadanie, możemy je opublikować, jeżeli uważamy je za dostatecznie ciekawe, lub też popatrzeć na rozwiązania innych. Szczególnie przez możliwość podglądania rozwiązań innych serwis ten jest bardzo ciekawy. Natrafić można na rozwiązania, które zaskakują prostotą, lub też są skondensowane w bardzo małej ilości kodu.

SPOJ. Serwis chyba najbardziej znany ze wszystkich tu przedstawionych 😉 Tu zadania również są podzielone, jednak jest ich znacznie więcej – są wymyślane przez użytkowników. Podział również jest zróżnicowany – zadania można wybierać bazując na ich trudności, oceny, typu i innych parametrów. Również paleta języków jest spora – każdy znajdzie tu coś dla siebie.

Zrzut ekranu (7)

 

Warto także wspomnieć dla tych, którzy z angielskim nie są za pan brat, że istnieje także polska wersja SPOJa – pl.spoj.com. Myślę jednak że takich osób jest mało – jak można nie znać angielskiego będąc programistą?

Kolejna z moich propozycji jest raczej …nietypowa. Serwis, który podałem, jest tylko przykładem miejsca, gdzie znajdziecie zadania typu codegolf. Tak naprawdę wystarczy wpisać codegolf w Google’a, wyświetli się mnóstwo (Zrzut ekranu (8)) wyników. Mimo wszystko, tutaj społeczność je rozwiązująca jest najliczniejsza, dzięki czemu to właśnie tutaj spotkacie się z najciekawszymi rozwiązaniami.

Zrzut ekranu (9)

 

Ale, ale – na czym ten codegolf polega? Ano na tym, że dostajesz proste zadanie, które masz za zadanie rozwiązać. Tyle? Nie, to by było za proste! Twoje rozwiązanie jest punktowane – ilość bajtów = ilość punktów, a ten kto ma najmniej punktów, wygrywa. W co niektórych zadaniach autor przewiduje także bonusy za wykonanie czegoś ekstra – są to kolejne punkty w dół. Co ciekawe, dzięki temu możliwe jest też uzyskanie ujemnej punktacji, jak tutaj. Pewnie zauważyłeś, że ten kod nie przypomina ci czegokolwiek co znasz. W przeważającej części codegolfy pisane są w tzw. językach ezoterycznych. Po więcej na ten temat zapraszam do cioci Wikipedii, ja powiem tylko, że jedne z najczęściej stosowanych to Pyth i Retrina.

Wreszcie, mój faworyt, CodeFights. Jest to genialne przełożenie programowania na sport. Jestem pod podziwem kreatywności twórców tego serwisu. Daje nam on możliwość walki na żywo z innym programistą lub botem. Dostajemy zadanie, które może od nas wymagać poprawienia błędu lub uzupełnienia kodu. Jednocześnie działa na nas presja czasu i oponent, który nie śpi i również rozwiązuje zadanie.

Zrzut ekranu (10)

 

Plusem jest na pewno to, że możemy pisać w ośmiu językach (cztery są dostępne we wszystkich zadaniach, pozostałe cztery nie są dostępne wszędzie). Poza tym, taka forma nauki bardzo dobrze motywuje. Bo kto z nas nie lubi rywalizacji, szczególnie, gdy jest ona związana z programowaniem?

Niezależnie od tego, jaki serwis wybierzecie – bądźcie z siebie dumni! Ruszyliście się z miejsca i rozwijacie się – to się docenia!

To jest koniec tego wpisu, jednak na końcu jeszcze jedno małe info – sam zamierzam uruchomić taką platformę, ale cicho sza! 😉

  • Brakuje mi tu CodeCademy. Może napiszesz o tym wpis?

    • Ok, przemyślę to, chociaż jest to serwis uczący programowania, nie pomagający w rozwijaniu już nabytych umiejętności.

    • Robson

      Na Spoju dostępnych jest chyba z 70 języków – nie w każdym zadaniu wszystkie dostępne, ale niedostępność wynika tylko z tego, że niektóre języki mogą wspierać jednolinijkowe rozwiązania problemów zaprojektowanych do samodzielnej implementacji.

  • j689909

    Na liście zdecydowanie brakuje https://www.hackerrank.com/domains. Największa zaleta to ilość obsługiwanych języków (niektóre zadania ponad 20 obsługują).

    • Tu i na wykopie daliście mi tyle propozycji, że sam teraz nie wiem z czego korzystać, dzięki!

  • Janusz

    Od siebie mogę polecić https://coderbyte.com/ – zadania z programowania podzielone na grupy trudności, możliwość wyboru jednego z kilku języków programowania, oceny za poprawność kodu i za czas wykonania. Bardzo przyjemny serwis.