Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] Projectjes om van te leren?

Pagina: 1
Acties:
  • 290 views sinds 30-01-2008
  • Reageer

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
Op een dag weet ge het! Ge gaat C++ leren. Leuk, na een jaar lang in Java te hebben gewerkt, wat C# ervaring opgedaan, heel wat PHP, wilt ge toch eens naar wat geavanceerde dingen gaan, memory management enzo.

Ge begint met wat tutorials, over invoer, uitvoer, klassen, pointers, en van dat soort dingen.

Maar dat is allemaal te simpel, het probleem is: dat soort dingen zijn LANG niet genoeg om vanaf nul een programma ineen te boksen, daarom ben ik dus op zoek naar wat projectjes, al dan niet op SourceForge, waarin simpele programmatjes in C++ gedaan worden.

Ik ging op zoek, waarbij komt ge uit: libpurple (jesus dat is al groot), notepad++ (ook ongelofelijk groot), en projectjes van dat soort grote. Geld om een goed boek te kopen heb ik niet, heb er wel eentje van Java, maar imo gaat het daar teveel over de bespreking van verschillende features van Java en dergelijke, leuk, maar ook weer niet direct bruikbaar irl.

PHP heb ik geleerd door scriptjes aan te passen en aan te passen en aan te passen (enz...). Uiteindelijk hebt ge genoeg kennis om zelf aan de slag te gaan. Bij Java lag het anders, dat heb ik geleerd via school (de basis), en dan voortborduren op mijn 'kennis' (sort of :+ ) van PHP om iets fatsoenlijk ineen te boxen.

Nu is dus de vraag: zijn er simpele projectjes, met een echt doel, waar de source van vrij is, waar ik (en vast een heel deel mede-beginnend-c++-tweakers blij mee zullen zijn)? Of is het direct van die simpele tutorials naar de big stuff?

Going for adventure, lots of sun and a convertible! | GMT-8


  • PhoenixT
  • Registratie: December 2003
  • Laatst online: 15-08 18:51
Planeshift (www.planeshift.it) is een opensource 3D MMORPG, ze staan ook op sourceforge. Ik ben er zelf ook mee bezig en ik heb zelfs nog nooit C++ geleerd. Gewoon naar de code kijken en proberen erachter te komen wat niet klopt. Het is misschien wel leuk voor een beginner om wat simpele bugs proberen op te lossen. Als je beter wordt en de codebase kent kun je misschien zelfs developer worden om je skills hoog te houden.

Veel succes met je keuze :)

With PlaneShift since 2003. WC-Grid ftw!


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
PhoenixT schreef op maandag 15 oktober 2007 @ 23:58:
Planeshift (www.planeshift.it) is een opensource 3D MMORPG, ze staan ook op sourceforge. Ik ben er zelf ook mee bezig en ik heb zelfs nog nooit C++ geleerd. Gewoon naar de code kijken en proberen erachter te komen wat niet klopt. Het is misschien wel leuk voor een beginner om wat simpele bugs proberen op te lossen. Als je beter wordt en de codebase kent kun je misschien zelfs developer worden om je skills hoog te houden.

Veel succes met je keuze :)
Direct DX enzo :+ dat is me echt wat te moeilijk, desalniettemin ga ik er toch even naar kijken :)

Going for adventure, lots of sun and a convertible! | GMT-8


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 06-11 12:24

koli-man

Bartender!!!!

Begin dan met je eigen notepad. En dan niet de notepad++ maar de oldskool windows notepad....

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • DEVoTi0N
  • Registratie: Mei 2005
  • Laatst online: 11:22
koli-man schreef op dinsdag 16 oktober 2007 @ 13:30:
Begin dan met je eigen notepad. En dan niet de notepad++ maar de oldskool windows notepad....
Inderdaad. Probeer gewoon even het een en ander uit. Dat er al lang een beter alternatief is maakt niet uit, doe het gewoon om van te leren. Vooral omdat je c++ ervaring nog vrij beperkt is, kan je er veel van leren als je iets kleins van de grond af opbouwt. Kom je toch alle aspecten tegen enzo. Dan kan je later altijd nog aan iets groots meedoen ;)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 27-11 20:42
Zo te horen heb je net geleerd hoe pointers etc werken, maar heb je nog totaal niet gekeken naar bijvoorbeeld Win32 of MFC; misschien moet je daar eens mee beginnen. Voor Win32 zijn genoeg tutorials op te lepelen met Google. Daarmee kun je dan heel eenvoudig een notepad-variant in elkaar zetten. Je begint met een tekstvak in een venster, daarna bouw je er menuutjes, bestand laden/opslaan etc bij. Succes! :)

