Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: C vs C++

Aktivity
Avatar
werty
Člen
Avatar
werty:15.7.2013 21:42

Mám se začít učit C++, nebo C a pak přejít na C++ ?

 
Odpovědět
15.7.2013 21:42
Avatar
vitamin
Člen
Avatar
vitamin:15.7.2013 21:44

C je podmnozina C++ (je tam zopar rozdielov ako silnejsia typova kontrola v c++, presnejsie deklaracie v c++...).
Ak sa naucis c++, budes v podstate ovladat aj C (az na kniznice)

 
Nahoru Odpovědět
15.7.2013 21:44
Avatar
Nahoru Odpovědět
15.7.2013 21:47
Neaktivní uživatelský účet
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:15.7.2013 21:50

také bych sáhl po Javě :o)

Nahoru Odpovědět
15.7.2013 21:50
Čím víc vím, tím víc věcí nevím.
Avatar
werty
Člen
Avatar
werty:15.7.2013 21:54

Javu už se učím. Teď bych rád to C nebo C++.

 
Nahoru Odpovědět
15.7.2013 21:54
Avatar
Neaktivní uživatel:15.7.2013 22:13

Já začal s C#. :)

Nahoru Odpovědět
15.7.2013 22:13
Neaktivní uživatelský účet
Avatar
Homo
Člen
Avatar
Odpovídá na werty
Homo:15.7.2013 22:25

Pokud je to tvuj prvni jazyk tak se ho nauc poradne. Az budes umet minimalne jeden fakt dobre tak se zacni ucit dalsi. V teto fazi se jich muzes ucit vic zaroven, ale ze zacatku se ucit 2 zaraz je celkem sebevrazda, navic kdyz v C++ nektere veci znamenaji neco jineho nez v Jave.
Na cisty C bych se vyprdnul pokud se teda nechces venovat psanim driveru a jinych podobnych veci.
S javou si dej na cas, C++ je o hodne vic slozitejsi a obsahlejsi. Vim o cem mluvim, delal jsem Javu 2 roky nez jsem zacal s C++.

Nahoru Odpovědět
15.7.2013 22:25
1010011 1000101 1011000
Avatar
werty
Člen
Avatar
Odpovídá na Homo
werty:15.7.2013 22:33

Děkuju za radu :)

 
Nahoru Odpovědět
15.7.2013 22:33
Avatar
Kit
Tvůrce
Avatar
Odpovídá na werty
Kit:15.7.2013 22:38

Zůstaň u té Javy, pokud nejsi z nějakého důvodu nucen měnit jazyk. Z jakého důvodu se vlastně chceš učit C a C++? Nebráním ti v tom, jen mě to zajímá. Po zkušenostech se jim raději vyhýbám. Pokud potřebuji výpočetní výkon, raději sáhnu po Fortranu. V něm alespoň nenadělám tolik kopanců jako v C.

Nahoru Odpovědět
15.7.2013 22:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Homo
Lukáš Hruda:15.7.2013 22:42

Já zas dělal 2 a půl roku v C++ a teď sem začal v C#. Je oproti C++ znatelně jednodušší a na klasické winform aplikace daleko vhodnější, ale oproti C++ mi přijde poněkud omezující, obzvláště nepovolené implicitní konverze mezi primitivními typy jsou strašně otravné :D

 
Nahoru Odpovědět
15.7.2013 22:42
Avatar
Odpovídá na Kit
Neaktivní uživatel:15.7.2013 22:45

Jak se tak dívám na tu poptávku tak C++ si ještě pořád vede celkem dobře, a ještě na pár IT středních se ti dva učí

Nahoru Odpovědět
15.7.2013 22:45
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:15.7.2013 22:48

Pokud máš na licenci Windows, tak není co řešit, já si, ale chci odpočinout od Windows, tak si přeji ntb s Linuxem (Linpus) - při nejhorším si nainstaluju Ubuntu :) A tak dělám Javu

Nahoru Odpovědět
15.7.2013 22:48
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:15.7.2013 22:53

Ty se učíš jen programovací jazyky, po kterých je poptávka?

Nahoru Odpovědět
15.7.2013 22:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:15.7.2013 22:58

