Archief - C++

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Hellsgamerz

Legacy Member
Ge hebt mij nie graag zeker :wtf: Anyway:

Het is wel waar wat je zegt, maar vraag je eens ECHT af: heb je C++ nodig voor je job? Als je in de gamesindustrie werkt als game programmeur, ja. Zal iemand die hier hulp komt vragen dat ooit doen zonder opleiding? Ik dénk van niet (prove me wrong :) ). Ik probeer iedereen er enkel maar van bewust te maken dat er nog talen zijn die zeker niet moeten onderdoen voor C++.

Wat je zegt over overstappen: ik ga akkoord. Maar waarom wil je eerst C++ leren om dan toch in VB te gaan werken? IMHO is het véél beter om eerst te leren denken zonder geheugenbeheer ed te hoeven te doen. Ga jij op je eerste rijles al onmiddelijk het drukste en gevaarlijkste kruispunt in je buurt opzoeken? Nee. Rustigaan, kleine stapjes per keer. Dat is zo in alles wat je leert. Je moet je trots opzij zetten en iets wat minderwaardig *lijkt* gaan doen om later te doen wat je wil. Als iemand die nog nooit geprogrameerd heeft binnen 6 maand zegt dat hij/zij in een taal als Python, Delphi of zelfs VB alles kan doen wat hij/zij wil, petje af. Leer dan maar C++.

Nu, blijkbaar begrijpt niemand hier wat ik wil duidelijk maken, dus laat ik het er maar bij. Laat ze C++ leren en dan teleurgesteld afdruipen omdat het te moeilijk is. Minder concurrentie voor mij later :tongue:

Edit: om toch iets constructiefs aan dit topic toe te voegen: http://www.steveheller.com/cppad/Output/dialogTOC.html Vervolg op Who's afraid of C++, voor velen een van de beste C++ boeken ooit. Leert je ook een eigen stringklasse maken, iets waar veel mensen dankbaar voor zullen zijn als ze willen ANSI C++ schrijven (en niet dat MS-dialect).

Vich

Legacy Member
Hellsgamerz zei:
Ge hebt mij nie graag zeker :wtf: Anyway:

Ik heb niks tegen jou persoonlijk hoor, sorry als het zo overkwam. Ik vond je visie op programmeertalen gewoon niet top ;)

Het is wel waar wat je zegt, maar vraag je eens ECHT af: heb je C++ nodig voor je job? Als je in de gamesindustrie werkt als game programmeur, ja.

Dat hangt volledig af wat voor je job later wil. Werk je graag aan administratieve toepassingen, dan doe je beter SQL en VB of iets dergelijks. Wil je embedded programming, dan doe je vooral assembler. Dat wil niet zeggen dat je álleen maar assembler moet gaan leren om embedded programmer te worden. Natuurlijk is er niet zoooveel vraag naar C++ programmeurs, maar het is ook niet te onderschatten. In de gamedesign wordt bijna altijd C++ gebruikt en het is hier natuurlijk vooral een gamedesign forum (dat wil niet zeggen dat niet-gamedesign topics niet aan bod komen, maar wel dat antwoorden vaak in die richting getint zijn).

Zal iemand die hier hulp komt vragen dat ooit doen zonder opleiding? Ik dénk van niet (prove me wrong :) ).
Zelf heb ik geen opleiding(behalve dan middelbare) en werk in de games-industrie. (ja, ik vraag soms ook hulp :P )

Ik probeer iedereen er enkel maar van bewust te maken dat er nog talen zijn die zeker niet moeten onderdoen voor C++.
Wat ik bedoel is dat er geen "betere" programmeertaal is. Elke taal heeft zijn doel en je moet die taal leren die jouw doel het beste kan oplossen op een aanvaardbare termijn. (alles is relatief dus)