Verwijderd

Misschien een simpele packetsniffer, met gebruik van libpcap/Winpcap.
Zijn we ze zelf voor het vak security mee in de weer geweest en het is best leuk (welliswaar met Java :+, maar goed) om eens mee te frutselen!

  • Xyzar_
  • Registratie: September 2007
  • Laatst online: 01-09-2014
Maar als je C kent, en even uitzoekt en begrijpt hoe de toegevoegde functionaliteit van C++ werkt, dan ben je er toch al lang? Het is even wennen aan hoe C++ met objecten en pointers omgaat, en je moet jezelf aanleren om je meuk netjes op te ruimen (destructors, woeiii)

maar verder?
de meeste library-dingen (zoals hierboven genoemd: netwerkdingen, DX) werken toch wel ongeveer hetzelfde als in Java, en specefieke dingen moet je toch altijd opzoeken.
(ik vergeet ook iedere keer weer hoe een socket nou ook al weer precies werkt, maar ik weet heus wel hoe het concept van socket programmeren in elkaar zit. om maar even aan te geven dat je de grote lijnen enzo moet weten, en de rest komt wel.)

Ik zelf heb een jaar of 2 geleden C geleerd met behulp van het prachtige boek 'The C Programming Language', en later C++, zonder boeken ofzo. Wat uitleg, wat uitzoeken, en wat proberen met simpele voorbeelden (vooral met pointer is het nuttig om het te proberen met eenvoudige dingen, die je later kan toepassen in grotere projecten)


Als je OO kan programmeren dan kan je dat toch in iedere taal? :)

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
koli-man schreef op dinsdag 16 oktober 2007 @ 13:30:
Begin dan met je eigen notepad. En dan niet de notepad++ maar de oldskool windows notepad....
Daar kan je toch niet zomaar de source van inzien?

Engineering is like Tetris. Succes disappears and errors accumulate.


  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 19-11 23:52
er is wel ergens op de microsoft site een "tutorial" hoe je wordpad namaakt, met sourcecode erbij. Is misschien ook wel leuk om te doen.

hallo


  • Toolskyn
  • Registratie: Mei 2004
  • Laatst online: 28-11 14:24

Toolskyn

€ 500,-

Xyzar_ schreef op dinsdag 16 oktober 2007 @ 17:09:
Maar als je C kent, en even uitzoekt en begrijpt hoe de toegevoegde functionaliteit van C++ werkt, dan ben je er toch al lang? Het is even wennen aan hoe C++ met objecten en pointers omgaat, en je moet jezelf aanleren om je meuk netjes op te ruimen (destructors, woeiii)
Hij kent nog geen C, maar C# (en dat ligt toch meer op het niveau van Java).

Wordpad broncode kun je trouwens hier downloaden:
http://msdn2.microsoft.co...rary/51y8h3tk(VS.80).aspx

[ Voor 11% gewijzigd door Toolskyn op 16-10-2007 20:27 ]

gewooniets.nl


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 29-11 16:17

BoAC

Memento mori

Helper sites: www.codeguru.com en www.codeproject.com :)

Het beste is om zelf met iets te beginnen. Bijv een mp3 player ofzo :)

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

de linux kernel

Het is wel C-code, maar je leert heel veel bij over OS'en en over C.
De meeste functionaliteit zit behoorlijk afgesplitst per file dus je kan jezelf gerust even onderdompelen in bvb de netwerk code, memory management, scheduling of andere stukken.

Qua documentatie kon ik tot nu toe ook niet klagen. Meestal wordt het je wel duidelijk als je er even op kijkt en bij de belangrijke dingen staat meestal wel wat commentaar.

