Portál AbcLinuxu, 30. dubna 2025 14:00
Brouzdal jsem na disku a narazil na jeden svůj starý projekt. Něco přes 10k řádek v C++ a něco málo v Object Pascalu.
Jako adolescent jsem C++ doslova miloval. Tehdy jsem si to užíval, mohl jsem dělat OOP kouzla, přetěžovat operátory a třeba i použít virtuální vícenásobnou dědičnost. A přitom dělat ďábelské nízkoúrovňové kousky. Třeba jsem si udělal lehkotonážní skoroimplementaci COM, abych se vyhnul práci s windows registry. Prostě se nějak posílal ukazatel na tabulku virtuálních metod, detaily jsem dávno zapomněl. Protože klientská aplikace nemohla uvolnit objekt, který získala z DLL knihovny (každý modul má vlastní heap), musela se zavolat metoda Delete
, kterou objekt spáchal elegantní sebevraždu.
void __stdcall xcfgM::Delete() { delete this; }
Používal jsem taky jednu krásnou fintu, kterou bych se ale chlubit neměl. Někde jsem potřeboval, aby funkce vracela celé číslo s nějakým chybovým kódem. Nechtělo se mi deklarovat k těmto chybovým kódům konstanty (např. const int ERROR_OPENING = 5;
), tak jsem používal čtyřznakové identifikátory (uzavřené do apostrofů), které šly přiřadit do 32bitového integeru.
int result = 'cnof'; // cannot open file
Problém C++ byl, že všelijakým triků se člověk nevyhnul i kdyby chtěl. Třeba přinutit k bezešvé spolupráci moduly překládané různými překladači vyžadovalo občas invenci.
/* Some compilers tried to set enum types size to 1 byte, this constant _ is defined to make them set this size to 4 bytes. */ const int _32_BIT_ALIGMENT = 2147483647; // = 2**31-1 //////////////////////////////////////////////////////////////////////// enum TInitState { istInited = 0, istNotInited = 1, istDefault = 2, istNone = 3, ist_32_bit_aligment = _32_BIT_ALIGMENT };
Potom jsem ale z C++ vyrostl. Oblíbil jsem si bezpečné, silně typované jazyky jako Ada, Java a C#. To jsou nástroje pro zralé muže.
Samozřejmě vím, že na spoustu projektů je C++ z různých důvodů nejlepší volba. Tak ať mě tu někdo nepranýřuje, že firewall se v Javě píše blbě, já to vím. (Ale v Adě už by to šlo
A z čeho jste vyrostli vy?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.