Thread: C++
-
20-11-2004, 16:29 #61
Wablieft? Weinig verschil? Dat C++ afgeleid is van C, daar ga ik akkoord mee, maar het is een totaal andere manier van programmeren hoor.
Plus dat je klassen kan afleiden, je kan dus abstract objecten omschrijven en ze daarna pas implementeren. Je kan ook klassen templatizen en er is de STL library!!
C++ laat toe om stukken code van elkander duidelijker af te schermen, wat niet altijd zo eenvoudig is met C.
Als je in C bijvoorbeeld een 3D vector wil en deze moeten met short integers, long integers en floats en werken, dan zit je met 3 structs. In C++ schrijf je 1 template klasse.
Je kan zelfs een heel UML diagram afleiden van je code (met bvb Doxygen) als je met klassen werkt.
Met pointers heb je geen last als je ze goed implementeerd. Je kan memory leaks met een AutoPtr klasse catchen als je het combineert met logging. Google maar es.
Headers zijn dan weer heel handig, want daarmee beperk je je dependencies. Je header maakt ook een mooi overzicht van hoe de achterliggende code is, zonder dat je de code moet gaan bekijken. Natuurlijk moet de header wel goed gedocumenteerd en opgesteld zijn.
Klopt, als je iets wil doen, dan doe je het beter van de eerste keer goed. Je gaat toch niet eerst VB leren om dan later nooit meer te gebruiken? Maar als je VB ook interessant vind, dan is het geen slecht idee om hier eerst mee te starten. Java is ook een aanrader (want dat leunt qua syntax meer aan bij C++, is cross-platform).Last edited by Vich; 20-11-2004 at 16:33.
[LifeIsDigital.net] - Mijn artikels, open source software en projecten!no votes
-
-
20-11-2004, 17:41 #62
sorry, maar daar ben ik het niet mee eens.
natuurlijk heb je geen problemen met pointers als je ze deftig gebruikt ( het zou maar erg zijn
).
maar het neemt ni weg dat er veel elegantere oplossingen bestaan, die het leven van een programmeur veel eenvoudiger maken. Ikzelf verkies de aanpak van java waarin de taal kiest of er waarde of referentie semantiek gebruikt wordt.
dat ik dan eens op de zoveel gevallen ( want geef toe, hoe dikwijls ga je waarde semantiek gebruiken voor objecten...) iets minder efficiënt bezig ben, neem ik er graag bij.
zelfde als mijn vorige punt, als programmeur zou je je absoluut niet moeten bezighouden met aan de compiler duidelijk te maken waar alles te vinden is.
Headers zijn dan weer heel handig, want daarmee beperk je je dependencies. Je header maakt ook een mooi overzicht van hoe de achterliggende code is, zonder dat je de code moet gaan bekijken. Natuurlijk moet de header wel goed gedocumenteerd en opgesteld zijn.
er bestaan trouwens voor bijna alle iets of wat bekende talen wel tools om de interface samen met de documentatie uit je klassen te extracten.
het enige voordeel van c++ tov andere (OO) talen is dat er deftige compilers voor bestaan, die goeie en snelle code produceren.
als je trouwens is opzoek bent naar een oudere, maar voor zijn tijd erg revolutionaire taal, moet je is kijken naar SmallTalk. De taal heeft duidelijk haar beperkingen en ik zou er nu niet direct applicaties mee beginnen ontwikkelen, maar de achterliggende gedachte ( lees volledig OO ) is wel mooi.:ono votes
-
20-11-2004, 19:13 #63
het boek 'C programming in easy steps' is superduidelijk uitgelegd in geen al te technisch engels, de voorbeelden zijn simpel ze gaan niet zwaar in detail, het is in kleur en er wordt goed gbruik gemaakt van iconen etc, ze tonen zowel voor win32 en linux hoe je moet compileren etc, (met gebruik van gcc) en er wordt geen gebruik gemaakt van een IDE (om te tonen dat het ook zonder kan, en dat je beter leert proggen zonder, want teveel hulp is ook niet goed)
Duur is het niet 18 euro op proxis (RECLAME), rond de 200 bladzijden, ideaal voor een beginner
Dus ik veronderstel dat 'C++ programming in easy steps' ook wel een goed boek zal zijn en wat ik in de toekomst wel eens zal kopenDay by day photoblog: http://w.twwwo.be/no votes
-
20-11-2004, 19:15 #64
't Is maar wat je eigen voorkeur is. Ik heb graag 100% controle over mijn code. (e.g. assembler mogelijkheden)
Dat is zeker niet het enige voordeel, anders zou het zielig zijn om enkel voor die reden in C++ te programmeren. C++ compileert native(=>performantie), is backwards compatible met C (dus je bent niet verplicht OO te werken), je hebt 100% controle over wat je schrijft, etc.het enige voordeel van c++ tov andere (OO) talen is dat er deftige compilers voor bestaan, die goeie en snelle code produceren.
Begrijp me niet verkeerd hee, ik vind Java zeker niet slecht, integendeel. Ik hou me vooral bezig met games, vandaar dat mijn voorkeur naar C++ gaat.[LifeIsDigital.net] - Mijn artikels, open source software en projecten!no votes
-
20-11-2004, 20:24 #65
mja tis zoals je zegt he : c++ steekt op vlak van performantie ver boven de rest uit, en voor games enzo is het dus idd de interessantste taal.
over dat 100% controle hebben over je code : ik kan er idd inkomen dat dat een goede reden is om voor c++ te kiezen; maar spijtig genoeg leidt die vrijheid ook tot veel slechte applicaties, moeilijk op te sporen bugs, etc...
daarom dat makers van nieuwe talen altijd maar hoger niveau concepten aanbieden en zo ver mogelijk weg blijven van implementatie details...
( pointers worden door kwatongen ook wel eens de goto van de 80's genoemd )
binnen 10à15 jaar is programmeren zoals wij het nu kennen misschien wel volledig vervangen door modelleren in UML waaruit dan rechtstreeks de code wordt gecompiled. Het is in ieder geval de richting waarin we aan het uitgaan zijn, en waarin ook stevig wat onderzoek wordt vericht.
ON TOPIC :
ik zou de thread starter aanraden te beginnen in java :
-het is OO zodat je meteen de juiste denkwijze aanleert
-het is eenvoudiger dan c++ omdat je je niet echt bezig moet houden met referentie vs waarde sementiek ( het is alleszinds eenvoudiger dan al de mogelijkheden die je in c++ hebt, en die zeker voor een beginnend iemand erg verwarrend kunnen zijn )
-de syntax leunt dicht aan bij die van c++ zodat je uiteindelijk de overgang makkelijk kan makenLast edited by Hale; 20-11-2004 at 20:36.
:ono votes
-
20-11-2004, 21:57 #66Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
N/o, maar dat vind ik een van de meest cliché redenen (en ook meest oncorrecte om mensen af te raden in c++ te programmeren. Het is toch niet omdat een ander slechte apps maakt met een bep. prog-taal dat jij deze daarom niet moet leren.
Is zelfde met php (ik kan relijk wat php, daarom dak et ook graag als vb. gebruik
): Tis toch niet omdat 90% van de in php-gecode websites unsafe, traag, vaak ook niet 100% correct, ... zijn dat iemand geen php moet leren
.
no votes
-
20-11-2004, 22:08 #67
als er nu geen betere alternatieven voor handen zouden zijn, maar dat is helemaal het geval niet. ( behalve dan misschien als je idd puur voor performance gaat )
das hetzelfde als rijden met een wagen zonder stuurbekrachting, abs, etc...
als je deftig kan rijden en mits enige oefening zal je die wagen ook zonder problemen op de baan kunnen houden.
vraag is : is het de moeite waard als er wagens bestaan die wel servo, abs, etc aanbieden ( er nu even vanuit gaande dat prijsverschillen enzo geen beperkende factor zijn ( hier zou dat de performance zijn ) ).
niemand zal u verbieden om rechtstreeks in assembler te coden, dan heb je nog het meeste vrijheid van allemaal en het kan ook perfect, maar dit raad je toch ook niemand aan ?Last edited by Hale; 20-11-2004 at 22:09.
:ono votes
-
20-11-2004, 22:26 #68
Ik zou de vergelijking nou niet gaan trekken met assembler, want dat is low-level programmeren.
Hoe je het ook draait of keert, het gebruik van een taal hangt volledig af van de implementatie-eisen. Assembler kan zijn voordelen hebben, net als Visual Basic er heeft.[LifeIsDigital.net] - Mijn artikels, open source software en projecten!no votes
-
21-11-2004, 13:31 #69Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
n/o, maar imho kan je dat niet vergelijken, je vergelijkt het gebruik van iets met het maken van iets. Gebruik dan de vgl. met een mechanicien he. Die gaat ook pas die dingen implenteren als hij controle over alles heeft.
no votes
-
21-11-2004, 16:25 #70[LifeIsDigital.net] - Mijn artikels, open source software en projecten!no votes
-
21-11-2004, 17:23 #71
dus jij gaat mij vertellen dat een automechanicien heel den auto inclusief elk vijske in elkaar steekt ?
als ge die vorm van controle wilt dan kunt ge misschien direkt in machinecode gaan programmeren.
mijn vergelijking gaat trouwens wel op :
ik gebruik een auto om iets te realiseren : nl. mij verplaatsen van punt a naar punt b.
ik gebruik een taal om iets te realiseren : nl. mijn applicatie ontwikkelen.
hoe meer functionaliteit die auto mij biedt hoe makkelijker ik mij kan verplaatsen
en hoe betere concepten de taal aanbiedt hoe makkelijker ik mijn applicatie kan maken. is toch redelijk duidelijk dacht ik.
Raad ik daarom iemand af om geen c++ te leren ? absoluut niet. ik stel wel iemand voor van een andere taal te gebruiken, die betere concepten aanbiedt als die voorhanden is.
dat is ook exact de reden waarom jullie aan mensen c++ aanraden ipv c, nl omdat OO vele malen krachtiger ( en hoger niveau ) is dan c...
ik snap trouwens ook ni zo direct de facinatie van veel mensen om daadwerkelijk alles onder controle te hebben. Over talen zoals java en c# is jarenlang deftig nagedacht om verbeterde mogelijkheden aan te bieden, vertrekkende van wat men al wist van andere talen. dan ga je mij toch niet vertellen dat hele bedrijven die die taal gemaakt hebben en in een bepaalde richting gestuurd hebben, het bij het verkeerde eind hadden?
het beste bewijs is misschien nog wel c# waarbij men geprobeerd heeft al het goede van alle talen te verzamelen en waar bijna niks meer van de c++ concepten overblijft.:ono votes
-
21-11-2004, 17:38 #72
Dat hangt ervanaf wat die mecanien aan het doen is. Soms gaat die heel de console moeten openhalen en vervolgens de radio uiteenhalen omdat er een tray blokkeert.
Idem met programmeren, voor sommige applicaties heb je gewoon die low-level access nodig (maar zeker niet altijd!).
Ik denk dat we wel op de zelfde lijn zitten qua gedachten, maar dat je nogal makkelijk veralgemeent: Ik heb nooit gezegd (en Killgore ook niet) dat je altijd low level moet coden, integendeel. Het kán gewoon sóms nodig zijn in sommige stukken van je coden om even low-level te programmeren. En dan vooral in gamedev. En in dat geval is de keuze C++ niet zo abnormaal. 't Is niet omdat je controle wil over je code, dat je continue assembler gaat programmeren 7:/ Het gaat hem over het feit dat je controle kán nemen waar nodig. Je moét geen pointers gebruiken, je mág ze gebruiken.[LifeIsDigital.net] - Mijn artikels, open source software en projecten!no votes
-
21-11-2004, 17:55 #73
ok , daar volg ik je wel in.
MAAR : feit blijft wel dat c++ _alleen_ die lage concepten aanbiedt( er is geen alternatief voor die pointers, je MOET met headers werken, etc. ). Dus zelfs al wil je niet low-level bezig zijn, dan nog heb je geen andere keuze.
ideaal mocht dus zijn moest C++ zoals java en c# ( en trouwens de meeste andere OO-talen ) werken en ook nog eens al die extra mogelijkheden aanbieden zoals headers,inline functies,pointers etc.
nu wordt je mijn inziens iets te veel verplicht onnodig ingewikkelde low-level concepten te gebruiken.
Daarom dat ik het meer heb voor andere OO-talen.
ik raad dan ook zeker aan een beginnend iemand, die absoluut geen meerwaarde heeft aan wat C++ je laat doen met zijn low-level stuff, om niet met c++ te beginnen maar met een andere OO-taal.:ono votes
-
21-11-2004, 18:50 #74
*agrees*
Alleen vind ik wel dat een beginner C++ kan leren, het hangt gewoon volledig af van wat die beginner later wil maken van software. Meestal kan je beter Java, C# of Visual Basic als instaptaal gebruiken.
Zelfs C kan als instaptaal, om dan bvb later assembler te gaan coden als je embedded programming wil doen. Of als je liever taal-analyse wil doen omtrend AI-onderzoek, dan is Prolog weer de aanrader als instaptaal. Alleen is het zo dat niet de meeste programmeurs vooraf hun specialisatie hebben bepaald. Dus dan kan je inderdaad beter een meer high level taal kiezen.[LifeIsDigital.net] - Mijn artikels, open source software en projecten!no votes
-
21-11-2004, 19:21 #75Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
sounds like c++.net

ma tbh, werken met pointers MOET niet hoor, ik denk dat je met pass-by-reference (welke nog steeds onafhankelijk staat in principe van pointers) ook redelijk wat kan doen.
Ook kan je in c++ met dingen als auto_ptr (of eigen versie ervan liever
) redelijk wat functies van java en c# overnemen.
Voor de rest sluit ik me volledig bij u en vich aan: gebruik elke taal waar et goed voor is. C/c++ kan je aanschouwen als het hedendaagse low-level programmeren, gebruik dat dan voor situaties waar low-level het beste uitkomt, en gebruik java/c# als een high-level c-variant
.
Gelukkig dat er nog dingen als .net zijn, moesten zulke dingen wat meer uitbreiden he, mensen zouden niet meer kreften welke taal et beste is
no votes