Ik kan je een opensource projectje van mezelf misschien ook wel aanbevelen. Stukje C++ code van 2jaar geleden of zo: google maar eens op serverchecker. Codebase is niet heel groot, gebruikt MFC/WIN32, sockets, threads en een eenvoudig algoritme.

ASSUME makes an ASS out of U and ME


Verwijderd

Inspelend op Highguy, wellicht leuk om dan eens een boek als dat van Tanenbaum (Operating Systems, design and implementation) aan te schaffen, bijzonder leerzaam (wel vrij taaie kost, redelijk monotoom geschreven) mbt. memory managment en concurrency (kappersprobleem, semaforen).

Verwijderd

nou we beginnen met helloworld ;)

neh jk ;) ik heb zelf c++ geleerd door gewoon zelf dingen te bedenken. en dan aan de hand van tutorials en documentatie je hele programma in elkaar flansen. zo ben ik ook ooit bezig geweest met een simpel notepadje, een programmatje om de kosten voor mijn motor restauratie project bij te houden, een simpel boekhoudprogrammatje te schrijven waarin ik mijn eigen uitgaven en inkomsten kon bijhouden. dat vervolgens gekoppeld aan een online database, boekhoud programmatje uitgebreid, etc. en zo gewoon langzaam je programma opbouwen en uitbreiden.

meteen in de source van een groot project springen kan natuurlijk ook, maar dat is niet altijd even overzichtelijk en goed gedocumenteerd. mocht je dat toch graag doen kan je het beste dat class voor class bekijken. wanneer het goed gemaakt is zal iedere class gewoon zijn eigen functies binnen het programma hebben. zo kan je iedere class los gaan bekijken en gaan kijken wat hij doet, en dan zo class voor class nakijken wat het doet. eventueel de hele source "jatten" en 1 van de classes zelf herschrijven en zo ook weer class voor class omzetten naar je eigen programma.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:17
Xyzar_ schreef op dinsdag 16 oktober 2007 @ 17:09:
Maar als je C kent, en even uitzoekt en begrijpt hoe de toegevoegde functionaliteit van C++ werkt, dan ben je er toch al lang?
Sorry maar ik schoot bij het lezen van die zin even in de lach. Ik vind dat zelf nogal een understatement om eerlijk te zijn.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

:D
Idd. Daar gaan toch wel enkele jaren overheen. En zelfs de meeste senior C++ developers kennen alle ins en outs niet eens (maar dat hoeft dan ook niet voor het dagelijkse werk)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
En dan heb je nog van die leuke dialecten, zoals Managed C++ van Microsoft. (Ben ik nu mee aan het kutten in VS 2005.)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je bedoelt C++/CLI. Managed C++ (die van 2002 en 2003) is ruk en deprecated.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Xyzar_
  • Registratie: September 2007
  • Laatst online: 01-09-2014
@farlane & .oisys: ok, toegegeven, ik leer ook nog steeds dingen bij als ik in C++ bezig ben, maar om er mee uit de voeten te kunnen en in ieder geval ((semi-)serieus) aan de slag te kunnen heb je toch wel genoeg aan kennis van C, OO en de basic features van C++ lijkt me.

Ik iig wel, met de basis van C kennis en een paar jaar OO programmeren en ontwerpen kon ik met een paar lesjes (met minimale uitleg) aan de slag en zonder al teveel moeite tamelijk compleze programma's bouwen.

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
.oisyn schreef op woensdag 17 oktober 2007 @ 11:26:
Je bedoelt C++/CLI. Managed C++ (die van 2002 en 2003) is ruk en deprecated.
Inderdaad, ik bedoel C++/CLI.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Xyzar_ schreef op woensdag 17 oktober 2007 @ 13:09:
Ik iig wel, met de basis van C kennis en een paar jaar OO programmeren en ontwerpen kon ik met een paar lesjes (met minimale uitleg) aan de slag en zonder al teveel moeite tamelijk compleze programma's bouwen.
Je kan met alleen C kennis ook wel een compleet programma in C++ bouwen. Dat wil dan natuurlijk nog niet zeggen dat je de taal ook kent en dat je alle gebruikelijke paradigima's toepast. Want hou jij je dan bezig met const-correctness, RAII en exception-safe programming (om maar eens wat te noemen)? Of hanteer je gewoon een C-with-classes stijl?