Wat je zegt over overstappen: ik ga akkoord. Maar waarom wil je eerst C++ leren om dan toch in VB te gaan werken? IMHO is het véél beter om eerst te leren denken zonder geheugenbeheer ed te hoeven te doen. Ga jij op je eerste rijles al onmiddelijk het drukste en gevaarlijkste kruispunt in je buurt opzoeken? Nee. Rustigaan, kleine stapjes per keer. Dat is zo in alles wat je leert. Je moet je trots opzij zetten en iets wat minderwaardig *lijkt* gaan doen om later te doen wat je wil. Als iemand die nog nooit geprogrameerd heeft binnen 6 maand zegt dat hij/zij in een taal als Python, Delphi of zelfs VB alles kan doen wat hij/zij wil, petje af. Leer dan maar C++.
Je moet natuurlijk een basiskennis hebben, maar om nu over geheugenbeheer te beginnen? Om C++ te kunnen gebruiken moet je echt niks van geheugenbeheer kennen hoor. Wat heeft iemand nu aan de interne voorstelling van floating points, van stacks etc? Je moet érgens een lijn trekken. Enkel als je pointers gebruikt (in eender welke taal) eist dat een beetje uitleg over de internet voorstelling van geheugen, maar dat zou ik geen geheugenbeheer noemen.
Je kan met C++ ook heel eenvoudig beginnen en dat opbouwen, net als bij VB, Delphi of whatever.
En C++ leren om daarna VB te leren en enkel VB te gebruiken is natuurlijk nutteloos. Ik bedoelde dat als je toch beide talen wil kennen, je best bij de meest complete kan beginnen, omdat die tweede dan piece of cake wordt. Als je C++ kent, dan kan je in een paar weken tijd redelijk VB coden, maar omgekeerd totaal niet.

Nu, blijkbaar begrijpt niemand hier wat ik wil duidelijk maken, dus laat ik het er maar bij. Laat ze C++ leren en dan teleurgesteld afdruipen omdat het te moeilijk is. Minder concurrentie voor mij later :tongue:

Edit: om toch iets constructiefs aan dit topic toe te voegen: http://www.steveheller.com/cppad/Output/dialogTOC.html Vervolg op Who's afraid of C++, voor velen een van de beste C++ boeken ooit. Leert je ook een eigen stringklasse maken, iets waar veel mensen dankbaar voor zullen zijn als ze willen ANSI C++ schrijven (en niet dat MS-dialect).

Unzip Attack

Legacy Member
toch effe op wijzen dat C++ zéker nog wel veel gebruikt wordt, in wetenschappelijke werken *onderzoek* wordt énorm veel C++ achtige dingen gebruikt, games ofcourse ook...

killgore

Legacy Member
Vich zei:
Je moet natuurlijk een basiskennis hebben, maar om nu over geheugenbeheer te beginnen? Om C++ te kunnen gebruiken moet je echt niks van geheugenbeheer kennen hoor. Wat heeft iemand nu aan de interne voorstelling van floating points, van stacks etc? Je moet érgens een lijn trekken. Enkel als je pointers gebruikt (in eender welke taal) eist dat een beetje uitleg over de internet voorstelling van geheugen, maar dat zou ik geen geheugenbeheer noemen.
Je kan met C++ ook heel eenvoudig beginnen en dat opbouwen, net als bij VB, Delphi of whatever.
En C++ leren om daarna VB te leren en enkel VB te gebruiken is natuurlijk nutteloos. Ik bedoelde dat als je toch beide talen wil kennen, je best bij de meest complete kan beginnen, omdat die tweede dan piece of cake wordt. Als je C++ kent, dan kan je in een paar weken tijd redelijk VB coden, maar omgekeerd totaal niet.
over geheugenbeheer: imho is basiskennis over hoe variabelen worden opgeslaan (tekenbits, low bits, hi bits en de bijkomende operators) altijd handig, wordt nogal veel gebruikt (colordata, evaluatieconstanten, "datacompressie", ...). Maar natuurlijk puur geheugenbeheer is idd (buiten pointers) niet aan c++ besteed, dat is voor de diepgaandere assembly freaks.

