Archief - Java vs C++/Qt

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.

matsg

Legacy Member
Hey,

Ik heb vorig jaar de basis van C en C++ gehad op school en dit jaar kregen we normaal de keuze tussen Java of C#. Toen dacht ik meteen aan Java, omdat ik zelf op een Mac werk en liever crossplatform ontwikkel. Nu krijgen we echter ook de mogelijkheid om voor C++/Qt te gaan, wat me niet oninteressant lijkt.
Op het eerste zicht lijkt mij dat je met Qt mooiere resultaten kunt behalen die veelal ook sneller werken, maar dat Java gemakkelijker is en er meer documentatie over beschikbaar is. Ik twijfel dus nog steeds tussen beide.
Hebben jullie enige ervaring met die twee en welke beviel jullie beter of zou je aanraden?

Alvast bedankt. :)

Bubbling Zombie

Legacy Member
oh dear :unsure:

krijgt ge ook nog deftige lessen "hoe develop ik in OO?" Indien ja - java (in b/4/ 'c is ook OO' - als leerling kunt ge beter java dan oo hebben omdat abstracter is, ge verkloot geen tijd met pointers e.d.). Anders - c++ en QT. Java zulde later nog genoeg moeten doen wschl.

forloRn_

Legacy Member
Kan je dat op een iets coherentere manier formuleren Zombie? Ik kan namelijk niet echt volgen.

Ik zal straks ook mijn duit in het zakje doen, eerst avondschool.

dJeez

Legacy Member
Zonder te flamen kan je wel aanraden te kijken naar wat de markt vraagt. C++/Qt ligt niet goed in de markt (alle voordelen die het heeft ten spijt), Java en C# echter wel.

BTW Om uw keuze nog moeilijker te maken : ooit al gehoord van Mono? C# is dan ook nog een optie (hoewel Mono uiteraard steeds achterloopt op het .NET platform) :p

En om 't compleet te maken : er zijn ook Qt bindings voor Java en Mono...

Bubbling Zombie

Legacy Member
dJeez zei:
Zonder te flamen kan je wel aanraden te kijken naar wat de markt vraagt. C++/Qt ligt niet goed in de markt (alle voordelen die het heeft ten spijt), Java en C# echter wel.

BTW Om uw keuze nog moeilijker te maken : ooit al gehoord van Mono? C# is dan ook nog een optie (hoewel Mono uiteraard steeds achterloopt op het .NET platform) :p

En om 't compleet te maken : er zijn ook Qt bindings voor Java en Mono...

Mono moet ge vooral aanraden aan de menzen ja, naargelang dat dat kwaliteit enzo bied <_<.

Wat ik wou zeggen: met java moet je niet zo rond al die "beperkingen" van de taal werken, pointers en dergelijke. Je kan je ipv met geheugenbeheer ed bezighouden met de architectuur.

forloRn_

Legacy Member
Als je rekening houdt met je inzetbaarheid op de arbeidsmarkt zou je voor VB .NET, C# of Java moeten kiezen, in die volgorde.

Als je voor C++ gaat, zijn je opties minder talrijk: waarschijnlijk legacy apps onderhouden of embedded systems programmeren. Die taal is gewoon niet aantrekkelijk meer voor de toepassingen die tegenwoordig het populairst zijn: webapplicaties. Het ding bestaat al sinds 1979 en buiten een hoopje containers en algoritmes is er nog altijd geen deftige standard library. Hoe is dat nu mogelijk? Reflection, dat tegenwoordig zo populair is in de frameworkjes, heeft het ook al niet.

De toekomst van Qt zie ik ook somber in: wie gaat dat nog gebruiken om desktopapplicaties te schrijven als je met VB/C#/Java hetzelfde kan doen in pakweg 20% van de tijd, met veel minder (geheugengerelateerde) bugs. Bovendien gaan ze die zaken in de toekomst toch declaratief maken, zodat je geen duizenden lijnen code moet schrijven om GUI te maken.

Ik ben tegenwoordig ook weer wat intensiever met C++ bezig, enerzijds omdat ik op het werk effectief zo'n legacy app moet onderhouden, en anderzijds omdat ik me wat meer met het programmeren met spelletjes wil bezighouden. Mijn voornaamste probleem met C++ is dat de taal zo complex en uitgebreid is, terwijl dat niet altijd tot betere code leidt. Voor die templates moet ik altijd eventjes gaan zitten, impliciete conversies, expliciete conversies, typedefs en operator overloading maken de code onleesbaar, en het allocaten/deallocaten van geheugen is allesbehalve evident. Smart pointers okee, maar dan stop je nog wat meer van die <>-rommel in je code, zodat je weer wat gaat typedeffen. Initializer lists: hadden ze dat nu niet wat eleganter kunnen oplossen, op wat trekt dat nu zeg? Je hebt drie fucking statements nodig om een int aan een string te plakken! En die iterators zijn in pakweg Java toch ook een stuk eenvoudiger dan dat begin() en end()-gezeik.

