Diskuze: Čo sa dá urobiť v jazyku C ??
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 12 zpráv z 12.
//= 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.
Když jsi "začal" programovat, nebylo by lepší začít rovnou dělat na .NET platformě, tzn. VB.NET nebo C#.NET?
V obou jde naprogramovat cokoliv.
Ale pokud chceš programovat desktopové aplikace, tak by byl vhodnější C#,
základ syntaxe je téměř stejný, takže by sis rychle zvykl a nemusíš
řešit paměť, o kterou se za tebe postará GC.
Mezi C a C++ je hlavní rozdíl v tom, že C++ podporuje OOP a další
vychytávky.
Jinak v C je možnost naprogramovat prakticky cokoli co jde v C++.
Pokud ale začínáš tak začni v Javě nebo v C#, protože C/C++ jsou celkem
složité a můžeš jednoduše udělat chybu, které si ani nevšimneš.
C je nizkoúrovňový jazyk vhodný na špecifické úlohy (je v ňom jadro linuxu napr.) nie je objektovo orientovaný a nemá autmatickú správu pamäte. Z jeho syntaxe vychádza syntax veľa ďalších jazykov (Java, C#, Php...). V C sa dajú písať aj desktopové GUI applikácie ale nie je to zrovna ideálne. C++ je akési rozšírenie jazyka C. C++ plne podporuje objektovo orientované programovanie, taktiež nemá automatickú správu pamäte, je používaný na aplikácie, kde je potrebný vysoký výkon (prevažne hry). Je na tebe akým jazykom začneš, začni tým v čom ťa baví písať programy, keď sa raz naučíš princípy a myslieť ako programátor, tak prechod na iný jazyk nebude až taký problém. Ja osobne som začínal práve s C++ a neľutujem, pretože som sa naučil veľmi veľa užitočných vecí a pochopil som do hĺbky ako sa pracuje s pamäťou a pod. ver mi neskôr to oceníš aj keď väčšina tu bude písať, že to nie je pre začiatočníka vhodné, že gc sa o to postará a pritom nemajú najmenšiu šajnu ako GC a automatická správa pamäte pracuje a výsledkom sú aplikácie, ktoré sú pomalé a zalagované. Potom to schytá samotný jazyk a začnú sa šíriť fámy typu "Java je pomalá".
Zase na druhou stranu někdy je lepší mít pomalý zalagovaný program než
program, který díky memory leakům sežere tunu paměti nebo který náhodně
padá na Access Violation
Pro někoho je vhodnější naučit se základy C# / Javy a pak se teprve
učit, jak to funguje pod kapotou (memory management/winapi/IL/asm) a pro
někoho zase začít C++ a k tomu se učit spoustu dalších věcí najednou,
tohle záleží na dotyčném a dala by se vést dlouhá diskuze, zda je
vhodnější to či ono .
Práve preto si myslím, že každý programátor by mal vedieť čo sa deje "pod kapotou". Samozrejme, pri nejakých mini konzolových programoch to je úplne jedno, ale akonáhle sa tým bude chcieť živiť a pracovať ako programátor, tak to bude potrebovať.
Ať se ti to líbí nebo ne, na junior pozicích se bez toho úplně v klidu obejdeš, pokud to nebude nějaký projekt, kde bude výkon tím nejdůležitějším kritériem (třeba nějaký server obsluhující tisíce/desetitisíce klientů zároveň).
Na běžných (občas i větších) projektech se tyhle věci řeší až když je něco viditelně pomalé nebo to žere viditelně hodně paměti.
I někteří pokročilejší programátoři (bavím se teď celou dobu jen o programátorech, co se programováním živí) jen tuší, jak to uvnitř funguje a celkem jim to stačí, i když souhlasím, že je lepší znát i to pozadí - pak teprve člověk opravdu ví, co se v jeho programu děje.
Je to vec každého programátora, ale nemalo by sa zabúdať na jednu vec, "we are authors!" a musíme rátať s tým, že náš kód bude čítať, prípadne editovať nejaký iný programátor. To čo niekto naprogramuje je jeho vizitka. Ja osobne sa snažím vždy robiť všetko dôkladne a chcem aby môj kód bol nielen funkčný, ale aj prehľadný a čitateľný, je to časovo náročnejšie ale ten čas za ten "refractoring" sa ti vráti. Je to každého osobná vec, ale venovať pozornosť detailom a robiť množstvo malých vecí, ktoré druhí nerobia sa vypláca v živote aj v porgramovaní.
S tím souhlasím, ale teď tu mluvíš o něčem jiném, znám programátory, kteří vědí, jak to funguje pod kapotou, ale píšou celkem hrozný kód a stejně tak znám programátory, kteří netuší, jak to funguje pod kapotou a jejich kód je rychlý, čte se dobře a je lehce refaktorovatelný.
Čitelnost a přehlednost kódu je něco úplně jiného, než když víš,
jak to funguje uvnitř - taky nemusíš vědět, jak fungují tranzistory, aby
jsi mohl být programátor
Ve zkratce- Céčko je rychlejší (asi i než cpp), dá se s nim sáhnout
až na systém (to např. přes javu jde blbě), C++ je "nadstavba" Céčka (v
podstatě se v něm dá použít i C zápis), oproti C je objektový
Jerry to popisal celkom dobre ale C nema toho viac ako OOP, neobsahuje
genericke porogramovanie (#generic nestaci ), neobsahuje vynimky, RAII...
Neobsahuje viac menej ziadnu vysokourovnovu abstrakciu. Casto sa pouziva ako
portable assambler. C ma velmi jednoduche ABI a preto velka vecsina
vysokourovnovych jazykov umoznuje volat C funkcie. C nema nic ako overloading
funkcii, templaty, namespace, metody... takze ak mame funkciu z menom 'fnc', tak
vo vyslednej binarke sa bude volat 'fnc'. Vo vysokourovnovych jazykoch je nazov
funkcie skomoleny name manglingom. Jazyk C je velmi jednoduchy oproti C++, C#,
Java, neznamena to ale ze sa v nom pise jednodoucho
Doporucujem naucit sa C aj ked v nom neplanujes programovat vecsie veci.
Zobrazeno 12 zpráv z 12.