Daarnaast: ik zou zeker en vast niet beginnen met vb om dan om te schakelen naar c++. Reden: slechte code stijl, en vb en c++ zijn verschillende soorten qua taal (de ene is een tekentaal, andere meer tekst (ik ken de exacte benamingen hiervoor niet meer, forgiveness please :p)). Met slechte code stijl bedoel ik: programmeren in c++ en vb zijn 2 totaal verscheidene zaken, en je zal dingen die je in vb deed ook in c++ proberen, maar die daar spijtig genoeg volledig fout zijn en niet zullen werken ;). ALs je vb-specialist bent en wilt c++ leren, dan vrees ik dat je voor een groot deel van 0 zal mogen herbeginnen. Natuurlijk zal je inzicht in sommige zaken wel helpen, maar een scripttaal als PHP zal je bv. veel meer helpen om c++ te leren als VB. En zeg nu zelf: php is ook niet al te moeilijk he :p.

wlibaers

Legacy Member
Hellsgamerz zei:
Edit: om toch iets constructiefs aan dit topic toe te voegen: http://www.steveheller.com/cppad/Output/dialogTOC.html Vervolg op Who's afraid of C++, voor velen een van de beste C++ boeken ooit. Leert je ook een eigen stringklasse maken, iets waar veel mensen dankbaar voor zullen zijn als ze willen ANSI C++ schrijven (en niet dat MS-dialect).

ISO C++ heeft toch al een stringklasse? Of gebruiken de meeste Visual C++ gebruikers nog steeds dat MFC gedrocht in plaats van de standaard C++ strings?

Nu, als je dit soort dingen leuk vindt, dan zou ik "C Interfaces and Implementations" (David R. Hanson, ISBN 0-201-49841-3) aanraden. Wel een C boek, maar toont hoe je een hele hoop dingen (geheugenbeheer, exception handling, threading, allerlei datastructuren, hogere precisie berekeningen) zelf kan maken (ook een beetje assembly in het deel over threads). Ik vermoed wel dat de meesten, als ze in C++ werken, liever de standaard libraries zouden gebruiken voor die dingen.

De boeken van Knuth zijn ook aan te raden, maar niet echt voor beginnende programmeurs. En boeken over compiler en operating system ontwerp.

Vich

Legacy Member
wlibaers zei:
ISO C++ heeft toch al een stringklasse? Of gebruiken de meeste Visual C++ gebruikers nog steeds dat MFC gedrocht in plaats van de standaard C++ strings?
C++ heeft in de STL(standard template library) inderdaad al een string klasse. Dus voor de gemiddelde gebruiker is een string klasse totaal nutteloos om te schrijven, tenzij dan als oefening (niet om te gebruiken).
Anderzijds zijn er wél situaties waar je een eigen string klasse gaat schrijven, bvb in game development, als dingen wil doen als reference counting of strings wil debuggen met niet-standaard-technieken. (en andere)

Vich

Legacy Member
S3cT0r zei:
(C++ is een superset van C met allemaal object oriented brol die ge voor niets nodig hebt).

:lol:

Probeer eens een engine(eender welke) te schrijven met een half miljoen regels code zonder OO. Ik zal niet zeggen dat het niet kan, maar als je alles mooi in objecten plaatst is het veel overzichtelijker.

Bijvoorbeeld, een game engine:
Je kan teams aan maken, elk team kan 1 of meer members hebben, een member is een player, een player is een entity, een entity heeft een resource etc. Aan je renderer geef je enkel je resource, want die moet niet weten dat het een player of iets dergelijks is. En een team manager is een manager. Elk team registreert zich automatisch bij deze manager. etc. (ik kan zo nog uren doorgaan ;) )

Tyfius

Legacy Member
VB en OO gericht coden, das ook een lachertje.
't gaat wel, en met VB.NET als iets beter, maar das allemaal zo icky.