Zatím jen Javu a po dávkových souborech Windows zrovna poptávka není a C++ bych se chtěl učit taky díky tomu tvýmu porovnávání C# a C++ někde na fóru (kulomet a nůž)

Nahoru Odpovědět
15.7.2013 22:58
Neaktivní uživatelský účet
Avatar
Maxfx
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Maxfx:15.7.2013 23:08

C# je kulomet to jsi četl na stránkách microsoftu ? :D

Nahoru Odpovědět
15.7.2013 23:08
Být ovládán znamená být sledován, pod dohledem, špehován, veden, uzákoněn, reglementován, ohrazen, indoktrinován, pře...
Avatar
vitamin
Člen
Avatar
vitamin:15.7.2013 23:13

Nakoniec sa to tu zvrhne na c++ vs c# vs java. Vyhra to aj tak Brainfuck alebo Whitespace :)

 
Nahoru Odpovědět
15.7.2013 23:13
Avatar
Maxfx
Tvůrce
Avatar
Odpovídá na vitamin
Maxfx:15.7.2013 23:30

Neni duvod

Nahoru Odpovědět
15.7.2013 23:30
Být ovládán znamená být sledován, pod dohledem, špehován, veden, uzákoněn, reglementován, ohrazen, indoktrinován, pře...
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na vitamin
Lukáš Hruda:15.7.2013 23:37

Zatím se tu nikdo nehádá, pokud to začne, tak to tu uzavřu.

 
Nahoru Odpovědět
15.7.2013 23:37
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Maxfx
Kit:15.7.2013 23:41

To jsem použil pro srovnání. Kulomet (Java) je účinnější zbraň, se kterou se naučíš zacházet velmi rychle. Nůž (C++) sice není tak účinný, výuka s ním trvá déle, ale zato je univerzálnější. Co je tedy lepší, nůž nebo kulomet? Záleží, pro jaký účel. Kulomet se hodí na dobývání či obranu, ale paragánovi nůž poslouží lépe.

Nahoru Odpovědět
15.7.2013 23:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:16.7.2013 8:22

No právě.

Nahoru Odpovědět
16.7.2013 8:22
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:16.7.2013 10:47

To srovnání však není 100%. Pro některé úkoly je lepší použít raketomet :)

Nahoru Odpovědět
16.7.2013 10:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Nahoru Odpovědět
16.7.2013 16:10
Neaktivní uživatelský účet
Avatar
tastyfish
Tvůrce
Avatar
tastyfish:16.7.2013 22:31

Záleží, k čemu ten jazyk chceš použít a co se chceš naučit. Pokud už umíš programovat objektově z Javy, jak jsem četl, a chceš tímto způsobem programovat dál, jdi do C++. Pro úplné začátečníky je lepší naučit se nejdřív programovat normální imperativní kód bez objektů např. v C, i když to není pro začátečníky taky úplně vhodné. Každopádně C a C++ jsou velmi podobné (i když ani jedno není podmnožinou druhého). Když zvládneš jedno, naučíš se bez velké námahy druhé.

Nahoru Odpovědět
16.7.2013 22:31
škoda mluvit
Avatar
Kit
Tvůrce
Avatar
Odpovídá na tastyfish
Kit:16.7.2013 22:43

Když se nejprve naučí imperativně, tak se bude těžko přeučovat na OOP. Je lepší se rovnou naučit OOP.

Nahoru Odpovědět
16.7.2013 22:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na tastyfish
Lukáš Hruda:16.7.2013 22:49

To co píšeš není pravda, jednak C je, až na pár drobných rozdílů, podmnožinou C++ pak C a C++ jsou si podobné jenom v tom že C je v podstatě naprosté jádro C++, v C++ je obrovská spousta věcí navíc a také se v něm programuje jinak. Co se týká přechodu z Javy na C++, tak Java je jednodušší a v C++ se programuje jinak, myslím, že takový přechod nebude jen tak, ale proč ne. Se začátkem v C souhlasím, připadá mi lepší začínat v neobjektovém jazyce ve kterém si programátor všechno musí dělat sám a alespoň se naučí co jak uvnitř funguje, než v jazyce ve kterém hned od začátku na všechno používá již napsané knihovny. Z takového jazyka jako je C se na OOP jazyk dá podle mě přejít snadno.

 
Nahoru Odpovědět
16.7.2013 22:49
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:16.7.2013 23:14

