Diskuze: C vs C++

C++ C a C++ C vs C++

Avatar
werty
Člen
Avatar
werty:

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:

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  -1 15.7.2013 21:44
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

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

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

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

 
Nahoru Odpovědět 15.7.2013 21:54
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Já začal s C#. :)

Nahoru Odpovědět 15.7.2013 22:13
Avatar
Homo
Člen
Avatar
Odpovídá na werty
Homo:

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  +1 15.7.2013 22:25
1010011 1000101 1011000
Avatar
werty
Člen
Avatar
 
Nahoru Odpovědět 15.7.2013 22:33
Avatar
Kit
Redaktor
Avatar
Odpovídá na werty
Kit:

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
Odpovídá na Homo
Lukáš Hruda (Luckin):

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
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

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
Avatar
Mr. Forstak
Člen
Avatar
Odpovídá na Inoue Yūki
Mr. Forstak:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

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
Mr. Forstak
Člen
Avatar
Odpovídá na Kit
Mr. Forstak:

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
Avatar
Maxfx
Redaktor
Avatar
Odpovídá na Mr. Forstak
Maxfx:

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:

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
Redaktor
Avatar
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
Odpovídá na vitamin
Lukáš Hruda (Luckin):

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
Redaktor
Avatar
Odpovídá na Maxfx
Kit:

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
Kit
Redaktor
Avatar
Odpovídá na Mr. Forstak
Kit:

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

Nahoru Odpovědět  +1 16.7.2013 10:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
tastyfish
Redaktor
Avatar
tastyfish:

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
Redaktor
Avatar
Odpovídá na tastyfish
Kit:

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
Odpovídá na tastyfish
Lukáš Hruda (Luckin):

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):

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
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Kit:

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
Redaktor
Avatar
Odpovídá na Lukáš Hruda (Luckin)
tastyfish:

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  +1 17.7.2013 0:07
škoda mluvit
Avatar
Odpovídá na tastyfish
Lukáš Hruda (Luckin):

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
Redaktor
Avatar
Odpovídá na Lukáš Hruda (Luckin)
tastyfish:

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:

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
Redaktor
Avatar
Odpovídá na vitamin
Kit:

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:

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
Odpovídá na tastyfish
Lukáš Hruda (Luckin):

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  +1 17.7.2013 12:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na vitamin
Kit:

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:

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:

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

 
Nahoru Odpovědět 29.7.2013 15:51
Avatar
Odpovídá na gms
Lukáš Hruda (Luckin):

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:

Ani jedno, zkus Javu...

 
Nahoru Odpovědět 11.8.2013 21:34
Avatar
Odpovídá na Ahoj
Lukáš Hruda (Luckin):

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

 
Nahoru Odpovědět 11.8.2013 21:57
Avatar
Odpovídá na Ahoj
Lukáš Hruda (Luckin):

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:

Děkuju za upřímnost :)

 
Nahoru Odpovědět 11.8.2013 22:52
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.