NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
mkub
Tvůrce
Avatar
mkub:3.12.2016 9:41

zdravim, uz som tu davnejsie videl, ze niekto tu pisal, ze jazyk C/C++ je nizkourovnovy, ale je to uplne inak...
nizkourovnovy jazyk je totiz spojeny s urcitou platformou/ar­chitekturou (napr. assembler, strojovy kod), kdezto C/C++ nie je vobec spojeny s jednou architekturou a pri splneni urcitych podmienok aexistencii knihovien je dany zdrojovy kod v C/C++ pouzitelne tak na najnovsich 64 bit x86 architekture, tak aj nasparc architekture, Arm architekture, na 32/16 bit. x86, m68k, ako aj na 8bit pocitacoch
a jacyk C/C++z tohto pohladu nie je nizkourovnovy ani vtedy, ked bude pristupovat priamo objektom, aj ked umoznuje vkladat casti asemblera do zdrojoveho kodu
samotny jazyk C/C++ je definovany ako vysokourovnovy a vyhoda vysokourovnoveho jazyka je nezavislost od platformy a architektury (aj toto je dovod, preco sa system ako Unix po prepisani do jazyka C sa lahko preportoval aj na ine platformy)

a ak sa mylim, opravte ma a vysvetlite mi prosim, preco jazyk C/C++ by mal byt medzi nizkourovnovymi
a ziadny flame

 
Odpovědět
3.12.2016 9:41
Avatar
Odpovídá na mkub
Libor Šimo (libcosenior):3.12.2016 9:53

Nie je tu spominany c a c++, ale len c.
Wiki o tom pise:
https://cs.m.wikipedia.org/…movací_jazyk

Nahoru Odpovědět
3.12.2016 9:53
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na mkub
Martin Dráb:3.12.2016 11:46

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š).

Nahoru Odpovědět
3.12.2016 11:46
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na mkub
Patrik Valkovič:3.12.2016 11:54

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.

Nahoru Odpovědět
3.12.2016 11:54
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Patrik Valkovič
mkub:3.12.2016 23:01

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

 
Nahoru Odpovědět
3.12.2016 23:01
Avatar
Šimon Zimák:4.12.2016 14:59

Assembler není strojový kód.

 
Nahoru Odpovědět
4.12.2016 14:59
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Šimon Zimák
mkub:4.12.2016 16:27

assember je jazyk symbolickych instrukcii a ku kazdej instrukcii v assembleri je priradeny kod instrukcie
cize je to uz uroven strojoveho kodu

 
Nahoru Odpovědět
4.12.2016 16:27
Avatar
jan Krejčí
Člen
Avatar
jan Krejčí:5.2.2017 22:32

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

 
Nahoru Odpovědět
5.2.2017 22:32
Avatar
HONZ4
Člen
Avatar
Odpovídá na jan Krejčí
HONZ4:5.2.2017 23:06

a jak to souvisí s tématem?

int main(int argc, char** argv)
{
 int a = 8;
 printf("%d", a);

 return (EXIT_SUCCESS);
}
 
Nahoru Odpovědět
5.2.2017 23:06
Avatar
Odpovídá na jan Krejčí
Libor Šimo (libcosenior):6.2.2017 8:58

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);
}
Nahoru Odpovědět
6.2.2017 8:58
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.