Voor de rest amuseer ik me er trouwens wel mee.

VB.NET raak ik van mijn leven niet aan: ik wil programmeren, geen fucking boeken zitten typen tot ik zulke forsbollen op mijn vingers heb.

Met C# heb ik ook nog niet gewerkt, en ik ben het niet van plan ook niet. Naar het schijnt hebben ze alles gewoon van Java afgekeken en er wat verbeteringen aan aangebracht. Tot daar alles okee, maar dat het enkel voor Windows geschikt is, staat me helemaal niet aan (jaja, Mono), en ze hebben er toch weer die operator overloading ingestopt zeker! En wat is dat met die hoofdletters allemaal? Die naming conventions van Java waren toch goed?

Java, tot slot. Ja, een verademing ten opzichte van C++ omdat je inderdaad meer kan focussen op het design en minder met de taal zelf moet vechten. Er zitten hier en daar wat design flaws in en hun backwards compatibility mogen ze ondertussen wel eens gaan ditchen. Er is zodanig veel wildgroei van frameworks zodat je door de bomen het bos niet meer ziet. Ze zijn die taal ook weer zo complex aan het maken dat we binnenkort weer met een nieuwe C++ zitten. Closures? Ik ben eerlijk gezegd tijdens het programmeren nog nooit een probleem tegengekomen waarvan ik dacht: "hmm, hiervoor zouden closures wel handig kunnen zijn."

Ik heb al goede dingen gehoord over Python, dus als ik nog eens een taal leer, zal het die zijn.

Wat ik hier neergepend heb, is ook niet bepaald coherent te noemen, maar ik moet dan ook dringend mijn bed in kruipen. Je moet zelfde de voordelen en nadelen van elke taal eens afwegen en kijken of je plezier dan wel werkzekerheid verkiest. En de meningen van de mensen boven en onder mij ook in beschouwing nemen, natuurlijk.

Moto

Legacy Member
Met C# heb ik ook nog niet gewerkt, en ik ben het niet van plan ook niet. Naar het schijnt hebben ze alles gewoon van Java afgekeken en er wat verbeteringen aan aangebracht
Naar het schijnt? amai wat een nogal sterk onderbouwde beschrijving van c# :ironic:

matsg: als ge toch een mac-type zijt dan zult ge u wel beter thuisvoelen in de java-community :p

Tyfius

Legacy Member
forloRn_ zei:
Als je rekening houdt met je inzetbaarheid op de arbeidsmarkt zou je voor VB .NET, C# of Java moeten kiezen, in die volgorde.

Als je voor C++ gaat, zijn je opties minder talrijk: waarschijnlijk legacy apps onderhouden of embedded systems programmeren. Die taal is gewoon niet aantrekkelijk meer voor de toepassingen die tegenwoordig het populairst zijn: webapplicaties. Het ding bestaat al sinds 1979 en buiten een hoopje containers en algoritmes is er nog altijd geen deftige standard library. Hoe is dat nu mogelijk? Reflection, dat tegenwoordig zo populair is in de frameworkjes, heeft het ook al niet.

De toekomst van Qt zie ik ook somber in: wie gaat dat nog gebruiken om desktopapplicaties te schrijven als je met VB/C#/Java hetzelfde kan doen in pakweg 20% van de tijd, met veel minder (geheugengerelateerde) bugs. Bovendien gaan ze die zaken in de toekomst toch declaratief maken, zodat je geen duizenden lijnen code moet schrijven om GUI te maken.

Ik ben tegenwoordig ook weer wat intensiever met C++ bezig, enerzijds omdat ik op het werk effectief zo'n legacy app moet onderhouden, en anderzijds omdat ik me wat meer met het programmeren met spelletjes wil bezighouden. Mijn voornaamste probleem met C++ is dat de taal zo complex en uitgebreid is, terwijl dat niet altijd tot betere code leidt. Voor die templates moet ik altijd eventjes gaan zitten, impliciete conversies, expliciete conversies, typedefs en operator overloading maken de code onleesbaar, en het allocaten/deallocaten van geheugen is allesbehalve evident. Smart pointers okee, maar dan stop je nog wat meer van die <>-rommel in je code, zodat je weer wat gaat typedeffen. Initializer lists: hadden ze dat nu niet wat eleganter kunnen oplossen, op wat trekt dat nu zeg? Je hebt drie fucking statements nodig om een int aan een string te plakken! En die iterators zijn in pakweg Java toch ook een stuk eenvoudiger dan dat begin() en end()-gezeik.

