Forum » Programiranje » C++ vs. C
C++ vs. C
rokpok ::
No odločil sem se, da se bom zdaj v vročih poletnih dneh "naučil (upam da vsaj nekaj malega)" ali C ali C++. Pa me zanima katerega mi bolj priporočate in pa kaj je sploh bistvena razlika med njima.
Google mi ni znal pomagati pri iskanju razlike.
Lp
Google mi ni znal pomagati pri iskanju razlike.
Lp
Rad bi bil pingvin.
snow ::
Google pravi da je razlika.. recimo tule ti pove kar dosti: http://forums.devshed.com/showthread.ph...
Samo iskat je treba znat.
Samo iskat je treba znat.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
CCfly ::
Prvo se nauči C, drugače boš imel v C++ še večje težave, kot jih boš že tako ali tako imel. Predvsem dobi občutek za kazalce, dobro uporabo struktur in nujno poskusi pisati modularne programe. Se pravi ne skracaj vsega v eno datoteko in v eno funkcijo. Ko boš pa vsaj približno poznal C, lahko začneš s C++.
hash ::
Jaz predlagam vkolikor se bos ucil C++a da zacnes kar z njim.Da takoj zacnes z objektnim programiranjem in se privadis tako programirati - namrec kar dosti ljudi ima potem tezave z prehodom iz C v C++ in uporabljajo nekaj vmes med Cjem in C++om.
Dobra knjiga za zacetek v C++u je Accelerated C++ ali C++ Primer Plus.
Za C pa The C Programming Language(Ritchie & Kernighan).
Dobra knjiga za zacetek v C++u je Accelerated C++ ali C++ Primer Plus.
Za C pa The C Programming Language(Ritchie & Kernighan).
CCfly ::
Vse je odvisno od tega kako so programirali v C-ju. Če ne znajo programa niti na funkcije razdeliti je C++ še težji. Nazadnje ne poznajo niti osnovnega delovanja objektov, kar lahko povzroči precej zahrbtne hrošče.
slawc ::
Pa saj C++ je nadgradnja C, osnove so enake. Ne mores kar takoj o objetkih, dedovanju, exceptionih ter ostalem zacet studirat. Pravzaprav se s tem, ko se ucis C ucis tudi C++.
LP,
Slawc
rokpok ::
No hvala. Odločil sem se, da se bom učil C-ja. Zdaj pa bi prosil še za kakšne nasvete glede knjige (razen "The C programming language")?
Lp
Lp
Rad bi bil pingvin.
Zgodovina sprememb…
- spremenil: rokpok ()
jype ::
Zakrajskova knjiga oz. skripta "programski jezik C" je vsekakor odlicna.
C++ nikakor ni nadgradnja jezika C, ampak je cisto nekaj drugega. Sintaksa je podobna, a to novopecene programerje prej zavaja kot pa jim pomaga. Modeliranje problemov v C++ je cisto drugacno kot v C, prav tako je povsem drugacna filozofija jezika. Ce se bos ucil C++, potem je prave knjige zate napisal Bjarne Stroustrup (ki je tudi avtor jezika).
sleepy_net: cemu se zelis uciti programiranja?
Ce bi rad programiral manjse uporabne reci, potem se vsekakor splaca uciti sodobnejse jezike (C#, Python) kjer vecino znanja o arhitekturah, upravljanju s pomnilnikom in takih zoprnejsih opravil namesto tebe naredi prevajalnik.
Ce te teorija zanima in bi rad postal profesionalen programer, ki se zaveda implikacij svojih programerskih odlocitev na podlagi znanja o vsem kar je pod njegovim programskim jezikom, potem je C++ kar primerno startno mesto, seveda pa ti C ne bo usel.
Najboljsi nacin za ucenje jezika ni tak, da si dobis knjigo in beres, ampak da si dobis problem, in ga resis. Najdi si nalogo, recimo "vodenje evidence plovil v marini" za prakticno programiranje ali pa "ucinkovita in varna printf implementacija, ki ne uporablja sklada" za bolj teoreticno nalogo. Za prvo bos verjetno uporabil kaj podobnega C#, VB, C++, za drugega pa predvsem C in mogoce nekaj malega assemblerja, ce si dovolj mahnjen na hitrost.
C++ nikakor ni nadgradnja jezika C, ampak je cisto nekaj drugega. Sintaksa je podobna, a to novopecene programerje prej zavaja kot pa jim pomaga. Modeliranje problemov v C++ je cisto drugacno kot v C, prav tako je povsem drugacna filozofija jezika. Ce se bos ucil C++, potem je prave knjige zate napisal Bjarne Stroustrup (ki je tudi avtor jezika).
sleepy_net: cemu se zelis uciti programiranja?
Ce bi rad programiral manjse uporabne reci, potem se vsekakor splaca uciti sodobnejse jezike (C#, Python) kjer vecino znanja o arhitekturah, upravljanju s pomnilnikom in takih zoprnejsih opravil namesto tebe naredi prevajalnik.
Ce te teorija zanima in bi rad postal profesionalen programer, ki se zaveda implikacij svojih programerskih odlocitev na podlagi znanja o vsem kar je pod njegovim programskim jezikom, potem je C++ kar primerno startno mesto, seveda pa ti C ne bo usel.
Najboljsi nacin za ucenje jezika ni tak, da si dobis knjigo in beres, ampak da si dobis problem, in ga resis. Najdi si nalogo, recimo "vodenje evidence plovil v marini" za prakticno programiranje ali pa "ucinkovita in varna printf implementacija, ki ne uporablja sklada" za bolj teoreticno nalogo. Za prvo bos verjetno uporabil kaj podobnega C#, VB, C++, za drugega pa predvsem C in mogoce nekaj malega assemblerja, ce si dovolj mahnjen na hitrost.
rokpok ::
jype-> vsaka ti čast. To je to kar sem rabil.
Ce te teorija zanima in bi rad postal profesionalen programer, ki se zaveda implikacij svojih programerskih odlocitev na podlagi znanja o vsem kar je pod njegovim programskim jezikom, potem je C++ kar primerno startno mesto, seveda pa ti C ne bo usel.
Rad bi se naučil programiranja vse lepo od začetka (beri od "drobovja računalnika") in ne samo razne skriptne jezike, VB, Delphi,... Vendar pa bi še vseeno rabil kakšen nasvet za knjigo, ki je primerna za uvod v C.
Lp
Ce te teorija zanima in bi rad postal profesionalen programer, ki se zaveda implikacij svojih programerskih odlocitev na podlagi znanja o vsem kar je pod njegovim programskim jezikom, potem je C++ kar primerno startno mesto, seveda pa ti C ne bo usel.
Rad bi se naučil programiranja vse lepo od začetka (beri od "drobovja računalnika") in ne samo razne skriptne jezike, VB, Delphi,... Vendar pa bi še vseeno rabil kakšen nasvet za knjigo, ki je primerna za uvod v C.
Lp
Rad bi bil pingvin.
Zgodovina sprememb…
- spremenil: rokpok ()
whatever ::
Za C++ ti priporočam knjigo avtorjev Žumer, Brest - Strukturirano programiranje v C++. Taka modra knjiga enih 200 strani - jo uporabljamo na našem faksu FERI MB pri predmetu programiranje 1. Dobi se v skriptarnici na našem faksu. Pa še eno oranžno knjigo z naslovom Objektno programiranje v C++, dobiš jo prav tako v skriptarnici. Za moje pojme sta za začetek kar dobri.
rokpok ::
whatever - tnx. Vendar sem se odločil najprej prebrati kako njigo o C-ju ne C++. Mogoče veš za kakšno knjigo, ki bi mi jo priporočil?
Rad bi bil pingvin.
whatever ::
Žal za C ne vem katero knjigo bi ti priporočil - na faksu smo začeli kar s C++. Ne vem zakaj ne bi tudi ti poskusil s C++. Kakor hočeš. Ko pa se boš loteval C++ pa vsekakor posezi po omenjenih knjigah.
nicnevem ::
važno je da se nečesa lotiš in ne izgubiš volje takoj po prvem dnevu.....sicer ti pa predlagam da najprej mal vržeš uč na C, vsaj tolk da boš dobil en občutek kako stvar zgleda..Sej ni treba da ga v nulo naštudiraš,... vzem si kak teden, al pa še manj , mal prelistaj knjigo, pol kr naprej na C++
jype ::
ccfly: da, vendar ne za zacetnika. Zacetnik se uci novih idej in se ga veliko bolje primejo, ce se nima pod kozo vcepljenega strukturiranega programiranja, ki ga narekuje C.
O tem kako sta C in C++ povezana:
http://www.research.att.com/~bs/bs_faq.html#C-is-subset
Torej, ko enkrat znas C++ se tudi v C kar OK znajdes, saj so ti jasni koncepti tako strukturiranega kot objektnega programiranja, kar je veliko lazje kot osvojiti objektni model (in v C++ je to precej sirok pojem) po tem ko si ugotovil kako je strukturirani fajn.
Gre za drugacen pristop k modeliranju problemov, kot sem ze omenil.
sleepy_net: nauci se C++. Na primer celoten Linux je napisan v C, tako da bos imel veliko priloznosti spoznavat kvalitetno C kodo, ker je sintaksa zelo podobna (prakticno enaka). Niti ni slaba ideja ce se ucis oba jezika hkrati, pac po potrebi, vendar ti svetujem, da nove projekte pises v C++, ker je njegova ekspresivna moc veliko vecja (v njem je lazje opisat probleme in resitve).
In ja, C je manjsi, lazji in enostavnejsi za razumet, zato je dobro, ce najprej spoznas visjenivojski jezik, kjer dobis vec teoreticne podlage za razumevanje konceptov, ki se uporabljajo pri programiranju, potem pa se preselis v prakso, kjer spoznavas arhitekture hardvera in operacijskih sistemov.
Ce rabis Zakrajskovo knjigo o jeziku C, ti jo lahko zrihtam. Nekje na FMF webu je bil postscript, ne vem kako je z avtorskimi pravicami in razsirjanjem, a preprican sem, da te ne bo nihce preganjal, ce si to natisnes ali prebiras z zaslona. Profesor Zakrajsek je na zalost ze preminil.
O tem kako sta C in C++ povezana:
http://www.research.att.com/~bs/bs_faq.html#C-is-subset
Torej, ko enkrat znas C++ se tudi v C kar OK znajdes, saj so ti jasni koncepti tako strukturiranega kot objektnega programiranja, kar je veliko lazje kot osvojiti objektni model (in v C++ je to precej sirok pojem) po tem ko si ugotovil kako je strukturirani fajn.
Gre za drugacen pristop k modeliranju problemov, kot sem ze omenil.
sleepy_net: nauci se C++. Na primer celoten Linux je napisan v C, tako da bos imel veliko priloznosti spoznavat kvalitetno C kodo, ker je sintaksa zelo podobna (prakticno enaka). Niti ni slaba ideja ce se ucis oba jezika hkrati, pac po potrebi, vendar ti svetujem, da nove projekte pises v C++, ker je njegova ekspresivna moc veliko vecja (v njem je lazje opisat probleme in resitve).
In ja, C je manjsi, lazji in enostavnejsi za razumet, zato je dobro, ce najprej spoznas visjenivojski jezik, kjer dobis vec teoreticne podlage za razumevanje konceptov, ki se uporabljajo pri programiranju, potem pa se preselis v prakso, kjer spoznavas arhitekture hardvera in operacijskih sistemov.
Ce rabis Zakrajskovo knjigo o jeziku C, ti jo lahko zrihtam. Nekje na FMF webu je bil postscript, ne vem kako je z avtorskimi pravicami in razsirjanjem, a preprican sem, da te ne bo nihce preganjal, ce si to natisnes ali prebiras z zaslona. Profesor Zakrajsek je na zalost ze preminil.
hash ::
Za C sem ze napisal - najbolsa knjiga po mnenju vecine je The C Programming Language(Ritchie & Kernighan), avtorja knjiga sta tudi avtorja jezika C, dobis jo na Amazonu za priblizno 40 dolarjev, skoraj zagotovo pa jo imajo tudi v CTKju.Sicer pa ti predlagam tudi knjige Bruca Eckela, ki so v elektronski verziji brezplacno dostopne na njegovi domaci strani.
SasoS ::
Ja, jaz tud misli da je skor nuja da začneš s C-jem. Zato da dobiš mal feelinga za sintakso (ali sploh za programiranje če si totalen začetnik), da narediš nekaj simple programov...potem komot to razširiš naprej na C++ in objektno programiranje. Po mojem mnenju zelo dober začetniški "tečaj" Cja najdeš tukaj. Maš vse lepo od začetka razloženo, s primeri, na koncu pa naloge z rešitvami da to malo povadiš. Ta tutorial je včasih bil zastonj na netu...ampak na srečo je prevedena različica še vedno free . Če pobrskaš še malo po pagu od programiranja 2 boš našel še drugi del, ki nadgradi to znanje na c++....
trs ::
Jaz ti predlagam da se lotis lepo Cja. Vsekakor se bos moral prebit skozi C sintakso ce bos hotel obvlada C++, tako da je to po moje dober zacetek. C je tudi bolj primeren ce hoces spoznavat racunalnik iz drobovja navzgor. Nauci se C++ ko bos zacel delat kaksne vecje projekte... Pa tudi za pisat dobre programe moras poznat koncepte kot so stack, heap(malloc(), free()) in malo bolj low-level stvari, ki se C++-a niti ne ticejo(naprimer, pointerji so v Cju in C++ bistvenega pomena).
Nekateri pravijo, da se je lazje naucit objektnega ce startas s C++, vendar mislim, da ni ravno tako :) C++ je dvorezen mec... C++ je dejansko tezek jezik. Obvladat vse cake kako in kaj v C++-u je zakomplicirano, in moras precej vec pazit pri designu samega programa. Po moje so dosti bolj primerni jeziki za ucenje objektnega programiranja Python, Ruby ... in podobni jeziki, ki izvirajo iz Small-Talk objektne sole (z izjemo Objective C).
Bistvena stvar pri Cju so pointerji, ko to enkrat obvladas kot se sika, ti ne bo tezko razumet marsikaterih konceptov iz C++ (virtualne funkcije, reference ... etc.)
Niti mi ni jasno zakaj vsi predlagajo C++ kot zacetni jezik? Je kje kaka studija o temu? Al pac samo zato ker je objektni je boljsi za zacetnike?
lp,
trs
Nekateri pravijo, da se je lazje naucit objektnega ce startas s C++, vendar mislim, da ni ravno tako :) C++ je dvorezen mec... C++ je dejansko tezek jezik. Obvladat vse cake kako in kaj v C++-u je zakomplicirano, in moras precej vec pazit pri designu samega programa. Po moje so dosti bolj primerni jeziki za ucenje objektnega programiranja Python, Ruby ... in podobni jeziki, ki izvirajo iz Small-Talk objektne sole (z izjemo Objective C).
Bistvena stvar pri Cju so pointerji, ko to enkrat obvladas kot se sika, ti ne bo tezko razumet marsikaterih konceptov iz C++ (virtualne funkcije, reference ... etc.)
Niti mi ni jasno zakaj vsi predlagajo C++ kot zacetni jezik? Je kje kaka studija o temu? Al pac samo zato ker je objektni je boljsi za zacetnike?
lp,
trs
noraguta ::
se strijam z trs-om. tudi debugiranje c-ja je praktično najlazje.
Pust' ot pobyedy k pobyedye vyedyot!
jype ::
Jaz sem svoje priporocilo osnoval na podlagi izkusenj:
- naucil sem se C in ga precej dobro obvladam
- dokler nisem spoznal Pythona, sem C++ zgolj zlorabljal
- poznam vsaj dva C++ programerja (eden je danes tudi zelo sposoben Java programer), ki se nista na zacetku ucila C, pa sta veliko bolje obvladala C++ kot jaz, ker sta drugace gledala na programerske probleme
- poznam veliko C++ programerjev, ki se z mano strinjajo, da je ekspresivnost C++ bistvenega pomena za nestrukturirano razumevanje nekaterih problemov.
Podobno kot je brez znanja matematicne analize nekatere fizikalne probleme zelo tezko obravnavati je tudi brez ekspresivne moci nekaterih jezikov zelo tezko opisati resitve dovolj elegantno, da potem niso nocna mora pri vzdrzevanju.
To, da se C sintakse naucis skozi ucenje C++ je res, ker sta sintaksi zelo podobni. Tudi ni narobe se uciti C pred C++, le krivulja ucenja je bolj polozna, a zato je tudi znanje bolj poglobljeno. Glede na cilje, ki si jih je zadal bodoci programer je smiselno, ce se hkrati uci oba jezika, nikakor pa po moje ni pametno izpuscati konceptov visjenivojskih jezikov, ce se bo nekega dne zacel profesionalno ukvarjati s programiranjem.
- naucil sem se C in ga precej dobro obvladam
- dokler nisem spoznal Pythona, sem C++ zgolj zlorabljal
- poznam vsaj dva C++ programerja (eden je danes tudi zelo sposoben Java programer), ki se nista na zacetku ucila C, pa sta veliko bolje obvladala C++ kot jaz, ker sta drugace gledala na programerske probleme
- poznam veliko C++ programerjev, ki se z mano strinjajo, da je ekspresivnost C++ bistvenega pomena za nestrukturirano razumevanje nekaterih problemov.
Podobno kot je brez znanja matematicne analize nekatere fizikalne probleme zelo tezko obravnavati je tudi brez ekspresivne moci nekaterih jezikov zelo tezko opisati resitve dovolj elegantno, da potem niso nocna mora pri vzdrzevanju.
To, da se C sintakse naucis skozi ucenje C++ je res, ker sta sintaksi zelo podobni. Tudi ni narobe se uciti C pred C++, le krivulja ucenja je bolj polozna, a zato je tudi znanje bolj poglobljeno. Glede na cilje, ki si jih je zadal bodoci programer je smiselno, ce se hkrati uci oba jezika, nikakor pa po moje ni pametno izpuscati konceptov visjenivojskih jezikov, ce se bo nekega dne zacel profesionalno ukvarjati s programiranjem.
Zgodovina sprememb…
- spremenilo: jype ()
rokpok ::
Hvala vsem. Knjigo The C Programming Language sem že dobil, compiler tudi...tako da se lahko "neprespane noči" začnejo.
Lp
Lp
Rad bi bil pingvin.
hatch ::
C++ se je idiotsko ucit zase.. ce bos kdaj rabil C++, je to za druge. (se pravi delas v eni firmi kjer imajo projekt narejen v C++...)
C je bolj logicen, bolj preprost, hitrejsi in bolj racunalniski kot C++... seveda ce ga obvladas.
Objekti so popolnoma sfaljena teorija.. sploh ko o tej teoriji govorijo univerzitetni profesorji kateri o programiranju kratkomalo nimajo nikakrsnega pojma.
MyCursor->move(x,y) ?!?!?! take idiotizme vas ucijo na faxu.
A ni tole bolj logicno?
MoveCursor(pCursorContext, x, y) ... namrec tako racunalnik dela.
Objektno programiranje je za idiote ki ne znajo imenovat svojih funkcij in ne znajo uporabljat struktur ter pointerjev nanje.
In da ne pozabim.. C koda je hitrejsa od C++. Sploh glede na to kar vas ucijo na faxu...
pObjCtx->ulX++;
je pac hitrejsi od
MyObject->IncreaseX(); ali MyObject->X++; In take debilnosti pocne 95% C++ programerjev.
C je bolj logicen, bolj preprost, hitrejsi in bolj racunalniski kot C++... seveda ce ga obvladas.
Objekti so popolnoma sfaljena teorija.. sploh ko o tej teoriji govorijo univerzitetni profesorji kateri o programiranju kratkomalo nimajo nikakrsnega pojma.
MyCursor->move(x,y) ?!?!?! take idiotizme vas ucijo na faxu.
A ni tole bolj logicno?
MoveCursor(pCursorContext, x, y) ... namrec tako racunalnik dela.
Objektno programiranje je za idiote ki ne znajo imenovat svojih funkcij in ne znajo uporabljat struktur ter pointerjev nanje.
In da ne pozabim.. C koda je hitrejsa od C++. Sploh glede na to kar vas ucijo na faxu...
pObjCtx->ulX++;
je pac hitrejsi od
MyObject->IncreaseX(); ali MyObject->X++; In take debilnosti pocne 95% C++ programerjev.
slawc ::
hatch, logika je tu zelo subjektiven pojem. Marsikje objekti zelo olajsajo in poenostavijo kodo.
Nekomu se zdi logicno uporabljati for zanko nekomu pa while in kaj zdaj? Se skregava kdo je vecji idiot?
Nekomu se zdi logicno uporabljati for zanko nekomu pa while in kaj zdaj? Se skregava kdo je vecji idiot?
LP,
Slawc
hatch ::
Bedna analogija. Lahko uporabis goto. In ko bos skompilal bo zadeva enaka.
move ecx, ...
xxx:
.
.
dec ecx
jnz xxx
Razlika med objekti je pa velika na low-level nivoju. In objekti naredijo eno veliko svinjarijo.
move ecx, ...
xxx:
.
.
dec ecx
jnz xxx
Razlika med objekti je pa velika na low-level nivoju. In objekti naredijo eno veliko svinjarijo.
slawc ::
ne glej analogijo kot koncno implementacijo v koncni kodi (ki je lahko odvisna od prevajalnika), temvec v podajanju kaj je logicno in kaj ne.
Obstajajo tudi ljudje (nekaj jih celo osebno poznam), ki bi tvoje primerjanje C in idiotskega C++ spravili na nivo asm ter C. Programiranje v Cju se jim zdi totalno idiotsko ter nelogicno, potratno in se nastevajo, kot da jutri nikoli ne pride.
P.S.
Da ne bo kdo mislil, da zagovarjam samo C++ ali C ali asm. Vsaka stvar je po svoje dobra in ima svoje slabosti. Ampak, da je nekaj bolj racunalnisko od drugega... Strojna koda uber ales madona (ej, tud to smo pocel, ne bos verjel) [ni mi jasno katerga smajla nj dam notri]
Obstajajo tudi ljudje (nekaj jih celo osebno poznam), ki bi tvoje primerjanje C in idiotskega C++ spravili na nivo asm ter C. Programiranje v Cju se jim zdi totalno idiotsko ter nelogicno, potratno in se nastevajo, kot da jutri nikoli ne pride.
P.S.
Da ne bo kdo mislil, da zagovarjam samo C++ ali C ali asm. Vsaka stvar je po svoje dobra in ima svoje slabosti. Ampak, da je nekaj bolj racunalnisko od drugega... Strojna koda uber ales madona (ej, tud to smo pocel, ne bos verjel) [ni mi jasno katerga smajla nj dam notri]
LP,
Slawc
Zgodovina sprememb…
- spremenil: slawc ()
hatch ::
No ce sam ne razumes, bodi raje tiho.
Racunalniska logika je ena sama. Objekti so samo en dodaten 'front-end' da imbecili mislijo da razumejo kako racunalnik dela.
To da objekti lajsajo delo je en navaden bullshit! Samo zdi se tako, ker so bili programerji API-ja tolko prijazni da so naredili handlerje in object wraperje namesto vas.
Racunalniska logika je ena sama. Objekti so samo en dodaten 'front-end' da imbecili mislijo da razumejo kako racunalnik dela.
To da objekti lajsajo delo je en navaden bullshit! Samo zdi se tako, ker so bili programerji API-ja tolko prijazni da so naredili handlerje in object wraperje namesto vas.
kopernik ::
Hm, če se boš profesionalno ukvarjal s programiranjem (s tem mislim, da se boš zaposlil kot programer), ti objekti ne uidejo, ker večina firm dela :
-v C++
-v Javi
-v .NETu
Le zakaj ? V končni fazi zato, ker so ugotovili, da je objektni pristop bolj efektiven (od risanja diagramov (UML) do vzdrževanja celotnega projekta).
-v C++
-v Javi
-v .NETu
Le zakaj ? V končni fazi zato, ker so ugotovili, da je objektni pristop bolj efektiven (od risanja diagramov (UML) do vzdrževanja celotnega projekta).
slawc ::
Prou ozkogleden si, tako kot tisti ki utrujajo, da je asembler the one and only stvar v katerih se programira. Pa dobr, da ne programiramo v strojni kodi. Poleg tega ti znanje Cja o sami racunalniski logiki ne pove veliko. Visji programski jeziki so bili ustvarjeni ravno iz razloga razumljivosti in prekrivanju low-level racunalniske logike.
Ves kaj, ko bos naslednjic utrujal s ponazarjanjem racunalniske logike in programiranjem, potem pa se raje loti opisnih jezikov kot sta VHDL ali verilog, preklopi svoje boge mozgane iz sekvencnega razmisljanja v pararelno pa bos videl ali je "C bolj logicen" kot karkoli drugega. S tem se bos popolnoma poenotil z racunalnisko logiko.
Tole je ze zlo offtopic. Nevem zakaj te motijo ljudje, ki bi radi programirali z objekti? So mar zato vsi idioti?
Nuf said.
Ves kaj, ko bos naslednjic utrujal s ponazarjanjem racunalniske logike in programiranjem, potem pa se raje loti opisnih jezikov kot sta VHDL ali verilog, preklopi svoje boge mozgane iz sekvencnega razmisljanja v pararelno pa bos videl ali je "C bolj logicen" kot karkoli drugega. S tem se bos popolnoma poenotil z racunalnisko logiko.
Tole je ze zlo offtopic. Nevem zakaj te motijo ljudje, ki bi radi programirali z objekti? So mar zato vsi idioti?
Nuf said.
LP,
Slawc
Zgodovina sprememb…
- spremenil: slawc ()
Vesoljc ::
tukaj se mocno strinjam sz slawcem. svoje stalisce bi lahko pokazal na bolj prijazen nacin, brez teszkih besed kot so idioti ali imbecili. vkolikor bos nadaljeval s takim tonom, bomo prisiljeni ukrepati...
Abnormal behavior of abnormal brain makes me normal...
jype ::
No, glede na naslov teme ni offtopic.
hatch: lahko pokazes C kodo ki dela hitreje kot ustrezna C++ koda?
Kar se mene tice prevajalnik za C++ lahko bistveno bolje optimizira output kot pa C prevajalnik, ceprav seveda na koncu ni opazne razlike.
Kaj se na faksih ucijo je irelevantno, ti trdis da je C hitrejsi od C++. Rad bi videl kaksna dejstva stojijo za temi trditvami. Lahko pokazes kaksen link?
hatch: lahko pokazes C kodo ki dela hitreje kot ustrezna C++ koda?
Kar se mene tice prevajalnik za C++ lahko bistveno bolje optimizira output kot pa C prevajalnik, ceprav seveda na koncu ni opazne razlike.
Kaj se na faksih ucijo je irelevantno, ti trdis da je C hitrejsi od C++. Rad bi videl kaksna dejstva stojijo za temi trditvami. Lahko pokazes kaksen link?
Vesoljc ::
sej je povsem logicno, da dolocene funkcionalnosti, ki jih c++ ponuja odzirajo cikle ter bite (v-tabelca kot recimo najbolj znan primer).
Abnormal behavior of abnormal brain makes me normal...
jype ::
Logicno je pa tudi, da optimizacije, ki jih je sposoben C++ prevajalnik, pogosto odtehtajo ali presezejo pristop ki ga zahteva C.
Na primer tole.
Na primer tole.
rokpok ::
(malce off iz prejšnje debate pa vseeno). Kar sem se do zdaj naučil v C-ju je super. Sicer se nisem naučil veliko ampak vseeno se mi zdi sintaksa in te stvari super in mnogo lepše kot v drugih jezikih, ki sem jih do zdaj spoznal (samo moje mnenje).
ps. se opravičujem če sem zmotil prejšnjo debato.
ps. se opravičujem če sem zmotil prejšnjo debato.
Rad bi bil pingvin.
hatch ::
Logicno je pa tudi, da optimizacije, ki jih je sposoben C++ prevajalnik, pogosto odtehtajo ali presezejo pristop ki ga zahteva C.
Nice try.. samo C++ programa uporabljata drug (ocitno hitrejsi - STL knjiznjica- verjetno napisan celo v ASMju) algoritem za sortiranje kot 'hand-coded' C program.
hatch ::
No sej celo pise...
Za casovno razliko je kriv drug algoritem, ne uporaba C/C++.
[2] Earlier versions of sort used the quicksort algorithm (C. A. R. Hoare, Comp. J. 5, 1962), using a pivot chosen by median of three (R. C. Singleton, CACM 12, 1969). Quicksort has O(N log(N)) average complexity, but quadratic worst-case complexity. See section 5.2.2 of Knuth for a discussion. (D. E. Knuth, The Art of Computer Programming. Volume 3: Sorting and Searching. Addison-Wesley, 1975.) The current implementation of sort, however, uses the introsort algorithm (D. R. Musser, "Introspective Sorting and Selection Algorithms", Software Practice and Experience 27(8):983, 1997.) whose worst case complexity is O(N log(N)). Introsort is very similar to median-of-three quicksort, and is at least as fast as quicksort on average.
Za casovno razliko je kriv drug algoritem, ne uporaba C/C++.
jype ::
Da. In koliko casa bi ti vzelo implementirat drug algoritem v C (vkljucno z debuggingom, avtomatsko adaptacijo podatkovni strukturi, ki jo sortiras in seveda prenosljivostjo na druge arhitekture)?
Ker je skoraj vsak veljaven C program tudi veljaven C++ program, je vprasanje o hitrosti nesmiselno. Za zlorabljat jezik ne rabis C++, je pa C++ veliko primernejsi za pisanje programov, ki jih bo nekdo moral vzdrzevat.
Ker je skoraj vsak veljaven C program tudi veljaven C++ program, je vprasanje o hitrosti nesmiselno. Za zlorabljat jezik ne rabis C++, je pa C++ veliko primernejsi za pisanje programov, ki jih bo nekdo moral vzdrzevat.
Zgodovina sprememb…
- spremenilo: jype ()
hatch ::
jao lol.. si sploh pogledal primere?
Program v C-ju je napisan z lastno funkcijo in lastnim quicksort algoritmom.. C++ programa imata pa kar inkludano STL knjiznjico in kliceta sort funkcijo iz STL knjiznjice.
Ce bi imel C++ programcek tudi napisano svojo funkcijo za quicksort algoritem bi bil daljsi in pocasnejsi od C programa.
Program v C-ju je napisan z lastno funkcijo in lastnim quicksort algoritmom.. C++ programa imata pa kar inkludano STL knjiznjico in kliceta sort funkcijo iz STL knjiznjice.
Ce bi imel C++ programcek tudi napisano svojo funkcijo za quicksort algoritem bi bil daljsi in pocasnejsi od C programa.
jype ::
hatch: lahko to podkrepis s kaksnim dokazom?
Vem, da imajo pogosto ljudje tezave z linkanjem C++ programov in potem zgledajo vecji in se dejansko pocasneje izvajajo, vem pa tudi da GCC dejansko naredi _enak_ RTL za ekvivalentno C in C++ kodo.
Intel C compiler naredi enako hitro optimizirano kodo kot Intel C++.
Vem, da imajo pogosto ljudje tezave z linkanjem C++ programov in potem zgledajo vecji in se dejansko pocasneje izvajajo, vem pa tudi da GCC dejansko naredi _enak_ RTL za ekvivalentno C in C++ kodo.
Intel C compiler naredi enako hitro optimizirano kodo kot Intel C++.
hatch ::
Ker je skoraj vsak veljaven C program tudi veljaven C++ program, je vprasanje o hitrosti nesmiselno. .
Potrebujes se nekaj let izkusenj, pa bos uvidel da temu ni tako...
Za zlorabljat jezik ne rabis C++, je pa C++ veliko primernejsi za pisanje programov, ki jih bo nekdo moral vzdrzevat
V teoriji.. v praksi je pa ravno obratno zaradi programerskega stila.. folk ki je zrastel gor z C-jem in ASMjem pise dobre komentarje in izbira dobra imena za spremenljivke, structe, funkcije,... medtem ko vecina novodobnih t.i. objektnih programerjev nima pojma kaj je to madzarska notacija, objekte poimenujejo 'mojobjekt'.. komentarji so pa tam, kjer so totalno nepotrebni.
jype ::
Ja, vse to se pa strinjam.
Kljub temu sem ze videl tako elegantno napisano C++ kodo in ustrezno elegantno optimizirano strojno kodo, da me bos tezko preprical da je C++ pocasnejsi.
C++ poleg objektnega modela podpira tudi vse ostale (tudi tiste od C) in mesanje vseh teh paradigm, nikjer pa nisem rekel, da je to pametno. Vsak dober programer se pac zaveda implikacij svojih programerskih odlocitev, na mladih programerjih pa je, da se tega naucijo.
Bom za finto reimplementiral tisti C sort algoritem v C++, da vidimo, koliko bo pocasnejsi. Bom objavil rezultate.
Kljub temu sem ze videl tako elegantno napisano C++ kodo in ustrezno elegantno optimizirano strojno kodo, da me bos tezko preprical da je C++ pocasnejsi.
C++ poleg objektnega modela podpira tudi vse ostale (tudi tiste od C) in mesanje vseh teh paradigm, nikjer pa nisem rekel, da je to pametno. Vsak dober programer se pac zaveda implikacij svojih programerskih odlocitev, na mladih programerjih pa je, da se tega naucijo.
Bom za finto reimplementiral tisti C sort algoritem v C++, da vidimo, koliko bo pocasnejsi. Bom objavil rezultate.
kopernik ::
V teoriji.. v praksi je pa ravno obratno zaradi programerskega stila.. folk ki je zrastel gor z C-jem in ASMjem pise dobre komentarje in izbira dobra imena za spremenljivke, structe, funkcije,... medtem ko vecina novodobnih t.i. objektnih programerjev nima pojma kaj je to madzarska notacija, objekte poimenujejo 'mojobjekt'.. komentarji so pa tam, kjer so totalno nepotrebni.
Čisti nesmisel. To je odvisno od človeka in ne od tega s čim je "zrasel gor". Ravno tako so bili zanič programerji 20 let nazaj kot so danes. Tudi nekateri samooklicani poznavalci assemblerja pišejo take zmazke, da je groza.
rokpok ::
jype -> (povrsti, od začetka proti koncu) logo , pascal, VB (tu sem po mojem mnenju storil napako, saj bi mogel iti na c/c++), PHP, C (sedaj sem se ga začel učiti).
Rad bi bil pingvin.
jype ::
Meni je bilo zal ze za Pascal. Saj je lustkan jezik, a v praksi precej neuporaben.
C ti da veliko boljsi obcutek za to kako racunalnik dejansko dela (ceprav ko sem prvic videl kaj dober optimizer naredi iz cisto logicnega algoritma, sem samo z odprtimi usti gledal :), po drugi strani pa je to tudi ena njegovih najvecjih slabosti.
Se posebej upravljanje s pomnilnikom in t.i. varno programiranje sta v C bistveno tezja kot v visjih jezikih. Ce bos kdaj programiral omrezne servise moras blazno pazit na varnost in tu je C++ malo manj zoprn, kljub vsemu pa je najbolje imeti cim boljso predstavo o tem kaj pocnes.
Ko bos znal C si poglej se malo Python. Odlicen interpretiran jezik z zelo mocno standardno knjiznico in najbolj citljiv od vseh, ki jih jaz poznam.
C ti da veliko boljsi obcutek za to kako racunalnik dejansko dela (ceprav ko sem prvic videl kaj dober optimizer naredi iz cisto logicnega algoritma, sem samo z odprtimi usti gledal :), po drugi strani pa je to tudi ena njegovih najvecjih slabosti.
Se posebej upravljanje s pomnilnikom in t.i. varno programiranje sta v C bistveno tezja kot v visjih jezikih. Ce bos kdaj programiral omrezne servise moras blazno pazit na varnost in tu je C++ malo manj zoprn, kljub vsemu pa je najbolje imeti cim boljso predstavo o tem kaj pocnes.
Ko bos znal C si poglej se malo Python. Odlicen interpretiran jezik z zelo mocno standardno knjiznico in najbolj citljiv od vseh, ki jih jaz poznam.
hatch ::
Čisti nesmisel. To je odvisno od človeka in ne od tega s čim je "zrasel gor". Ravno tako so bili zanič programerji 20 let nazaj kot so danes. Tudi nekateri samooklicani poznavalci assemblerja pišejo take zmazke, da je groza.
Ga ni programerja ki bi pisal programe v ASMju in ne bi napisal vsaj pol tolko smiselnih komentarjev kot kode.
Medtem ko vecina racunalnicarjev ki pride iz slovenskih fakultet napise 2 komentarja za programerski zmazek dolg 1000 vrstic. In od teh 2 komantarjev je eden: i = 0; //reset counter
kopernik ::
Ne oporekam temu, da marsikateri programer proizvaja slabo, nedokumentirano kodo. Oporekam temu, da kar počez označuješ "novodobne" programerje za debilne. Kaj pa fakulteta proizvaja ... o tem raje ne bi razpravljal (če ne drugega že zaradi tega, ker sem tudi sam proizvod fakultete ).
Zgodovina sprememb…
- spremenil: kopernik ()
CCfly ::
@hatch:
"My code is self documenting."
in
"It was hard to write, it should be hard to understand."
Pa naj ti ne odnese pokrova od lobanje, zaradi C++. Objekti niso nič slabega, če pa se ukvarjaš s sitemskim programiranjem, je pa C boljši že zaradi tega, ker ti da precej lepši program v zbirniku ven. Se pa splača C++ naučit že zaradi STL-ja.
"My code is self documenting."
in
"It was hard to write, it should be hard to understand."
Pa naj ti ne odnese pokrova od lobanje, zaradi C++. Objekti niso nič slabega, če pa se ukvarjaš s sitemskim programiranjem, je pa C boljši že zaradi tega, ker ti da precej lepši program v zbirniku ven. Se pa splača C++ naučit že zaradi STL-ja.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | začetki programiranjaOddelek: Programiranje | 7252 (5327) | Mavrik |
» | Visual Basic, C#, C++, razlike... (strani: 1 2 3 )Oddelek: Programiranje | 12641 (10312) | 64202 |
» | JavaOddelek: Programiranje | 3527 (3085) | Nerdor |
» | mene me pa čista osnova zanimaOddelek: Programiranje | 1868 (1658) | NoUse4AName |
» | Kateri jezik je bolji?Oddelek: Programiranje | 2209 (1746) | Monster |