Egy kis kisérletezős projekt (nem céges, hanem ilyen "szórakozós"
keretében két és fél év után ismét nekivágtam C++-al programozni Windows-t, méghozzá WIN32 APIn keresztül (semmi MFC) mivel ki akartam próbálni pár dolgot.
Korábban abban a tipikus programozó betegségben szenvedtem elég gyakran, hogy szerettem újra feltalálni mindent, saját magamnak megírni mindenféle cuccot. Ez aztán szerencsére lassan változni kezdett, mert a sok programozás bizony rámutat arra, hogy mindent nem lehet mindig megírni. Ahelyett hogy ezeket az alap építőköveket (pl.
XML feldolgozás, net/HTTP kapcsolatok, stb) saját magam akarnám előállítani, érdemes talán meglévő megoldásokat, könyvtárakat vagy szolgáltatásokat használni, és igazából az alkalmazás lényegére koncentrálni (kivéve persze ha maga az alkalmazás ilyen alap építőkő).
Ennek a kis tanulási folyamatomnak persze nagy lökést adott a
.NET Frameworkkel való ismerkedés, és az általa nyújtott szolgáltatások. Mert azért régi időkben mondjuk egy XML file letöltése HTTPről majd feldolgozása elég hosszas volt, ha én akartam megírni. Ez csupán néhány sor - és max 5 perc - hogyha C#-ban írom meg.
Na de visszatérve a kisérletezgetésre WIN32 APIval, ezúttal csomó olyan technológiát "fedeztem fel" magamnak, amik már régóta ott vannak, de igazából sosem vettem a fáradságot, hogy jobban felderítsem magamnak - bár tudtam, hogy léteznek. Ilyen például a Windowsba beépített kriptológiai szolgáltatások APIja (CryptAPI), mellyel például RSA kódolást lehet megvalósítani egyszeráen. Vagy a többek között FTP és HTTP letöltéseket lehetővé tevő WinInet, XML parsoláshoz MSXML. És mindezek például (bizonyos megszorítások mellett) akár már Windows 98-on is használhatók lennének. Nem beszélve arról, hogy mennyivel robosztusabb megvalósítások, mintha én nekiállnék írni sajátot (mert ilyen teljes megvalósítást biztosan nem csinálnék - vagy csináltam volna - egy nagyobb alkalmazás részeként).
(Azért zárójelben megjegyzem nem csak a Windows részeként lévő APIkat lehet és érdemes használni. Bár ún. 3rd party dolgoknál mindig ott van az a kérdés, lehet-e ingyen használni, a kereskedelmi termékbe beépíteni, stb
Ugyanakkor amit már korábban is "éreztem", az még nagyobb hangsúlyt kapott. Vagyishogy mennyivel macerásabb C++-ban készíteni valamilyen alkalmazást, mint C#-ban, ahol a rendelkezésre álló eszközök választéka sokkal szélesebb, és nagyságrendekkel könnyebb őket alkalmazni is.