Archief - [PROG]C++/C# C# Over 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.

Evil_Freaky_BE

Legacy Member
Ik wil beginnen aan een nieuwe taal.

Maar mijn vraag is nu, is het beter om C# te leren inplaats van C++?

Ik heb een beetje gezocht op het internet en dit gevonden:

http://en.wikipedia.org/wiki/C_Sharp

Er staat een lijst (Language features) met verschillen tussen C# en C/C++.
Als ik het zo lees is C# een betere keuzen dan C++.

Maar nu wil ik graag advies aan diegene die er ervaring mee hebben.

Evil_Freaky_BE

Legacy Member
Wel ja, ik zou er graag gemakkelijk mee willen beginnen.
Zou er zowel Windows applications in willen maken en game developement, dus C++ de beste? Of C en geleidelijk overstappen naar C++ er na?

Maar valt C# ook te gebruiken voor gamedev?

Na wat lezen neem ik aan dat C naar C++ gelijk is aan C++ naar C#.
Verbeteringen op bepaalde manieren, restrictions om bugs te voorkomen en enhancements om dingen makkelijker te maken.

Tyfius

Legacy Member
Voor Windows applicaties zou ik vandaag de dag sowieso opteren voor C#. Veel eenvoudiger, properder en sneller dan C++.
Voor gamedev kan je ook bij C# terecht. Niet voor de superdeluxe engine, maar je kan via C# handig gebruik maken van directx, en daar ben je toch ook al een eind mee. Wil je echt van de grond af engines gaan maken enzo ben je nog steeds beter af met C++, maar op een bestaande engine kan je vrij eenvoudig gebruik maken van C#.

De overgang van C naar C++ en van C++ naar C# zoals jij redeneerd is in mijn ogen fout. C# leunt dichter aan bij java kwa opbouw en kwa programmeerstijl dan C++. Waar je in C++ nog duidelijk de referenties ziet naar C is er, volgens mij, weinig tot niets in C# wat je aan C++ doet denken. Het hele concept van de taal is anders.

Evil_Freaky_BE

Legacy Member
Ik zoek een taal met een grote toekomst.

Als ik jou advies bekijk zou C# het beste voor mij zijn.
Welke boeken zijn aan te raden?

Waarschijnlijk zoals ik meestal doe zal ik een boek aankopen bij boekensoft.com maar er zijn niet veel nederlandse boeken beschikbaar (twee, Grand Cru, C# en C# In 24 Uur).

Dus aub ^^, boeken advies graag.

killgore

Legacy Member
ik ken ze alle3 en buiten C vind ik voor allebei nog regelmatig toepassingen (C ook, maar dat zijn zaken waar ik me niet mee bezig houdt).

Waarmee ik zou beginnen? ALs je reeds kan programmeren -> c++, daar leer je echt meer als de pc denken als in c#. Dat is kennis die je zwaar van pas komt, in gelijk welke taal. In c# ga je dan weer de meer probleem-oplossende kant van de zaak directer aanpakken. Deze komt ook in c++ naar buiten, maar slechts weinig mensen bereiken echt dat stadium en blijven hangen op een soort platform tussen c en c++ :).

Tyfius

Legacy Member
Bwa killgore, dat hangt af waar je naartoe wil. Ik ben blij met de C++ kennis die ik heb (en mijn nieuwe job gaat mij nog zeer veel C++ kennis bijbrengen), maar als je nieuw bent en eenvoudig en snel mooie applicaties wil maken ben je volgens mij (en vooral naar de toekomst toe) beter af met C#.

Boeken die ik wel ok vond:
Programming C#
Pro C# 2005 and the .NET 2.0 Platform, Third Edition
Professional C# 2005 (Wrox Professional Guides)
Learning C# 2005: Get Started with C# 2.0 and .NET Programming (2nd Edition)

Shai Hulud

Legacy Member
Zoals anderen al gezegd hebben, het hangt er van af waar je nu staat en waar je naatoe wil.

Als je nog niet echt kan programmaren zou ik met C beginnen, aangezien je geen OO principes moet kennen, en het een aantal fundamentele concepten beter zal illustreren dan C#.

Als je al wat kan programmeren en OO snapt kan je C# kiezen, maar vergeet niet dat je dan vast zit aan Microsoft (Even Mono vergeten).

killgore

Legacy Member
Tyfius zei:
Bwa killgore, dat hangt af waar je naartoe wil. Ik ben blij met de C++ kennis die ik heb (en mijn nieuwe job gaat mij nog zeer veel C++ kennis bijbrengen), maar als je nieuw bent en eenvoudig en snel mooie applicaties wil maken ben je volgens mij (en vooral naar de toekomst toe) beter af met C#.

Kijk, het is een leerproces voor zichzelf, dan moet je echt niet gaan kijken naar 1 progtaal waar je het meest mee bent, maar waar je het conceptueel het meest mee bent momenteel.
C++ is idd minder voor gewone applicatieontwikkeling momenteel, maar het leert je verdomme wel deftig hoe een pc werkt, dat tesamen met beetje computerarchitectuur en je hebt een serieuze basis.

Als je onmiddelijk met c# begint en nooit verder als dat gaat ga je mssch wel wat kunnen maar ik denk dat er dan steeds een niveaubarrière zal zijn waar je niet voorbijgeraakt.

Natuurlijk wilt niet iedereen dat niveau halen, ik zou persoonlijk zot worden moest ek op het gewoon simpel probleemoplossend niveau blijven steken :D.

edit: reken wel dat ik in die post die jij quote duidelijk zei: "als je al kan programmeren".

Evil_Freaky_BE

Legacy Member
Ik zou dan volledig mijn zinnen zetten op C++.

Welke boeken zijn goede aanraders?

killgore

Legacy Member
Nu even niet te snel kiezen, je hebt hier nog maar een paar meningen gehoord.
Ook weten wij niet veel van jou, je hebt wel al min of meer je doel uitgelegd, maar wat voor de rest:
-wat kan je al?
-Hoe lang ben je er al deftig mee bezig.
...

Evil_Freaky_BE

Legacy Member
Ik heb een beetje basic ervaring in C++ (functies, variablen, loops, basis van klassen,...).

Toen ik wat C++ aanleerde heb ik nooit echt iets zinvols gevonden aan OO (heb geleerd hoe ik klassen enzo kon aanmaken, met voorbeelden van katten enzovoort).

Het zal wel zinvol zijn, maar ik heb nog nergens iets gevonden waar ik echt kan begrijpen dat het daar nodig is.

Heb nog nooit iets zinvols geprogrammeerd, alleen maar test programmas om aan te leren.

Heb interessen in alle soorten Windows applications te kunnen programmeren en ook wat interessen in gamedev.

Tyfius

Legacy Member
Die klassen kat, hond, ... kan je bvb wel mooi inpassen in een applicatie voor een dierenkliniek. Je hebt een globale klasse KatAchtigen en bepaalde subklassen zoals Kat, Leeuw, Tijger, ... elk een katachtige maar met afzonderlijke eigenschappen. Het voornaamste dat je hiermee doet (en meer mogelijkheden biedt dan structs en dergelijke meer) is dat je je data beter kan organiseren en afschermen.

Nu moet ik wel zeggen dat in een taal als C++ waar de OO principes niet echt nodig zijn om een applicatie te ontwikkelen en vrij veel procedureel kan gedaan worden het niet altijd eenvoudig is van goede voorbeelden te vinden, zeker niet om in boeken weer te geven of op school uit te leggen. Bij de kleine voorbeelden die je daar gaat zien is het inderdaad vrij nutteloos om voor sommige dingen een hele klasse te gaan schrijven, maar als je met 20 personen aan dezelfde applicatie moet werken en elkaars werk moet implementeren heeft het enorme voordelen.

Het hele concept is zo groot dat er aparte boeken en cursussen voor bestaan die je een algemeen beeld geven. OO in C++ is hetzelfde als OO in C#, PHP, F#, ... alleen de syntax van de taal is anders.

Shai Hulud

Legacy Member
Als je nog niet te veel ervaring hebt zou ik beginnen met C, of niet-OO programmeren in C++.

OO programmeren heeft zeker zijn voordelen, maar het gaat je te veel afleiden van de beginselen.

killgore

Legacy Member
Shai Hulud zei:
Als je nog niet te veel ervaring hebt zou ik beginnen met C, of niet-OO programmeren in C++.

OO programmeren heeft zeker zijn voordelen, maar het gaat je te veel afleiden van de beginselen.

Geef me nu eens 1 goed vb?

edit: @tyfius: er zijn toch vrij belangerijke verschillen tussen bv. c++ en java:
java: Geen pure multiple inheritance (1 klasse + interfaces), geen operator overloading, alles reference based (belangerijk voor polymorfisme!), alles Object-afgeleid.

Tyfius

Legacy Member
Jaja, maar dat klasseer ik onder taal afhankelijke eigenschappen.
Ik doelde meer op de OO principes zelf. Eens je die onder de knie hebt in eender welke taal heb je weinig tot geen problemen meer om in een andere taal te leren werken.

killgore

Legacy Member
Tyfius zei:
Jaja, maar dat klasseer ik onder taal afhankelijke eigenschappen.
Ik doelde meer op de OO principes zelf. Eens je die onder de knie hebt in eender welke taal heb je weinig tot geen problemen meer om in een andere taal te leren werken.

das idd correct, ik vermijd trouwens ook pure multiple inheritance in c++

Shai Hulud

Legacy Member
OO maakt het gemakkelijker om abstracties te maken in je programma.
Je kan in een game engine bijvoorbeeld een klasse maken die verantwoordelijk is om textures in te laden. Die zal dan alle details van het inladen (welke compressie is er gebruikt, waar staat de file?) verstoppen voor de andere code, en de texture inladen.

Je zal in C natuurlijk ook proberen zo'n abstracties op te bouwen, maar het is wel eenvoudiger in OO talen.

Een ander voordeel is inheritance/polymorfisme. Je kan bvb een klasse maken die verantwoodelijk is voor de verbinding met een SQL database. De klasse zal methodes aanbieden om te verbinden en om SQL statements uit te voeren.
Het is duidelijk dat de onderliggende implementatie verschillend zal zijn voor bvb MySQL en Oracle servers.
Je kan dan een kind klasse maken voor elke server die je ondersteunt.
De code die effectief met de DB moet omgaan gebruikt echter de ouderklasse, wat wil zeggen dat je om van DB te veranderen er enkel moet voor zorgen dat een andere kindklasse wordt geladen.
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