Piąty, minimalnie spóźniony #main! Życzymy więc udanego tygodnia i zachęcamy do lektury.
Cykl #main to punkt początkowy Waszego tygodnia, prasówka, w której zbieramy ciekawe linki, dzielimy się informacjami, a także podsyłamy programistyczne zadanie. Mamy nadzieję, że w ten sposób umilimy Wam poniedziałkowy powrót do rzeczywistości ;) No to zaczynamy.
Odpowiedź na pytanie z ubiegłego tygodnia
Tydzień wcześniej pytaliśmy, kiedy należy używać podejścia iteracyjnego, a kiedy rekursywnego.
Podejście rekursywne jest nieco wygodniejsze w zapisie i czytelniejsze — od razu wynika z niego, że do obliczenia kolejnej wartości używamy wyniku tego samego obliczenia dla innych danych. Niemniej równie łatwo takie podejście skomplikować i nadużyć.
Zaletą podejścia iteracyjnego jest teoretycznie nieograniczony rozmiar argumentów, a więc i ‘odwołań’ do wcześniejszych wyników — w przypadku podejścia rekurencyjnego w pewnym momencie otrzymamy StackOverflowException. Problematyczny bywa fakt, że zapis algorytmu jest mniej czytelny, a czasem może wymagać znajomości pewnych reguł i równań matematycznych.
Co ważne — każdy algorytm rekursywny można zapisać w sposób iteracyjny.
Więcej o rekursji i zamianie na podejście iteracyjne przeczytasz niebawem w inaugurującym wpisie z cyklu ‘Teoria programowania’.
Learn Git Branching
Ta prosa, ale wciągająca gra zabierze Cie w podróż po najważniejszych koncepcjach i funkcjach systemu kontroli wersji Git. Obowiązkowa pozycja dla każdego programisty!
http://pcottle.github.io/learnGitBranching/
refactoring.com
W 2000 roku Martin Fawler wydał książkę pod tytułem Refactoring, w której opisuje uniwersalne techniki poprawiania i ulepszania swojego kodu. Zbiór tych technik jest dostępny także na stronie refactoring.com i pokazuje nie tylko zalecane usprawnienia, ale także wyjaśnienie, dlaczego jedno podejście jest lepsze od drugiego oraz kroki pozwalające dokonać poprawy.
Derek Banas
Coraz więcej kanałów na YouTube porusza temat programowania — i bardzo dobrze :) My ostatnio trafiliśmy na tutoriale Dereka Banasa, które serdecznie polecamy — znajdziesz tam nie dość duży przekrój, od technologii frontendowych, poprzez Javę aż po C++.
George Bool
George Bool był matematykiem urodzonym w Wielkiej Brytanii, któremu zawdzięczamy podwaliny działania współczesnych komputerów. W swoim dziele, “An Investigation of the Laws of Thought (1854), on Which are Founded the Mathematical Theories of Logic and Probabilities” nakreślił on podstawy rachunku logicznego, który na jego cześć nazywamy obecnie logiką Boolowską. Co ciekawe, intencją autora było potwierdzenie logiki w rozumieniu Arystotelesa, używając do tego matematyki i równań.
Ostatni miesiąc na naszym blogu
Po każdych czterech tygodniach znajdziecie tu zestawienie tekstów, jakie opublikowaliśmy. Może warto się z nimi zapoznać i nadrobić zaległości?
Lazy Sunday: Czego boją się programiści - czyli zestaw grafik przedstawiających koszmary wprost z naszej pracy. Zachęcamy do pobrania i podzielenia się z innymi programistami! Na facebooku znajdziecie też odpowiedni album ze wszystkimi grafikami.
Niezbędnik Juniora: hashCode i equals - dwie metody, których działanie powinien znać każdy junior. Tak samo jak wiedzieć, że w 99,5% wygenerowane equals() przez IDE będzie tym najlepszym do użycia.
O wyznaczaniu celów - wpis rozpoczynający serię, która ma pomóc Wam osiągnąć wyznaczone cele. Mamy nadzieję, że będzie wsparciem w Waszej nauce!
Niezbędnik Juniora: Konstruktory i klasa nadrzędna — coś, co często pojawia się na rozmowach.
Praktyczna Java — interfejsy, metody domyślne i klasy abstrakcyjne — Java 8 wprowadza metody domyślne. Jak do nich podejść i kiedy warto je stosować?
Lazy Sunday: Kocio — wpis dla fanów naszego futrzastego redaktora. Jest historia Tesli, jest też kilka zdjęć!
Niezbędnik Juniora: Scrum - wpis opisujący podstawy tego sposobu pracy. Polecamy, nie tylko programistom i osobą z IT, bo wiele innych procesów można również dostarczać w ten sposób.