Voor de rest amuseer ik me er trouwens wel mee.
True.
forloRn_ zei:
VB.NET raak ik van mijn leven niet aan: ik wil programmeren, geen fucking boeken zitten typen tot ik zulke forsbollen op mijn vingers heb.
Amen.
forloRn_ zei:
Met C# heb ik ook nog niet gewerkt, en ik ben het niet van plan ook niet. Naar het schijnt hebben ze alles gewoon van Java afgekeken en er wat verbeteringen aan aangebracht. Tot daar alles okee, maar dat het enkel voor Windows geschikt is, staat me helemaal niet aan (jaja, Mono), en ze hebben er toch weer die operator overloading ingestopt zeker! En wat is dat met die hoofdletters allemaal? Die naming conventions van Java waren toch goed?
I beg to differ. Ik vind persoonlijk de naming conventions van Java brak. Ik heb ervaring met beiden, al heb ik de laatste 4 jaar geen Java meer aangeraakt en ik ben toch vrij tevreden van C#. Zelfs als het cross-platform moet zijn zal ik, zover mogelijk, WPF wordt bijvoorbeeld (nog) niet ondersteund door Mono, maar al de nieuwe C# 3.5 en zelfs al de 4.0 features zijn beschikbaar. De laatste versie van het boek Pro C# 2008 something something heeft zelfs een hoofdstuk aan Mono gewijd.
forloRn_ zei:
Java, tot slot. Ja, een verademing ten opzichte van C++ omdat je inderdaad meer kan focussen op het design en minder met de taal zelf moet vechten. Er zitten hier en daar wat design flaws in en hun backwards compatibility mogen ze ondertussen wel eens gaan ditchen. Er is zodanig veel wildgroei van frameworks zodat je door de bomen het bos niet meer ziet. Ze zijn die taal ook weer zo complex aan het maken dat we binnenkort weer met een nieuwe C++ zitten. Closures? Ik ben eerlijk gezegd tijdens het programmeren nog nooit een probleem tegengekomen waarvan ik dacht: "hmm, hiervoor zouden closures wel handig kunnen zijn."

Ik heb al goede dingen gehoord over Python, dus als ik nog eens een taal leer, zal het die zijn.
Python is handig, snel en eenvoudig. Ik heb nu zelf hier thuis al liggen experimenteren met Ruby (gewoon de taal, niet het oR framework) want Ruby is echt puur OO terwijl je met python nog redelijk wat procedureel kunt doen. Ik zou het niet meteen gebruiken om echte applicaties in te schrijven maar als scripting taal voor hopen helper scriptjes zijn beiden ideaal.

Bubbling Zombie

Legacy Member
eigenlijk zou ik het gewoon moeten laten vallen bij "naar't schijnt" maar kom, 't is om een noobke wa verder te helpen é

- c# is inderdaad afgeleid van java, so fucking what? gaan we weer de retarded "omg MFC is teh only true windows programming y0" toer op? En als we dat nog verder gaan doortrekken: omg java is afgeript van c++! dat op zijn beurt van c!
- ja, er is vanalles mis met de java naming convention. maar dat maakt geen twee fucks uit zolang het consistent is in de applicatie/taal.
- vb.net is serieus minder in gebruik dan je zou denken. wij zitten in een vrij grote pro microsoft shop waar niks draait in vb.net (merk op, vba zeg ik niks van :p). dus om te zeggen "ja, daar ga je zeker werk mee vinden" is misschien wat overdreven
- over python moet ik u gelijk geven, alhoewel het in mijn ogen geen voordelen heeft tegenover de andere scriptingstalen.

forloRn_

Legacy Member
Moto zei:
Naar het schijnt? amai wat een nogal sterk onderbouwde beschrijving van c# :ironic:

matsg: als ge toch een mac-type zijt dan zult ge u wel beter thuisvoelen in de java-community :p

De pot verwijt de ketel: sterke tegenargumenten die je daar hebt. Bovendien citeer je me nog verkeerd ook. Join the debate team. :lol:

Mijn voornaamste problemen met C# staan er, voor de rest kijk ik er niet op neer, integendeel. Ook niet op Java of C++ (die doe ik zelf met veel plezier), wel op VB want dat is een stuk onleesbare rommel.

Wat die naming conventions betreft: geef me eens een goeie reden waarom methods met een hoofdletter beginnen in C#. Vind je ook niet dat dat op een constructor lijkt dan? En waarom beginnen public fields met een hoofdletter en protected/private fields met een kleine letter? Als je ze kan aanroepen is het goed, en als je ze niet kunt aanroepen, komt de compiler klagen. Voor de rest maakt die visibility toch geen lor uit zeker.

Bubbling Zombie

Legacy Member
forloRn_ zei:
Voor de rest maakt die visibility toch geen lor uit zeker.

als ge er van uit gaat dat iedereen zich even hard gaat houden aan de OO principes is dat dik in orde.

Maar met zo'n uitspraken twijfel ik daaraan.