Als ge een makkelijke taal wilt, die cross platform is, google achter
- mono (gratis cross platform tegenhanger van het .NET framework)
- C# (de taal die erbij hoort)
- GTK# (om GUI's te maken. Staat al 20 jaar voor op java/windows form designers)
De documentatie is nog volop in ontwikkeling, maar schrijf je in op mailing lists, zoek wat irc channels op, ...
't Gaat hier allemaal om OpenSource, dus die mensen staat er echt wel achter, beatwoorden alle mails, in tegenstelling tot anderen, die vaak denken dat ze zo goed zijn omdat zij het kunnen.

saaner

Legacy Member
ik zou graag willen beginnen met programeren
welke taal is een goede opstap naar c++(opbouw,code,....)

S3cT0r

Legacy Member
Vich zei:
:lol:

Probeer eens een engine(eender welke) te schrijven met een half miljoen regels code zonder OO. Ik zal niet zeggen dat het niet kan, maar als je alles mooi in objecten plaatst is het veel overzichtelijker.

Bijvoorbeeld, een game engine:
Je kan teams aan maken, elk team kan 1 of meer members hebben, een member is een player, een player is een entity, een entity heeft een resource etc. Aan je renderer geef je enkel je resource, want die moet niet weten dat het een player of iets dergelijks is. En een team manager is een manager. Elk team registreert zich automatisch bij deze manager. etc. (ik kan zo nog uren doorgaan ;) )

Quake II :lol:

Vich

Legacy Member
S3cT0r zei:

Heb je de Quake II code ooit al eens bekeken? Die is echt niet zo makkelijk te doorgronden hoor. Anderzijds zijn de Irrlicht en Ogre engine (is wel grafische ipv game engine) dat wel.
Het gaat hem erom dat je OO afschrijft als "totaal overbodig", maar eigenlijk totaal niet weet wat je zegt. Hetzelfde met die Quake II. Als ik bijvoorbeeld Ogre neem en ik bekijk de UML schema's (jaja, OO!), dan snap ik binnen een paar uur hoe die engine werkt. Ik stel voor dat je dit eens met Quake II probeert :D (maar ik betwijfel dat je ooit die broncode uitvoerig bekeken hebt).

En waarom werden vroeger games nog vaak in C geschreven? (btw, Quake II is al vrij oud.. 8 jaar zelfs ... waar heb je het over?) Omdat toén de C compilers net iets sneller waren dan C++. Nu is dat ook niet meer waar.

[edit] Ik betwijfel het zelfs dat jij ooit op enig niveau object oriented geprogrammeerd hebt. Indien dit zo is zou ik suggereren dat we gewoon ophouden met deze discussie.

iterums

Legacy Member
saaner zei:
ik zou graag willen beginnen met programeren
welke taal is een goede opstap naar c++(opbouw,code,....)
programmeren is nog altijd een denkwijze. goede opstap: java, python, (object) pascal

Hale

Legacy Member
S3cT0r zei:


OO is gewoon een duizend keer krachtiger concept dan procedurieel programmeren. om de eenvoudige reden dat OO je toelaat verder weg te abstraheren van de machine implementatie en dichter aan te leunen bij de probleemruimte zelf.
Het is daarom ook dat men op termijn veel meer naar het automatisch code genereren wil evolueren, zodat de programmeur zichzelf eigenlijk alleen moet bezig houden met alles in de juiste (UML - ) diagrammen te gieten.

voor 3D engines etc is het natuurlijk belangrijk dat hier en daar aan low level progging wordt gedaan, maar voor business software is dat de richting waar men heen wil

Hellsgamerz

Legacy Member
IMHO is python een van de enige cross-platform talen, naast C++ (die zoals ik al stelde niet echt een opstap is). Java is leuk en je kan met BlueJ heel goed leren OO denken, maar de VM is voor mij een teken dat het cross-platform nog onderworpen is aan te veel voorwaarden.

