„Zrozumieć programowanie” - recenzja

Kilka tygodni temu przeczytałem pierwszą książkę Gynvaela Coldwinda pt. „Zrozumieć programowanie”, Jest to lektura dla osób, które już weszły w świat informatyki, poznały jakiś język programowania i rozumieją podstawowe zasady działania komputerów. Ksiażka jest podzielona na 5 części składających się w sumie z 15 rozdziałów. Każda z części opisuje inną ...

Odnowiona strona

Przez ostatnie miesiące nic się tutaj działo. Rok 2015 był chyba najsłabszy pod względem liczby tekstów, które powstały, ale za to najlepszy, jeżeli chodzi o ich jakość. Cztery z nich zostały wyłonione przez serwis Developpez.com i przetłumaczone na język francuski. Moje artykuły były linkowane w serwisie twitter.com m.in. przez biicode. Raz mój artykuł pojawił się na isocpp.org.

Debugowanie z Paulem Butcherem

Usuwanie błędów z pewnością jest najmniej przyjemną czynnością w całym procesie tworzenia oprogramowania. Nie ulega jednak wątpliwości, że doświadczenie zdobyte przy niwelowaniu błędów, wszystko jedno czy banalnych czy skomplikowanych jest o wiele cenniejsze od tego, czego uczymy się z większości książek dotyczących programowania.

Moje artykuły po francusku

W maju francuski serwis programistyczny developpez.com opublikował tłumaczenia 4 artykułów mojego autorstwa.

GCC: Optymalizacja rekurencji ogonowej

Rekurencję nazywamy ogonową kiedy wywołanie rekurencyjne jest ostatnią rzeczą, którą zajmuje się funkcja. Z tego właśnie powodu da się ją bardzo łatwo optymalizować. Również najpopularniejszy kompilator języka C++, czyli g++ dostarcza nam w opcjach optymalizacyjnych przekształcanie rekurencji ogonowej na mniej zasobożerną postać.

Zwalczanie wycieków i błędów pamięci (C++11)

Nowoczesne narzędzia dostarczone w bibliotece standardowej języka C++11 ułatwiają i czynią bardziej efektywną walkę z wyciekami i błędami pamięci. Z pozoru niegroźne problemy mogą całkowicie położyć naszą aplikację. Nauczmy się jak je rozpoznawać i unikać.

C++11: Funkcje usunięte (= delete)

Dzisiaj postanowiłem napisać krótko o usuwaniu z klas funkcji, które są domyślnie definiowane (i deklarowane) przez kompilator. Powodem tego jest fakt iż w czasie prac nad biblioteką Tamandua, brak usunięcia domyślnie definiowanego konstruktora kopiującego spowodował bardzo trudny do znalezienia błąd. Ponieważ jego zlokalizowanie kosztowało mnie około godziny intensywnej pracy z GNU debuggerem, postanowiłem, że od dzisiaj będę o takie niuanse dbał zaraz po stworzeniu nowej klasy.

C++11: Referencje do r-wartości i semantyka przenoszenia danych

Standard C++11 wprowadził dla nas dwa nowe udogodnienia, które mogą uczynić nasz kod jeszcze szybszym. Są to referencje do r-wartości (r-value references) i semantyka przenoszenia danych (move semantics). Te dwa rozwiązania, dobrze wykorzystane, umożliwiają tworzenie szybszego i bardziej efektywnego kodu. W tym artykule zamierzam omówić zarówno referencje do r-wartości jaki semantykę przenoszenia. Są one ściśle powiązane.

C++11: Wskaźniki unikalne i współdzielone (unique_ptr, shared_ptr)

Nowe standardy języka C++ dodają nie tylko całkiem nowe możliwości, ale także udostępniają nam udogodnienia, dzięki którym możemy wyeliminować na zawsze niektóre problemy, które były poważnym utrapieniem dla programistów. Jednym z takich problemów są wycieki pamięci przy jej dynamicznym alokowaniu. Wielu z nas często zapomina o zwalnianiu (przy użyciu operatorów delete i delete[]) pamięci zarezerwowanej przy pomocy new oraz new[] . Nowe udogodnienia w postaci wskaźnikówunikalnych iwspółdzielonych powodują, że z operatora delete będziemy korzystać coraz rzadziej. Czym właściwie są nowe rodzaje wskaźników?