Język C++ udostępnia stosowanie dyrektywy goto realizującej skok bezwarunkowy do wskazanego miejsca w kodzie. We wpisie dotyczącym paradygmatów programowania wskazałem, że według paradygmatu programowania strukturalnego jest to dyrektywa wysoce odradzana. Kod maszynowy C++ jest językiem kompilowanym do kodu maszynowego procesora. Zadaniem kompilatora jest tłumaczenie języka wysokiego poziomu do języka niskiego poziomu. W tym miejscu kompilator…
Helgrind nie przepada za Google Test. Za Boost Test również. I za Catch2 też. Właściwie to nie przepada za każdą biblioteką do testów automatycznych wykonującą wiele przypadków testowych w ramach pojedynczego wywołania programu z testami. Helgrind to narzędzie w ramach oprogramowania Valgrind służące do wykrywania problemów związanych z synchronizacją wątków. Helgrind potrafi między innymi wykrywać:…
Cechą charakterystyczną języka C++ jest wielodziedziczenie. Jest to mechanizm, który w pewnych okolicznościach może być użyteczny, jednak wiąże się z niebezpieczeństwem – z problemem Deadly Diamond of Death1. Propozycją rozwiązania problemu jest wirtualne dziedziczenie. Problem typu diamond Problem Deadly Diamond of Death został zaprezentowany w poniższym kodzie: Kod może być przedstawiony w postaci następującego diagramu:…
Wyrównanie pamięci w C++ służy optymalizacji czasu potrzebnego do zapisu komórek pamięci rejestrach procesora. W Wikipedii można przeczytać, że: Wyrównanie pamięci jest silnie związane z architekturą procesora oraz użytym kompilatorem. W dalszych rozważaniach przyjęto architekturę x86-64 oraz kompilator g++ w wersji 15.0. Wyrównanie pamięci Rozważmy następujące struktury danych: Powyższy kod zawiera 3 struktury danych: OptimalA,…
Temat DRY był poruszany między innymi we wpisie o czystym kodzie. Tym razem zostanie zaprezentowana technika X-Macro oraz w jaki sposób ogranicza zbędne powtórzenia w kodzie. W języku C występują makra – elementy języka podobne w działaniu do funkcji typu inline. W przeciwieństwie do funkcji, makra mogą być definiowane oraz usuwane. Podczas kompilacji w miejsce…
W poprzednim wpisie poruszaliśmy temat paradygmatów programowania. Dziś przedstawimy subiektywnie popularne paradygmaty programowania w C++. Paradygmaty Język C++ jest językiem umożliwiający bardzo swobodne projektowanie oraz programowanie. W zasadzie obowiązuje tylko jedna reguła, która jest zgodna z paradygmatem programowania imperatywnego: to co zostało zaprogramowane zostanie w takiej formie wykonane przez procesor. Pozostałe paradygmaty programowania są dobrowolne…
Paradygmaty programowania są integralną częścią języków programowania, którymi posługują się programiści. Wikipedia wyjaśnia, że paradygmat programowania to wysokopoziomowy sposób konceptualizacji oraz ustrukturyzowania programu komputerowego. Geeks for geeks przytacza, że jest to podejście do rozwiązania problemu. Paradygmaty mogą dotyczyć różnych aspektów programowania takich, jak sposób wykonania czy struktura programu. Najważniejsze dwa paradygmaty programowania to programowanie imperatywne…
Programowanie strukturalne to paradygmat wprowadzający dekompozycję kodu źródłowego na następujące elementy: struktury kontrolne, podprogramy oraz bloki kodu. W paradygmacie wyróżniono trzy struktury kontrolne: sekwencje kodu, instrukcje warunkowe oraz pętle. Konsekwencją tych konstrukcji jest zakaz używania instrukcji skoku typu goto oraz zasada pojedynczego wyjścia. Opracowanie paradygmatu było odpowiedzią na rosnący problem skomplikowania kodu związany z użyciem…
W poprzednim wpisie skupiliśmy się na popularnych standardach C++. We wcześniejszym artykule omawialiśmy dlaczego standaryzacja jest pożądana. Tym razem przedstawimy subiektywnie dobrane najpopularniejsze standardy języka Python. Standardy języka Python W przypadku tego języka kwestia standaryzacji jest ustandaryzowana w dużej mierze przez społeczność oraz instytucję BDFL. Dokumenty PEP Dokumenty Python Enhancement Proposal służą do prezentowania propozycji…
W poprzednim wpisie poruszaliśmy między innymi temat standaryzacji kodu. Tym razem przytoczymy subiektywnie dobrane najpopularniejsze standardy języka C++. Standardy języka C++ Istnieje wiele standardów oraz zbiorów reguł dotyczących języka C++. Niektóre z nich definiują tak podstawowe elementy jak formatowanie kodu oraz konwencja nazewnictwa. Inne standardy zawierają zalecenia dotyczące wybranych cech oraz konstrukcji języka. Przyjrzyjmy się…