Thread: [Discussie] Java vs. C++
-
23-01-2010, 19:57 #16
Zo lees je in C++ iets in
Zo schrijf je in C++ iets wegCode:#include <fstream> #include <iostream> #include <string> using namespace std; int main() { ifstream bestand("test.txt"); string invoer; getline(bestand, invoer); while(!bestand.fail()) { cout << invoer << endl; getline(bestand, invoer); } bestand.close(); return 0; }
Code:#include <fstream> #include <string> using namespace std; int main() { ofstream bestand("test.txt"); bestand << "Een tekst" << endl; bestand.close(); return 0; }no votes
-
-
23-01-2010, 20:25 #17Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
En waarom dan JavaFX? Voor gewone Java hebt ge ook designers. Tenzij je direct richting animaties wil gaan heeft JavaFX geen enkel voordeel tov Java of C#, ik zou zelf eerder zeggen nadelen omdat het toch wel zaken anders aanbrengt.
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
24-01-2010, 00:11 #18
Ik heb ervaring met Java en ben nu bezig met C++.
Mijn voorkeur als taal gaat naar Java omdat deze 100% OOP is, daar waar C++ dingen bestaan als globale functies. Iets waar ik een hekel aan heb.
Qua performance gaat mijn voorkeur naar C++. Om maar te zeggen, ik zit met oude hardware en als je 2 identieke programma's maakt, maar de ene is echt gemaakt voor de hardware waarop je werkt en de andere niet..
Ook voor hardware met elkaar te doen praten zie ik dat niet gebeuren met Java. Het feit dat alles signed is kan ik echt niet bij. Het rare is dat ik overal lees dat Java als doel om op verschillende hardware te draaien en niet aan de bak kwam, maar gered is o.w.v. de applets. Maar Java en hardware, die link kan ik niet maken?
Op gebeid van development moet ik toch terug kiezen voor Java, gezien ik nog maar één keer een externe bibliotheek heb moeten toevoegen om met MySQL te praten. Terwijl ik nu bij C++ niet anders moet doen dan importeren en compilen. Java heeft zo veel ingebakken klassen en dat versnelt het programmeren.
Maar op het gebied van leerrijk is C++ dan toch weer koploper. Er gebeurt zo veel in Java waar ik geen weet van heb. Terwijl ik in C++ kan bewijzen hoe een integer opgeslagen wordt door ze byte voor byte uit te lezen. Foefelen met het geheugen en pointer is echt tof
.
En om dit lijstje volledig af te maken, ik denk dat ik al rap naar C# zal overstappen gezien die het beste van de 2 talen heeft imo
.
no votes
-
24-01-2010, 11:44 #19Member
- Registered
- 03/05/09
- Location
- Heverlee
- Posts
- 103
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
Vind dit een enorm interessante discussie aangezien ik momenteel zelf in een 'talencrisis' zit. Er zijn er zoveel die allemaal hun voordeel hebben. En ik vind het enorm moeilijk om nu te kiezen welke taal ik mij in wil verdiepen. Want er is zodanig veel te leren dat je er , imo , niet voor kan kiezen alles diep te kennen. Om over onderhouden dan nog maar te zwijgen.
Mijn vorige grote projecten waren in C++, aangezien ik voornamelijk focus op games is dit begrijpbaar. Vind het, zoals hierboven gezegd, leuk om te weten wat er allemaal gebeurt. Hoewel pointers eerst een struikerblok waren (prille begin he
) vind ik het gewoon heerlijk om mee te werken. Daarnaast zijn ook de meeste render-engines in C++ of C gedaan, wederom een reden om daar te blijven plakken.
In Java heb ik minder intresse, en zou eigenlijk graag is worden overtuigd waarom ik Java zou willen kunnen. Java is in mijn ogen trager als C++ qua performance en minder diepgaand. Terwijl dat je voor rapid development (de troef van Java tegenover C++ in mijn ogen) dan inderdaad beter uitwijkt naar C# fzo.
Momenteel ben ik met iet totaal anders bezig, ik ben namelijk Haskell aan het verkennen, moest van school uit het begin kennen, maar ben nu toch benieuwd how deep the rabbit hole goes. Nog iemand ervaring met Haskell? En hoe beviel die ervaring?
En om op topic start te reageren: Ik zou beginnen met C++ en dan pas Java. Heb Java wel al is bekeken en het komt over als: C++ maar dan hier en daar iets verstopt. C# is dan nog wat meer verstoppertje spelen.no votes
-
24-01-2010, 12:04 #20Approved 9-lifer
- Registered
- 07/11/03
- Location
- Bxl
- Posts
- 1,626
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/8
Op school (EHB Toegepaste Informatica) zijn we in het eerste jaar enkel bezig met c++. Het voordeel is volgens mij, dat c++ enorm strict is en je hierdoor "verplicht" bent goed te programmeren om iets te laten werken. Het nadeel is dat het allemaal relatief "droog" is. Het eerste jaar zijn we niet anders bezig dan met het maken van console applicaties. Een ander ding dat ik niet zo leuk vindt aan c++ zijn pointers
, het is enorm krachtig, maar volgens mij niet erg evident om het juiste gebruik ervan aan te leren.
Ik kijk wel uit naar Java en/of C#, het meest kijk ik wel uit naar ABAP
aangezien ik mij wil verdiepen in SAP ERP development ^_^
no votes
-
24-01-2010, 12:28 #21Member
- Registered
- 28/09/05
- Posts
- 6
- iTrader
- 0
- Mentioned
- 0 Post(s)
C# en Java hebben het voordeel van rapid development languages te zijn. Ze zijn afgeleiden van C++ die er een hoop uitsmijten. Dit maakt dat je er sneller dingen mee kunt maken, maar je hebt minder bouwstenen om ze te maken. Die beperking is op die manier dus eigenlijk een zegen.
C# en Java gaan altijd trager zijn omdat ze naar een tussentaal worden gecompileerd en, in het geval van C#, op het moment van het runnen door een JIT-compiler worden vertaald, in het geval van Java in een virtual machine wordt gedraaid.
Wat betreft welke taal best eerst wordt geleerd:
C++ is een taal die meer inzicht in het proces vergt. Om het met een bekende quote te zeggen: "C++ gives you all the rope you need to hang yourself."
Dit klopt. Met C++ kan je je geheugen snel verneuken (pardon me the words), hetgeen in C# en Java niet meteen zal lukken, omdat je er geen rechtsreekse toegang tot hebt.
Een ander nadeel van C++ dat wordt aangehaald (Door Fraggie) is dat C++ lastig zou zijn wegens de libraries die je extra moet downloaden en inladen, bijvoorbeeld om te interfacen met mysql.
De reden hiervoor is dat C++ een oudere standaard heeft. Terwijl Java om de zo veel tijd updates krijgt.
De STL (de standaard bibliotheek van C++) is toen gemaakt om een basis te geven. Andere mensen hebben andere ideeën, en specifieke dingen zoals interfaces met mySQL zijn dus door verschillende mensen gemaakt.
Zo'n specifieke zaken horen ook niet in een standaard, aangezien je daardoor bepaalde technologieën voortrekt. Wil je er mee interfacen, gebruik dan een library er voor, of schrijf er zelf een, was de redenering.
Verder zorgt de grote hoeveelheid aan standaard toegevoegde classes van zowel Java als C# voor een zekere bloating. Een hoop data op de computer, die helemaal niet gebruikt wordt.
Daar tegenover staat natuurlijk weer dat het inderdaad wel makkelijker is, zeker voor de developer, om al die zaken meteen tot zijn beschikking te hebben.
Syntactisch is C++ ook niet zo evident. Sterretjes voor of na woorden, ampersands, zeker die ene punt-komma niet vergeten...
De IDE's voor C# en Java maken het ook daar je makkelijker.
Dat komt ook weer deels dankzij de eenvoudigere opzet van de taal, het verwijderen van templates lost een hoop problemen op van het parsen voor auto-aanvulling etc.
Wet Manjak zei over Haskell:
functionele talen zoals Haskell (dat zijn talen die functies als eerste-klasse objecten zien, zoals klassen in C# en Java zijn, dus je werkt er niet met klassen, maar met functies of operaties) hebben een prachtige elegantie die een object-georiënteerde taal niet kan evenaren.
waar je in Java twintig regels voor zou nodig hebben, kan je in een taal als Haskell of Scheme misschien in vijf regels schrijven, dankzij recursie.
Het loont daarom ook om zowel functionele als OO talen te leren, technieken die je in de ene meestal gebruikt kan je ook vaak op een of andere manier in de andere gebruiken.
Nog een laatste punt: betreffende cross-platform ontwikkeling:
Ook C++ is een taal die niet platformafhankelijk is.
Als je alleen de standaard bibliotheek gebruikt (dus een console programma), zal deze op ieder platform draaien, op voorwaarde dat je een compiler hebt voor dat platform.
Op het vlak van compilers zijn er helaas soms wat verschillen. Zaken die VC++ zal compilen zullen niet altijd compilen met G++ bijvoorbeeld, de standaarden worden niet altijd volledig nageleefd, of extra's worden toegevoegd (#pragma once, bijvoorbeeld, is geen onderdeel van de standaard, en als je met iets anders dan VC++ compileerd, moet je je headers nog altijd beschermen met een #ifdef).
Betreffende cross-platform UI's zijn er meerdere op het internet te vinden die op meerdere platforms werken.
Om terug te keren naar de oorspronkelijke vraag:
Wil je snel programma's maken, leer dan Java of C# (of een functionele taal, zeker even goed!)
wil je snelle programma's maken, leer dan C++, maar reken er dan op dat de leercurve een pak steiler is.no votes
-
24-01-2010, 12:35 #22Member
- Registered
- 06/04/06
- Location
- BXL
- Posts
- 4,415
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/40
In Haskell wordt ge plots geconfronteerd met een aantal dingen die radicaal anders zijn. Niet alleen zit ge plots met een type-systeem dat zeer sterk verschilt uit eerdere ervaringen: ADT's, higher-kinded polymorfisme, functies als types, en het statisch typeren van neveneffecten (zoals I/O).
Daar komt bovendien nog eens luie evaluatie bovenop. Vooral dat laatste is theoretisch zeer mooi, maar maakt het lastig om het geheugengerbruik van uw code te beredeneren, vooral als ge uit een meer traditionele programmeertaal komt. Haskell leren is een speciale ervaring, en verloopt (bij mij althans) zeer gefaseerd.I caught a glimpse and now it haunts me.no votes
-
24-01-2010, 13:02 #23Member
- Registered
- 17/07/02
- Location
- Sol System
- Posts
- 10,064
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/78
Om de mythe over de traagheid van Java nog maar eens in perspectief te plaatsen stel ik voor dat je het volgende eens doorneemt : Java pulling ahead? Java versus C++ benchmarks.
PSN: dJeezBE - Delicious bookmarks
Disclaimer: I am currently suffering from severe CSD (Compulsive Sarcasm Disorder). - L'onion fait la farce - Facile largire de alienoPastafarian by choiceno votes
-
24-01-2010, 13:22 #24Member
- Registered
- 06/04/06
- Location
- BXL
- Posts
- 4,415
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/40
Akkoord. Er wordt vaak over de traagheid van Java gesproken in de context van processen die vaak een korte looptijd hebben. In zo'n cases weegt de overhead van een jit-compiler (en de opstarttijd van de VM) inderdaad relatief zwaarder door. Maar gegeven processen met een lange looptijd is die extra opstarttijd en overhead te verwaarlozen. Een jit heeft op langere termijn bovendien veel meer informatie ter beschikking om optimalisaties door te voeren. Als ge in zo'n zaken geïnteresseerd zijt, moet ge de blog van Cliff Click maar eens volgen om te zien wat voor zotte dingen allemaal mogelijk zijn.
Mensen kunnen zagen wat ze willen op Java-de-programmeertaal, maar de HotSpot, het kloppend hart van de JVM is echt state-of-the-art.I caught a glimpse and now it haunts me.no votes
-
24-01-2010, 13:27 #25Member
- Registered
- 03/05/09
- Location
- Heverlee
- Posts
- 103
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
Hier ook wat benchmarks, en wat recenter denk ik. C++ komt er over het algemeen toch beter uit.
speed and size Java 6 -Xint÷C++ GNU g++ | ComputerLanguageBenchmarksGame
Weet wel niet meteen wat het verschil is tussen de verschillende Java stuff. Kan iemand even toelichten wat het verschil is tussen Java 6 - Xint / Server / steady state?no votes
-
24-01-2010, 13:38 #26Member
- Registered
- 06/04/06
- Location
- BXL
- Posts
- 4,415
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/40
no votes
-
24-01-2010, 14:09 #27Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
24-01-2010, 14:19 #28no votes
-
24-01-2010, 14:37 #29Approved 9liver
- Registered
- 18/01/04
- Location
- Melle
- Posts
- 10,535
- iTrader
- 56 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 27/102
Ja, maar maakt dat ze plots wel beter dan globale functies? Ik zie geen verschil tussen
ofCode:String GeefHallo() { return "Hallo"; }
Dat C# dus minderwaardig zou zijn (of minder de voorkeur zou krijgen) tov Java omwille van globale functies is nogal kort door de bocht omdat statische methoden even goed globale functies zijn (zei het verpakt in nog een extra class definitie die hier eigenlijk totaal nutteloos is). In principe staan statische methoden eigenlijk volledig los van de klasse en het object omdat het totaal geen staten/toestanden van het object kan manipuleren, het kan er zelf volledig geen interactie mee aangaan.Code:public class Verteller { public static String geefHallo() { return "Hallo"; } }“In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
PSN: Cycloon - Final Fantasy XIV: A realm reborn characterno votes
-
24-01-2010, 14:44 #30Member
- Registered
- 03/05/09
- Location
- Heverlee
- Posts
- 103
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
no votes