Vich

Legacy Member
Dank je Hale :)
... want ik begon stilaan m'n geloof in de mensheid te verliezen :X

Tyfius

Legacy Member
die VM maakt het juist cross platform.
C++ is alleen cross platform op console niveau, en zo kan je ook Java op console niveau cross platform maken zonder de VM.
Eens je met GUI's begint is Java/C# op dit moment de eenvoudigste oplossing ze.

Een goede opstapt is misschien wel PHP, wat afgeleid is van C.
PHP gebruik je voor het maken van dynamische websites, maw, je leert redelijk goed denken kwa programmeren (OO is nog iets anders) en je hebt vrijwel meteen een duidelijk resultaat van wat je nu allemaal gedaan hebt :)

killgore

Legacy Member
S3cT0r zei:
we hebben een winnaar in de categorie" domste reply in de thread".

Heeft vich gezegd dat games puur in C niet bestonden, heeft hij iet gezegd als: "geef me eens 1 game dat volledig in C is geschreven?". Nee, maar toch moet jij (volledig zonder argumenten en met smiley die eigenlijk niet veel blijks van onderbouw in uw argumentatie aantoont) posten: "quake 2, woehaaha, ik ben goed, rofl".

Sorry ze, ma als ge dan toch geen deftige replies kunt geven, houdt er u dan buiten ;).

Moest er even uit.

@tyfius: PHP oop is mssch wel een goede opstap om de hergebruikbaarheid van OO code in te zien, want daarvoor wordt deze vooral gebruikt :).

@hale: knappe verwoording :)

Hale

Legacy Member
een andere manier is natuurlijk ipv een imperatieve taal ( zoals C++ ) een declaratieve taal te leren.
Prolog is er zo één.
Misschien niet het meest ideale om mee te beginnen, maar toch zeker een aanrader om programmeren eens op een heel andere manier te benaderen

wlibaers

Legacy Member
Vich zei:
Heb je de Quake II code ooit al eens bekeken? Die is echt niet zo makkelijk te doorgronden hoor. Anderzijds zijn de Irrlicht en Ogre engine (is wel grafische ipv game engine) dat wel.
Het gaat hem erom dat je OO afschrijft als "totaal overbodig", maar eigenlijk totaal niet weet wat je zegt. Hetzelfde met die Quake II. Als ik bijvoorbeeld Ogre neem en ik bekijk de UML schema's (jaja, OO!), dan snap ik binnen een paar uur hoe die engine werkt. Ik stel voor dat je dit eens met Quake II probeert :D (maar ik betwijfel dat je ooit die broncode uitvoerig bekeken hebt).

De scheidingslijn tussen OO en niet OO is trouwens ook niet altijd even duidelijk te trekken. Quake had structuren die verschillende delen van het spel beschreven, en functies die gemaakt waren om op specifieke structuren te werken. Dat zou je eigenlijk al als OO kunnen beschouwen, weliswaar minder expliciet dan in C++ waar je de functies in de source gewoon in de gegevensstructuren kan zetten. Bovendien heeft C ook functiepointers en setjump/longjump, die polymorfisme en exceptions mogelijk maken (wel een beetje omslachtig).

Er is trouwens niet alleen OO, ook generisch programmeren kan nuttig zijn en complementair met OO (vooral bekend van C++ templates, al boden sommige talen met geavanceerde macro's eigenlijk al lang dezelfde of meer mogelijkheden).

Ibaun

Legacy Member
Hale zei:
een andere manier is natuurlijk ipv een imperatieve taal ( zoals C++ ) een declaratieve taal te leren.
Prolog is er zo één.
Misschien niet het meest ideale om mee te beginnen, maar toch zeker een aanrader om programmeren eens op een heel andere manier te benaderen

Haskell \o/ Is in het begin ongelooflijk raar om een andere denkwijze te gebruiken, dat wel.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan