Archief - C++ leren vanuit voorkennis Java

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.

Exorikos

Legacy Member
Ik krijg de kans als student om mee te werken aan een project, maar het programmeren hiervoor gebeurt in C++. Ik heb zoals velen wel een standaardvak dat Java gebruikt wel gehad. Zijn er veel belangrijke verschillen tussen beide talen wat structuren betreft? Hoe pak ik de overstap het beste aan?

Daedie

Legacy Member
De grootste verschillen zijn de expliciete memory management en pointers in het algemeen. Maar dat zijn ook wel net de moeilijkste aspecten van de taal :p.

C++ is toch nog van een heel ander kaliber om goed onder de knie te krijgen omwille van zijn meer low level karakter. Ge kunt dat dan ook best grondig bijstuderen.

Hier wat meer informatie: Comparison of Java and C++ - Wikipedia, the free encyclopedia

Gurdt

Legacy Member
Mja, idd, wat hierboven gezegd wordt. Het is wel doenbaar hoor, maar je zal toch je denkwijze iets moeten aanpassen tegenover Java.

Memory management: alles wat je dynamisch aanmaakt moet je expliciet verwijderen. Java doet dit in jouw plaats, maar C++ niet. Het komt er grofweg op neer dat je voor elk object waarbij je "new" hebt gedaan, dat je als je het niet meer nodig hebt "delete" moet doen.

En pointers, dat gebeurt in Java ook vanzelf. Een pointer is iets - ter grootte van een integer ofzo - dat wijst naar een andere geheugenplaats. Dat kan een object zijn of een andere pointer, eender wat. Zie het als een soort van shortcut. Je kan hiermee krachtige constructies maken :)

Exorikos

Legacy Member
Raden jullie een boek aan om te beginnen of gewoon online tutorials?

Ik denk aan een boek als: C++ for mathematicians : an introduction for students and professionals. van Chapman en Hall. Het is voor dataverwerking van een experiment, dus het zullen vooral bewerkingen en fits zijn die geprogrammeerd moeten worden. Iemand ervaring met dit boek?

De andere optie is C++ zelf eerst leren en dan bijkomende dingen zelf opzoeken tijdens het programmeren.

Daedie

Legacy Member
Hangt af van de scope van het project en uw vertrouwen in uw programmeervaardigheden en intelligentie :p.

Als die dingen goed meevallen denk ik dat ge u wel kunt behelpen met (goede) online referenties om bij te leren.

Als ge sowieso plannen hebt om u uitgebreid te verdiepen in C++ is een boek natuurlijk wel aan te raden.

edit: ik kom zelf wel van de andere richting, eerst C dan C++ en dan pas Java. Dus kan zijn dat ik het wat onderschat.

NeverwinterX

Legacy Member
Je vindt soms specifieke tutorials (of boeken? dat weet ik niet precies) voor een introductie van C++ als je al Java kennis hebt. Dan wordt er vrij vlug over de delen die analoog zijn met Java gegaan en vooral ingegaan op de verschillen.

c++ for java programmers - Google zoeken
c++ for java developers - Google zoeken

Je zal toch echt wat moeten bijstuderen aan het pointer/memory gedeelte. In het begin zal je dus achterop lopen bij diegenen die al ervaring hebben in C++.

Cycloon

Legacy Member
Pointers e.d. zijn overigens allemaal niet zo moeilijk. Iedereen doet daar nogal fuzzy maar eigenlijk stelt dat allemaal niet zoveel voor. De syntax echter is een stuk uitgebreider en dat is volgens mij het grootste struikelblok. Compiler errors zijn ook niet altijd even duidelijk waardoor je wel eens naast het probleem zit te kijken.

Fodbaddun

Legacy Member
Pointers kunnen wel tricky worden hoor, maar eens je ermee weg bent is het wel te doen. :)

Als je eens zoekt op het internet moet je es de '101 rules' van Sutter bekijken. Eens je wat weg bent met C++ kan dit boek je op weg helpen om clean en fast code te schrijven. Het is erg belangrijk in C++ dat je je aan enkele regels houdt en vooral een consequent en efficiënt gedrag vertoont in het programmeren.

C++ kan al snel erg ingewikkeld worden, maar je moet absoluut niet bang zijn om er aan te beginnen. Gewoon erg veel programmeren, van kleine programma's tot heuse games. Werk object-georiënteerd zoals ik hier ook al gelezen heb, gebruik de STL (Standard Template Library) en leer wat advanced stuff om je code sneller te maken ;)

Als je vragen hebt, mag je altijd mailen ofzo! :)

Exorikos

Legacy Member
Bedankt voor de tips. Als de opdracht concreet wordt (het experiment moet eerst nog slagen) dan zal ik hier vast en zeker met vragen komen, maar nu zal ik hopelijk al een goed eind komen.