Já také nejdřív programoval imperativně a až postupně jsem se naučil OOP a neměl jsem s tím žádný problém :)

Nahoru Odpovědět
16.7.2013 23:14
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:16.7.2013 23:20

Já jsem s přechodem od imperativního k OOP problém měl. Spousta programátorů ho má dodnes právě proto, že začínali s imperativním a dělali ho příliš dlouho.

Nahoru Odpovědět
16.7.2013 23:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
tastyfish
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
tastyfish:17.7.2013 0:07

C není podmnožinou C++ - jak sám říkáš, jsou tady rozdíly, ne každý program v C je program v C++... ale myslím, že o tomhle nemá cenu nějak dál diskutovat, je to jenom teorie versus praxe. Taky bych radši netvrdil, že je nějaký jazyk obecně jednodušší než jiný, záleží mnohem víc na problému, který v něm řešíš. Java a C++ jsou samozřejmě odlišné, ale objektový koncept zůstává v základu stejný - jeden jazyk používá rozhraní, druhý vícenásobnou dědičnost, jeden je čistě objektový, druhý hybridní, ale jsou to prostě jenom různé přístupy ke stejné problematice. Nehrotil bych to tak.

Nahoru Odpovědět
17.7.2013 0:07
škoda mluvit
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na tastyfish
Lukáš Hruda:17.7.2013 0:48

Tam nejde ani tak o ten objektový přístup, jako spíš o to, co v C++ musíš řešit navíc oproti Javě, například správu paměti. Jinak máš pravdu, koncept je pořád stejný. Co se týče C a C++ tak pořád nesouhlasím, C je podmnožinou C++, téměř jakýkoliv program napsaný v C se dá zkompilovat i jako C++, jsou tam drobné rozdíly, například tvorba struktur, kde se v C používá typedef (pro definování typu a možnost nepsat struct před každou deklaraci, v C++ nepotřebné) nebo deklarace a definice funkcí, kde v C deklarace funkce s prázdnými závorkami znamená neznámou signaturu, kdežto v C++ funkci bez parametrů. C++ je ale z C téměř na 100% zpětně kompatibilní, všechny knihovny a hlavičkové soubory pro C nebo v C napsané můžeš použít i v C++, to dělá z C v podstatě jeho podmnožinu. To že se v C++ programuje jinak, je dáno tím, že C++ má spoustu věcí navíc, které se v něm používají, dá se v něm ale programovat i stejně jako v C.

Editováno 17.7.2013 0:48
 
Nahoru Odpovědět
17.7.2013 0:48
Avatar
tastyfish
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
tastyfish:17.7.2013 7:21

Tak já nevím, ale myslím, že pokud je jazyk množina řetězců a jazyk A je podmnožinou jazyka B, pokud všechny řetězce z A patří do B, pak třeba program "int main() {int class = 0; return 0;}" patří do C ale ne do C++. Ale tak třeba se pletu. No a správa paměti dělá lehčí řešení většiny běžných problémů, ale nedělá lehčím jazyk jako takový - pokud vím, v Prologu taky paměť neuvolňuješ a nemyslím si, že se dá říct, že je lehčí než C++. Třeba hello world je jednodušší napsat v C++ než v Javě, protože kvůli tomu nemusíš vytvářet žádnou třídu. Ale jsou to podle mě dohady o blbostech.

Nahoru Odpovědět
17.7.2013 7:21
škoda mluvit
Avatar
vitamin
Člen
Avatar
vitamin:17.7.2013 8:43

