Czasami mam wrażenie, że podczas rozwoju C++ coś poszło nie tak i język z wersji na wersję stał się nieczytelnym potworkiem, któremu coraz bliżej do Perla z czytelnością. Pomijając wskaźniki i zarządzanie pamięcią, spójrzmy na taki przykład: lista (wskaźników) funkcji, które mają być wywołane po podaniu określonych parametrów programu, z dodatkową listą pomocniczych parametrów i tekstem pomocy. Docelowo ma pozwolić na takie wywołanie aplikacji w następujący sposób:
./aplikacja --moje-id 1234 --email ja@domena.pl zamow pizze
Wspomniana lista ma trzymać polecenia typu “zamów pizze”, wymagane dla nich opcje (z –) oraz funkcje/metodę, która to obsłuży, oczywiście ze swoimi parametrami. Plus help text. W C++:
std::vector
...
tuple
command_mappings.push_back(p);
Wiem, można to przerobić na klasę/strukturę i będzie miejscami czytelniej. Wiem też, że można użyć gotowych struktur do obsłużenia tego, ale wyszło jak wyszło.
W Pythonie:
command_mappings = []
...
command_mappings.append(['zamow', 'pizze'], handler, ["moje-id", "email"], "Zamawia pizze na niby")
Może to trochę jak porówninie Elektrycznego Malucha z Fordem Escortem. Niby lata produkcji te same i oba mają strefę zgniotu kończącą się na silniku, ale jednak technologia i przeznaczenie inne. W pythonie, jak długo programuje, takie kwiatki nie wychodziły w miarę rozwijania kodu, nawet po latach. Kod zawsze wyglądał dość czytelnie i działał wolno. W C++ na odwrót 🙂 A może po prostu PEBKAC.
Wesołych Świąt!