Er zijn maar relatief weinig mensen die kunnen antwoorden wat de output moet zijn van het volgende programma, en waarom:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>

struct A { };
struct B : A { };

void foo(char) { std::cout << "foo(char)" << std::endl; }
void foo(A) { std::cout << "foo(A)" << std::endl; }

template<class T> void bar(T t)
{
    foo(t);
}

void test1()
{
    bar(123);
    bar(B());
}

void foo(int) { std::cout << "foo(int)" << std::endl; }
void foo(B) { std::cout << "foo(B)" << std::endl; }

void test2()
{
    bar(123);
    bar(B());
}

int main()
{
    test1();
    test2();
}

[ Voor 34% gewijzigd door .oisyn op 17-10-2007 13:55 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • SH4D3H
  • Registratie: Juni 2004
  • Laatst online: 04-10 13:25
.oisyn schreef op woensdag 17 oktober 2007 @ 13:37:
[...]
Er zijn maar relatief weinig mensen die kunnen antwoorden wat de output moet zijn van het volgende programma, en waarom:
Copy-paste-compile mag niet zeker? :+

Edit:
Maar ik ben trouwens ook behoorlijk geinteresseerd voor wat de TS zegt :)
Heb zo'n vreselijk dik boek over de taal, maar hoe je een leuk (lees nuttig) programma maakt staat er dan weer niet in :+

[ Voor 27% gewijzigd door SH4D3H op 17-10-2007 14:09 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oh ga je gang, 75% kans dat jouw compiler het ook fout doet :Y). 't Gaat je echter niet helpen bij het waarom natuurlijk :)

[ Voor 32% gewijzigd door .oisyn op 17-10-2007 13:57 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Adion
  • Registratie: Januari 2001
  • Laatst online: 18:53
.oisyn schreef op woensdag 17 oktober 2007 @ 13:56:
Oh ga je gang, 75% kans dat jouw compiler het ook fout doet :Y). 't Gaat je echter niet helpen bij het waarom natuurlijk :)
Weet jij het dan, en is dit dan wel volledig vastgelegd door de c++ specificatie?

Zelf zou ik denken dat bar(123) in test1() tijdens het compileren al niet zal lukken, omdat 123 zonder meer erbij een int is, omdat dan de template functie bar op dat moment als int gecompileerd wordt.
foo(int) kan dan misschien wel naar foo(char) worden geleid, met een warning over de int->char conversie.
bar(B) geeft dan denk ik foo(A) als resultaat, omdat foo(B) nog niet bekend is daar, en C van boven naar beneden compileert.

De tweede test ben ik niet zo zeker van, omdat ik niet weet of hij zo'n template functie effectief uitschrijft en compileert voor elk type dat hij tegenkomt, of dat dit elke keer opnieuw gebeurd als ze opgeroepen wordt.

VirtualDJ 2024 - Fast Image Resizer - Instagram


  • user109731
  • Registratie: Maart 2004
  • Niet online
.oisyn: zou je 'm misschien (in een spoiler/dm) kort uit kunnen leggen? Ik heb wel een idee, maar van templates heb ik weinig kaas gegeten dus dat zal wel niet kloppen.

En als er 75% kans is dat de compiler het ook fout doet, kan ik daar ook niet op vertrouwen :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

spoiler:
Het antwoord is:
foo(char)
foo(A)
foo(char)
foo(B)

Het sleutelwoord hier is two-phase name lookup. In de templatefunctie bar<T>(T t) wordt foo(t) aangeroepen. Er zijn meerdere overloads voor foo, en t is een zogenaamd dependent type. Bij de definitie van bar() is nog niet bekend wat t is, en dus ook niet welke kandidaten voor foo van toepassing zijn. Two-phase name lookup stelt dat er wordt gekeken naar alle definities van foo zichtbaar vanuit de scope van bar() op het moment dat bar() gedefinieed is (definition time) (dit is de eerste fase), en alle overige foo's in de namespaces geassocieerd met T die bekend zijn bij de instantiatie van bar<T> (instantiation time) (tweede fase).

