Diskuze: Využití jazyka C
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 9 zpráv z 59.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Například šablony pro Smarty jsou imperativní a kvůli tomu musí být rozděleny do více částí (hlavička, střed, patička,...). Když tu šablonu uděláš deklarativně nebo objektově, tak ji v klidu strčíš do jednoho souboru a vypadá mnohem přehledněji a udržovatelněji.
Uh, placen podle počtu řádků? S tím jsem se ještě nepotkal 
Hmm, to bych splakal nad výdělkem nebo bych si musel účtovat aspoň 100
Kč/řádek 
Kupodivu mi základní knihovna objektů připadá OK. Možná proto, že ty třídy používají rozhraní, které je pro mne akceptovatelné, mohu si je rozšířit a nemusím se přitom dívat do zdrojového kódu, jak to ten autor myslel.
Osobně hlavní rozdíl v OOP přístupu mezi C++ a moderními jazyky vidím v tom, že C++ bere objekty jako klasické proměnné a umožňuje programátorovy s nimi tak i zacházet. Zatímco Java nebo C# s objekty zachází jinak než s primitivními typy (systém referencí). Co se týče vracení objektů, tak pokud v daném případě nijak zásadně nezáleží na rychlosti, pak není problém vrátit objekt pomocí dočasné proměnné, která se zkopíruje. Jinak můžeš využít třeba smart pointery.
Ty dočasné proměnné jsou při návratu problém, protože ji musíš ve volající metodě mít dostupnou, což je zátěž navíc. Pokud neznáš její typ, je to problém. Pokud návratovou hodnotu vložíš přímo jako parametr do další metody, tak to rozhraní musí znát až ta volaná metoda.
Messenger se prostě bez návratu returnem dělá blbě.
Neprogramátoři (např. zaměstnavatelé) mají počet řádků často jaké jediné měřítko které jsou schopni posoudit. V dobách SAPI se měřila pravítkem výška stohu listingů programu.
C++ může pracovat s objekty úplně stejně jako jiné jazyky (jako např. Java). U sdílených objektů (obrázky, texty) se používá také počítadlo referencí na objekt - viz např. CString z ATL. O snížení počítadla a zrušení objektu se stará destruktor lokálního objektu. Lze tak objekt vytvořit v nějaké funkci, vrátit jej v návratové hodnotě a předat jiným funkcím či objektům, aniž je třeba se starat o jeho životnost. Dobrým příkladem jsou COM objekty.
Ve skutečnosti mezi objektovým a strukturovaným programováním není až tak propastný rozdíl. Objekty jsou jen běžné struktury, jen se zjednodušil zápis a funkcím (metodám) se předává skrytě ukazatel na objekty (=struktury). Spíš že OOP nutí programátora k přehlednějšímu přístupu k programu a zjednodušuje tak práci. Dá se programovat čistě i v assembleru a naopak prasácky ve vysokém jazyce.
Objektově programovat lze i v základním C, jen musí programátor zajišťovat to, co jinak dělá OOP skrytě - předávat funkcím ukazatel na struktury (objekty), volat konstruktory a destruktory. Lze takto používat i referenční čítače počtu vlastníků objektů nebo virtuální funkce. V názvech metod pro přehlednost namísto teček uvádět např. podtržítka: Picture_Flip. Při dědění struktury se musí bázová struktura explicitně vložit (z nějakého důvodu nebylo v C pamatováno na odvozování struktur). Takto lze programovat objektově např. u jednočipů.
Na druhou stranu lze používat OOP (např. C++) i u nízkoúrovňovějších záležitostí jako např. programování kernelu systémů, není nutné používat C. Jen je nutné před prvním použitím objektů inicializovat správce paměti a explicitně zavolat konstruktor globálních objektů.
Zobrazeno 9 zpráv z 59.