Cena za GC je dosť vysoká. Správa pamäte je síce ľahšia, ale správa ostatných nepamäťových zdrojov je náročnejšia kvôly absencii deterministických destruktorov a následne techniky RAII. To že je každá trieda odvodená od bazovej triedy zabraňuje implementácii viacnásobnej dedičnosti. V tomto sa my páči jazyk D, triedy sú spravované pomocou GC, ale štruktúry su hodnotový typ kde sa volá destruktor pri opustení scoupu, takže je možné použiť RAII. Viacnásobná dedičnosť je zas dosiahnutá pomocou interfacov a template mixinov. Škoda že D je relatívne mladý jazyk a ešte nema poriadne knižnice :(

 
Nahoru Odpovědět
17.7.2013 8:43
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vitamin
Kit:17.7.2013 10:06

Cena za GC nemusí být příliš vysoká. Drahou konstrukcí je např.

String jmeno = "Adam";
if (zena) {
    jmeno = "Eva";
}

kterou vídám někdy až moc často. Efektivnější (s polovičním nárokem na GC) je

String jmeno;
if (zena) {
    jmeno = "Eva";
} else {
    jmeno = "Adam";
}

případně úspornější na zápis

String jmeno = zena ? "Eva" : "Adam";
Nahoru Odpovědět
17.7.2013 10:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vitamin
Člen
Avatar
Odpovídá na Kit
vitamin:17.7.2013 10:38

jmeno sa musí tak či tak inicializovať, či sa inicializuje referenciu na object alebo null je jedno. Otázne je akým spôsobom je konštruovaná String konštanta. Keďže je to imutable object a je známi už pri preklade tak je možne že všetky tie tvoje príklady sa preložia do rovnakého kódu.

Ja som nenarážal ale na rýchlosť GC, ale na to že kvôly GC jazyk nemôže obsahovať rôzne vlastnosti ktoré môžu uľahčiť programovanie (viz RAII).

 
Nahoru Odpovědět
17.7.2013 10:38
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na tastyfish
Lukáš Hruda:17.7.2013 12:32

Pokud podmnožinu myslíš až takto doslova, pak máš pravdu. Já to myslel z hlediska konceptu a programování jako trakového. C++ nabízí to samé co C a k tomu spoustu věcí navíc, C nabízí podmožinu toho co C++. Z toho i vyplývá, že se v C++ dá programovat stejně jako v C, pokud nepoužíváš nová klíčová slova v chybném kontextu :D

 
Nahoru Odpovědět
17.7.2013 12:32
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vitamin
Kit:18.7.2013 11:39

String je immutable object. Proč tedy neudělat immutable i atribut jmeno?

Nahoru Odpovědět
18.7.2013 11:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
gms
Člen
Avatar
gms:29.7.2013 15:35

Ahoj!
Chtěl bych aby jste mi poradili knihu na C

  1. Herout
  2. K&R
  3. Deitel – C how to programm

Cílem je se dostat k vývoji Linuxu. Programovací zkušenosti mám (Java, Perl).
Díky.

 
Nahoru Odpovědět
29.7.2013 15:35
Avatar
gms
Člen
Avatar
gms:29.7.2013 15:51

Jako Linuxu mám na mysli Kernel, ne aplikace k tomu.

 
Nahoru Odpovědět
29.7.2013 15:51
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na gms
Lukáš Hruda:29.7.2013 16:08

Herout není špatný, o těch dalších dvou nic nevím.

 
Nahoru Odpovědět
29.7.2013 16:08
Avatar
Nahoru Odpovědět
29.7.2013 21:16
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Ahoj
Člen
Avatar
Odpovídá na werty
Ahoj:11.8.2013 21:34

Ani jedno, zkus Javu...

 
Nahoru Odpovědět
11.8.2013 21:34
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Ahoj
Lukáš Hruda:11.8.2013 21:57

Velmi přínosný příspěvek v sekci C/C++.

 
Nahoru Odpovědět
11.8.2013 21:57
Avatar
Ahoj
Člen
Avatar
Odpovídá na Lukáš Hruda
Ahoj:11.8.2013 22:22

Děkuju :)

 
Nahoru Odpovědět
11.8.2013 22:22
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Ahoj
Lukáš Hruda:11.8.2013 22:45

Nevím jestli i to tvoje poděkování, ale můj příspěvek byla ironie :D

 
Nahoru Odpovědět
11.8.2013 22:45
Avatar
Ahoj
Člen
Avatar
Ahoj:11.8.2013 22:52

Děkuju za upřímnost :)

 
Nahoru Odpovědět
11.8.2013 22:52
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Ahoj
Lukáš Hruda:11.8.2013 23:02

Nemáš za co.

 
Nahoru Odpovědět
11.8.2013 23:02
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 45 zpráv z 45.