Tijdens definition time zijn alleen foo(char) en foo(A) bekend. char en int zijn built-in types en hebben daarom geen associated namespaces, dus de tweede fase in de lookup gaat niet op. In zowel test1() als test2() wordt foo(char) dus gekozen bij een aanroep van bar(int), omdat dat simpelweg de beste bekende kandidaat is - de definitie van foo(int) is gewoon niet zichtbaar.

Voor het type B, echter, is het anders. Deze heeft de globale namespace geassocieerd (aangezien hij daarin is gedefinieerd), wat betekent dat er tijdens instantiaton time ook wordt gekeken naar alle bekende foo's in de global namespace. Tijdens de instantiation time in test1() is er nog geen foo(B) bekend, dus foo(A) wordt aangeroepen. In test2() is dat anders, omdat er dan wél een foo(B) bekend is.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

dat noem ik vieze code ;) heel erg bah :D maarja er zijn vast wel scenarios waar dit nut kan hebben, al kan ik ze nu ff niet bedenken ;)

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 29-11 16:17

BoAC

Memento mori

Dat is idd een valkuil van template-classes.. de tijd van definitie van classes en functies compile-time gezien :P
Verwijderd schreef op woensdag 17 oktober 2007 @ 20:44:
dat noem ik vieze code ;) heel erg bah :D maarja er zijn vast wel scenarios waar dit nut kan hebben, al kan ik ze nu ff niet bedenken ;)
Naar mijn bescheiden mening niks vies.. zelfs erg handig :)

[ Voor 3% gewijzigd door BoAC op 17-10-2007 20:54 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Vooral de tweede fase is zelfs essentieel, omdat anders dingen als dit al niet meer zouden werken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <set>

struct MyVal
{
    int i;
};

bool operator<(const MyVal & a, const MyVal & b)
{
    return a.i < b.i;
}

int main()
{
    std::set<MyVal> mySet;
    MyVal a = { 0 };
    MyVal b = { 1 };
    mySet.insert(a);
    mySet.insert(b);
}

Als er alleen dingen werden opgezocht tijdens definition time dan zou er geen operator<() gevonden werden die geschikt was voor MyVal.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 28-11 09:35

leuk_he

1. Controleer de kabel!

Wat voor project je ook kiest, zorg ervoor dat je een programma kiest dat je ook zelf zou draaien, of een of andere tool die je zelf ook min of meer nodig hebt.

Ook proberen een project te keizen dat neit teveel exterene libraries gebruikt, want anders wordt het weer zo'n uitdaging alles te compileren.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • Oguz286
  • Registratie: Juni 2002
  • Laatst online: 23-11 09:38
PhoenixT schreef op maandag 15 oktober 2007 @ 23:58:
Planeshift (www.planeshift.it) is een opensource 3D MMORPG, ze staan ook op sourceforge. Ik ben er zelf ook mee bezig en ik heb zelfs nog nooit C++ geleerd. Gewoon naar de code kijken en proberen erachter te komen wat niet klopt. Het is misschien wel leuk voor een beginner om wat simpele bugs proberen op te lossen. Als je beter wordt en de codebase kent kun je misschien zelfs developer worden om je skills hoog te houden.

Veel succes met je keuze :)
Ik heb altijd moeite met het lezen en begrijpen van andermans code, zeker op zo'n schaal. Hoe zou je zoiets kunnen aanpakken? Want het zou de TS en mij wel helpen om andermans projecten te snappen en ervan te kunnen leren :)

  • Xyzar_
  • Registratie: September 2007
  • Laatst online: 01-09-2014

  • StijnH
  • Registratie: December 2005
  • Laatst online: 21-11 11:58
Ben zelf ook nog met C++ bezig geweest, heb er 2 boeken van (Grand Cru en een basisboek). Niet echt in doorgedaan, wss door mijn (toen nog) jonge leeftijd.
Ik gebruikte Dev-C++ en daar zaten enkele voorbeelden bij. Als ik me goed herinner, ook een notepad-like voorbeeld.

Mvg,
Stijn
Pagina: 1