Moto

Legacy Member
De pot verwijt de ketel: sterke tegenargumenten die je daar hebt. Bovendien citeer je me nog verkeerd ook. Join the debate team.
Met C# heb ik ook nog niet gewerkt, en ik ben het niet van plan ook niet. Naar het schijnt hebben ze alles gewoon van Java afgekeken en er wat verbeteringen aan aangebracht./QUOTE]

Alles gewoon van Java afgekeken is typische Java-evangelisten praat, dat dan gewoon maar hier komen herhalen zonder kennis van zaken is een beetje dwaas imo.

Zal de wikipedia pagina der eens bijhalen -> C Sharp (programming language) - Wikipedia, the free encyclopedia)

Influenced by: Object Pascal, C++, Modula-3, Java, Eiffel, C
Influenced: F#, Nemerle, D, Java, Vala, Windows PowerShell

En dan vooral influenced Java, C# was een beetje een wake-up call voor Sun, der was eindelijk eens concurrentie en in de nieuwe versies van Java zitten er gewoon language-features die uit C# zijn afgekeken.
Dus als Java programmeur moogt ge blij zijn dat er C# is en andersom ook, wat gezonde competitie gaat voor ons allemaal goed zijn.

Wat die naming conventions betreft: ...
Dat lijkt mij een eindeloze discussie, iedereen gaat toch verdedigen wat hij gewoon is om te gebruiken

NeverwinterX

Legacy Member
Ik heb met alle drie ervaring (C++ in wat mindere mate).

C# en Java zijn inderdaad heel erg gelijkend, zijn beide nieuwere talen en zijn dus wat "moderner" dan C++, dewelke een aantal oudere moeilijker te begrijpen constructies bevat (pointers, destructors e.d.).
Als je kijkt naar de moeilijkheid, waarmee ik dan voornamelijk bedoel het aantal features, dan kan je de drie talen rangschikken van veel features (en dus moeilijker, trager om aan te leren) naar weinig:
C++
C#
Java
Java is dus waarschijnlijk het meest eenvoudige om aan te leren.

Java biedt de meeste platformonafhankelijkheid van de drie. Als je wilt programmeren voor de mac in C#, zal je de opensource implementatie Mono moeten gebruiken, dit is niet van Microsoft zelf en loopt dan ook wat achter. Voor C++ bestaan wel compilers voor mac en dit zal prima lukken.

In C++ kan je over het algemeen de snelste code schrijven. Hoewel zowel Java als C# in de buurt komen op sommige vlakken en in andere vlakken zelfs sneller zijn. Veel hangt af van hoe je test en met welke settings enzo.

Qua development kan je waarschijnlijk in C# en Java het snelst je applicatie schrijven. Hoewel ik betwijfel of het verschil met C++ noemenswaardig is eenmaal je de taal onder de knie hebt.

Qua libraries vind je voor alledrie de talen erg veel. De standaard library van C++ is echter het kleinste. De documentatie van deze libraries is het beste in Java en C#, waarbij ik die van Java iets beter vind (bij C# zijn sommige methodes te kort uitgelegd).

Je zal zelf moeten kiezen, zoek wat meer op. Uiteindelijk maakt het niet zoveel uit: eens je een van de talen onder de knie hebt is het zeer eenvoudig om een van de andere aan te leren. Alledrie de talen zijn erg populair.

Ice

Legacy Member
Kies iets wat u NU interesseert, who gives a flying fuck wat er momenteel hip is op de arbeidsmarkt?
Als je wil werken als developer is software developen je interesse en is de taal ondergeschikt. Als je nu al denkt van 'ik wil later enkel in taal x werken' dan ben je een debiel. HAH! :)

Je zal wrsch 40j moeten werken, dus de neem de huidige hippe talen en kijk eens de welke pakweg 20j geleden bestonden?

On a side note, als ge echt OO wilt doen. Drop Ruby en bekijk Smalltalk. There, I said it.

Bubbling Zombie

Legacy Member
Ice zei:
On a side note, als ge echt OO wilt doen. Drop Ruby en bekijk Smalltalk. There, I said it.

daar bent ge dan later wel absoluut niks mee maar kom :p

Moto

Legacy Member
Als je nu al denkt van 'ik wil later enkel in taal x werken' dan ben je een debiel.
Idd beetje pragmatisch zijn en vooruitdenken zijn echt wel de slechtste eigenschappen die ge kunt hebben als programmeur...

Bubbling Zombie

Legacy Member
Moto zei:
Idd beetje pragmatisch zijn en vooruitdenken zijn echt wel de slechtste eigenschappen die ge kunt hebben als programmeur...

Ice is tegelijk met mij afgestudeerd met alleen java ervaring en hij is smalltalk gaan doen en ik .NET. De methodologieen zijn zoveel belangrijker dan de taal ... .
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