Moto

Legacy Member
Wat voor een project is het eigenlijk dat ge C++ nodig hebt ?

Tegenwoordig worden der ook snelle dingen gedaan in functional languages vb Call of Duty MP servers zijn van C++ naar Erlang herschreven (vooral thread-heavy dingen)

Erlang and First-Person Shooters

Cycloon

Legacy Member
Moto zei:
Wat voor een project is het eigenlijk dat ge C++ nodig hebt ?

Tegenwoordig worden der ook snelle dingen gedaan in functional languages vb Call of Duty MP servers zijn van C++ naar Erlang herschreven (vooral thread-heavy dingen)

Erlang and First-Person Shooters

Mja, wat een vergelijking. Een super-multi-core omgeving met very high concurrency en massa's netwerkverkeer die op elk moment kan wegvallen. Zonder de nodige ondersteuning van de gebruikte technologie geraak je daar nooit.

Maar hier gaat het duidelijk over iemand die wil beginnen programmeren. Dan kan je gerust het wiel nog eens opnieuw uitvinden :)

Piroh

Legacy Member
Zijn er eigenlijk veel verschillen met C++ en C? Kbedoel, is het ene moeilijker dan het andere of is da gewoon vergelijkbaar qua moeilijkheid?

Messias.

Legacy Member
Piroh zei:
Zijn er eigenlijk veel verschillen met C++ en C? Kbedoel, is het ene moeilijker dan het andere of is da gewoon vergelijkbaar qua moeilijkheid?

C is simpeler (maar daarom niet eenvoudiger) omdat het een veel kleinere taal is. C++ is geconcipieerd als een superset van C, dat wil zeggen dat het dingen toevoegt aan C, waardoor het heel wat complexer is. Complexer wil daarom niet zeggen moeilijker: omdat C++ nieuwe constructies introduceert zijn veel problemen makkelijker/korter op te lossen dan in gewoon C. Ge betaalt wel een prijs voor die complexiteit: het wordt makkelijker om dingen over het hoofd te zien, en sommige dingen zijn moeilijker te begrijpen.

pieta

Legacy Member
NeverwinterX zei:

indd, ik had er eerlijk gezegd nog nooit van gehoord.. maar als ik bij de vdab kijk kom ik uit op 1 irrelevante job waar ze 'erlang' vragen. Persoonljk weet ik nie of het de moeite is om te bekijken/bestuderen..

Cycloon

Legacy Member
Piroh zei:
Zijn er eigenlijk veel verschillen met C++ en C? Kbedoel, is het ene moeilijker dan het andere of is da gewoon vergelijkbaar qua moeilijkheid?

Het grote verschil is toch wel dat objecten hun intrede doen in C++. C is toch eigenlijk al lang achterhaald. Buiten hier en daar nog wat low level hardware kom je dat echt niet meer tegen. Zelf de echte low level hardware is aan het verdwijnen omdat de meer high level hardware spotgoedkoop is en ook goed presteert.

NeverwinterX

Legacy Member
pieta zei:
indd, ik had er eerlijk gezegd nog nooit van gehoord.. maar als ik bij de vdab kijk kom ik uit op 1 irrelevante job waar ze 'erlang' vragen. Persoonljk weet ik nie of het de moeite is om te bekijken/bestuderen..

Vindt ge het ook vooral interessant vanwege het concurrency gedeelte? Scala en Clojure zijn twee nieuwere talen met ook meer voorzieningen voor concurrency. Maar of ge er veel jobs voor zult vinden... :p

Spijtig eigenlijk dat het vooral functionele talen zijn die speciale (niet zomaar gewoon wat threads) concurrency voorzieningen hebben. Maar ja dat is dan ook niet zonder reden.

(lekker offtopic :p)

Moto

Legacy Member
Maar hier gaat het duidelijk over iemand die wil beginnen programmeren.
tut tut :p
Ik krijg de kans als student om mee te werken aan een project

ah nu zie ik dus dit pas
Het is voor dataverwerking van een experiment, dus het zullen vooral bewerkingen en fits zijn die geprogrammeerd moeten worden

Curve-fittings??, anyways der was laats nog een demo van een nieuwe C++ library om
makkelijk te runnen op de GPU

Wat ge gewoon moet onthouden is, als ge het laat runnen op een multicore-server -> ga parallel,
8 cores -> C++ single-threaded vs .net/java multi-threaded -> .net + java wint altijd
(F#/scala)

ps: kunt natuurlijk ook in de cloud gaan processen

Fodbaddun

Legacy Member
In C++ kunt ge ook multithreaded gaan programmeren, al is dit nie zo simpel. ^^
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