NeverwinterX
Legacy Member
mausdabber zei:Akkoord. Zet je schrap:
* In Java alloceer je alles, zelfs als er maar één instantie van een object nodig is. Software-matig is dit niet nodig.
* In Java leer je niet wat geheugen de-alloceren is, want dat doet java voor jou.
* Java doet heel veel met exception handling, een luxe zeg maar die je afleert hoe je routines maakt die alle (fout)situaties opvangen.
* Java mist een aantal zaken die niet nodig zijn omdat het ding in een VM draait, maar die wel essentieel zijn in de software-wereld: pointers, alignment, bit-velden, geheugen de-alloceren, unsigned types.
* Dit ga je niet graag horen: Java verbiedt goto. Nochtans is het leerrijk om de voor- en nadelen ervan te bestuderen gewoon door het te proberen. Als je zoals ik vaak eerst een schema tekent en dat dan omzet in source code dan kan een goto best wel noodzakelijk zijn, of net niet en je doen inzien dat het schema verbeterd kan worden.
Ik heb samengewerkt met mensen die van Java naar C++ zijn omgeschakeld en vice versa. Het valt me op dat iemand met C++ achtergrond goede Java-software maakt. Het valt me ook op dat iemand die na jaren Java overstapt op C++ vaak geen goede software schrijft, net vanwege m'n argumenten: hij alloceert objecten tot in den treure, hij creëert geheugenlekken omdat hij vergeet te de-alloceren, pointers begrijpt hij niet goed.
Ik breek Java niet af, in tegendeel, ik gebruik het af en toe zelf, je kan er mooie software mee maken. Maar Java is geen goede basis om te leren programmeren of software te leren begrijpen. Het is te simpel en software is niet simpel.
Allez goed, I'll bite. Denk eens over het volgende na: kreeg je in de lagere school calculus, reële en imaginaire getallen, hogere wiskunde en lineaire algebra? Nee ze beginnen langzaam. Net op die manier is Java veel geschikter om te beginnen. Je kan Java bekijken als een subset van C++ (uiteraard is dit niet volledig correct om te zeggen, maar het komt dicht in de buurt). Als je eerst Java leert kan je daarna gemakkelijk C++ leren: het zijn maar enkele dingen die erbij komen.
Voorts hecht je ook een overmatig belang aan low level zaken en premature optimalisatie (sqrt(evil)): er zijn nog maar zeer weinig toepassingsgebieden waar deze van belang zijn. Java is zeker niet te simpel en uitstekend geschikt voor de meerderheid van alle toepassingen.
Het valt mij trouwens ook op dat velen die altijd C++ hebben gebruikt en daarna overstappen naar Java gore code schrijven. Je kan daarmee beide kanten op.
Dit zijn trouwens de principes waarop Java gebouwd is, moet je eens lezen. Dat stemt tot nadenken:
- Reading is more important than writing
- Code should be a joy to read
- The language should not hide what is happening
- Code should do what it seems to do
- Simplicity matters
- A clear semantic model greatly boosts readability
- Every “good” feature adds more “bad” weight
- Sometimes it is best to leave things out

) is de simpelste oplossing de beste oplossing. Of toch uitermate vaak.

