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ą ...
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.
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.
W maju francuski serwis programistyczny developpez.com opublikował tłumaczenia 4
artykułów mojego autorstwa.
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ć.
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ć.
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.
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.
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?