Diskuze: jazyk C/C++ - nizko/vysokourovnovost jazyka
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Nie je tu spominany c a c++, ale len c.
Wiki o tom pise:
https://cs.m.wikipedia.org/…movací_jazyk
Vysokoúrovňovost se podle mě odvíjí od toho, jaké možnosti co se týče implementačních detailů (správa paměti, vkládání Assembleru, svázanost s architekturou) ti daný jazyk dovolí řešit (popřípadě tě k tomu donutí). Z tohoto pohledu je C nízkoúrovňový oproti jiným dnes mnohem více používaným jazykům. Jistě, proti Assembleru je vysokoúrovňový, ale toto hledisko je pro drtivou většinu lidí nezajímavé, neb v Assembleru nedělají.
I když se postavíš na hlavu, tak kód v C bude vypadat pořád "ošklivěji" (popř. bude delší) než v jazyku podporujícím např. konstrukty OOP. U C++ sice tyto konstrukty máš, na druhou stranu ti dovoluje věci, které v jazycích vyšší úrovně tak nějak nemáš (myslím hlavně šablony) – pořád můžeš rozhodovat o spoustě implementačních detailů (a obvykle se tomu úplně nevyhneš).
Já si troufám tvrdit, že C je nízkoúrovňový. Ano, dříve (v dobách ASM, Fortratu atd) byl považován za jazyk vysokoůrovňový, ale z dnešního pohledu je nízkoúrovňový. Není už sice závislý na platformně (i když, stejný program zpravidla nespustíš pod Win a Linuxem), ale stále ti dovoluje šahat přímo na konkrétní paměti, což dovoluje registraci syscallů a další věci. Co se C++ týče, přeci jen je blízce spjatý z C, všechno z C funguje v C++ a každý program v C++ by měl jít (po hoodně velké modifikaci) překlopit do C. Někde jsem viděl krásnou větu, že C++ je "low-level programming language with features of hight-level languages", což se mi líbí a asi bych to neřekl jinak.
popravde rovnaky program spustis pod Linuxom, aj Windowsom, ale prelozeny kod
uz nie je platformovo nezavisly a myslim, ze pomocou direktiv linkera sa vyberie
ta spravna kniznica pre danu aplikaciu,
cize pre kazdu jednu platformu ti uplne staci iba jeden, jediny kod, ci to je
Linuxoch, Windows, alebo system zalozeny na ARM, x86, m68k,...
po precitani komentarov, tak jazyk C/C++ by sa nedal nazvat cistym nizkourovnovym jazykom, tym je strojovy kod, resp.assembler, ale jazykom s urovnou medzi strojovym kodom a jazykmi ako napr. PHP, Perl, Java, kde uz nizkourovnovy kod odpada
Assembler není strojový kód.
assember je jazyk symbolickych instrukcii a ku kazdej instrukcii v assembleri
je priradeny kod instrukcie
cize je to uz uroven strojoveho kodu
int main(int argc, char** argv) {
return (EXIT_SUCCESS);
}int a;
a = 8;
printf("%d", a);
ahoj pořád nevim co tam mám špatně delám to přesně podle návodu
a jak to souvisí s tématem?
int main(int argc, char** argv)
{
int a = 8;
printf("%d", a);
return (EXIT_SUCCESS);
}
Treba si uvedomiť, že main() je hlavná (vykonávacia) funkcia a všetko
čo sa má vykonať je napísané v jej tele.
Buď tam dáš kompletný kód, alebo tam voláš funkcie napísané mimo
main().
Príklad funkcie mimo main()
void vypis(int cislo) {
printf("%d", cislo);
}
int main(int argc, char** argv) {
int a = 8;
vypis(a); // volanie funkcie
return (EXIT_SUCCESS);
}
Zobrazeno 10 zpráv z 10.