Title: Státnice / Společná informatika / Programovací jazyky (verze C++)

Q: Koncepty pro abstrakci, zapouzdření a polymorfismus: související konstrukty programovacích jazyků, třídy, rozhraní, metody, datové položky, dědičnost, viditelnost
A: trivialita

Q: Koncepty pro abstrakci, zapouzdření a polymorfismus: (dynamický) polymorfismus, statické a dynamické typování
A: nevím, no, asi taky trivialita

Q: Koncepty pro abstrakci, zapouzdření a polymorfismus: jednoduchá dědičnost
A: tak jestli je jednoduchá, tak je jednoduchá, ne?

Q: Koncepty pro abstrakci, zapouzdření a polymorfismus: virtuální a nevirtuální metody v C++
A: Whenever a class defines a virtual function (or method), most compilers add a hidden member variable to the class that points to an array of pointers to (virtual) functions called the virtual method table. These pointers are used at runtime to invoke the appropriate function implementations, because at compile time it may not yet be known if the base function is to be called or a derived one implemented by a class that inherits from the base class.

Koncepty pro abstrakci, zapouzdření a polymorfismus: vícenásobná dědičnost a její problémy: vícenásobná a virtuální dědičnost v C++

Q: Koncepty pro abstrakci, zapouzdření a polymorfismus: implementace rozhraní (interface)
A: ez

Q: Koncepty pro abstrakci, zapouzdření a polymorfismus: vhodné použití uvedených konceptů
A: jistě, pane programátore

Q: Primitivní a objektové typy a jejich reprezentace: číselné a výčtové typy
A: různý inty, floaty a enumy, jak fungujou floaty si zjistěte po vlastní ose

Q: Primitivní a objektové typy a jejich reprezentace: ukazatele a reference v C++
A: to je potřeba si zažít sám

Q: Generické typy a funkcionální prvky (procedurálních programovacích jazyků): šablony (templates) a statický polymorfismus v C++
A: nejlepší featura

Q: Generické typy a funkcionální prvky (procedurálních programovacích jazyků): typy reprezentující funkce v C++
A: to jsou functory, lambdy a std::function
std::function je runtime a je tudíž pomalejší

Q: Generické typy a funkcionální prvky (procedurálních programovacích jazyků): lambda funkce a funkcionální rozhraní
A: jasná páka

Q: Manipulace se zdroji a mechanizmy pro ošetření chyb: správa životního cyklu zdrojů v případě výskytu chyb
A: máte na mysli chyby, anebo výjimky??

Q: Manipulace se zdroji a mechanizmy pro ošetření chyb: RAII v C++
A: https://cs.wikipedia.org/wiki/RAII
nejlepší nápad

Q: Manipulace se zdroji a mechanizmy pro ošetření chyb: konstrukce pro obsluhu a propagaci výjimek
A: aha, tak tady máme ty výjimky

Q: Životní cyklus objektů a správa paměti: alokace (alokace statická, na zásobníku, na haldě)
A: https://stackoverflow.com/a/15793111/4898487

Q: Životní cyklus objektů a správa paměti: inicializace (konstruktory, volání zděděných konstruktorů), destrukce (destruktory, finalizátory)
A: to je asi jasný

Q: Životní cyklus objektů a správa paměti: explicitní uvolňování objektů, reference counting, garbage collector
A: zjistit co je free, rc a gc

Q: Vlákna a podpora synchronizace: reprezentace vláken v programovacích jazycích
A: Byl jsem líný, tak jsem to předhodil ChatuGPT

Q: Vlákna a podpora synchronizace: specifikace funkce vykonávané vláknem a základní operace na vlákny
A: ChatGPT
(Pozn: pro většinu lidí asi stačí jenom pár prvních operací, zbytek jsou detaily)
Navíc to generuje ChatGPT, tak bych tomu 100% nevěřil, no

Q: Vlákna a podpora synchronizace: časově závislé chyby a mechanizmy pro synchronizaci vláken
A: Datový závod mě pobavil, tak se to samozřejmě nejmenuje

Q: - Implementace základních prvků objektových jazyků.
    - základní objektové koncepty v konkrétním jazyce
    - implementace a interní reprezentace primitivních typů
    - implementace a interní reprezentace složených typů a objektů
    - implementace dynamického polymorfismu (tabulka virtuálních metod)
A: triviality, jen ta tabulka virtuálních metod možná ne, ale tu už jsem zmínil u dědičnosti
jako tady můžou bejt zákeřný věci jako paddingy a podobný věci, na druhou stranu to se taky liší jazyk od jazyka, tak to s tím v tý společný části snad nebudou přehánět

Q: Nativní a interpretovaný běh, řízení překladu a sestavení programu: reprezentace programu, bytecode, interpret jazyka
A: jasná páka

Q: Nativní a interpretovaný běh, řízení překladu a sestavení programu: just-in-time (JIT) a ahead-of-time (AOT) překlad
A: https://en.wikipedia.org/wiki/Just-in-time_compilation
https://en.wikipedia.org/wiki/Ahead-of-time_compilation

Q: Nativní a interpretovaný běh, řízení překladu a sestavení programu: proces sestavení programu, oddělený překlad, linkování
A: každej kdo dělal v C++ víceméně ví

Q: Nativní a interpretovaný běh, řízení překladu a sestavení programu: běhové prostředí procesu a vazba na operační systém
A: ChatGPT řekl:
Běhové prostředí procesu (runtime environment) představuje souhrn prostředků, které operační systém poskytuje spuštěnému programu – tedy procesu – pro jeho správnou funkci. Zahrnuje například paměťový prostor (včetně zásobníku, haldy a segmentu pro kód a data), soubor deskriptorů otevřených souborů, informace o plánování (např. prioritu), identifikátory (PID, UID, atd.) a kontext procesoru (registry, program counter). Operační systém je zodpovědný za vytvoření a správu tohoto prostředí – při spuštění programu vytvoří nový proces, alokuje mu potřebné prostředky a zajistí jeho začlenění do plánovače. Procesy mohou také komunikovat s operačním systémem prostřednictvím systémových volání (např. pro přístup k souborům, komunikaci nebo synchronizaci). Běhové prostředí tedy zajišťuje izolaci jednotlivých procesů, bezpečnost a efektivní sdílení zdrojů, přičemž vazba na operační systém je klíčová pro správu životního cyklu procesu a interakci s okolím.
Lukáš řekl: myslím, že jasná páka