Dit is een cirkelredenering. Als je dit aanhoudt zal niemand ooit in een nieuwere (betere) taal gaan programmeren omdat de rest allemaal al Java doet.
Maar welke taal is dan echt beter?
Er zijn zo'n 15 talen die momenteel allemaal pretenderen de "next Java" te zijn, waarvan het grote (nja, relatief grote) publiek er misschien 3 of 4 van kent.
Allemaal hebben ze zelf ook weer nadelen.
Ik ben persoonlijk wel gecharmeerd van C#, maar die heeft het grote nadeel van MS-only. Ja, er is Mono, en nee dat is niet waar de kern van de ontwikkeling zit.
Scala lijkt leuk, maar idomatisch Scala (whatever dat is, want daar is niemand het over eens, maar laten we zeggen met lekker veel functionele constructies erin) heeft een nogal slechte performance. Irononisch genoeg moet je Java-style Scala schrijven voor een beetje goede performance. Zie
http://java.dzone.com/articles/benchmarking-scala-against
Er is ook een universitaire studie geweest waaruit bleek dat je in Scala niet sneller leert te programmeren, niet productiever bent en niet beter gebruik maakt van concurrency (zie
https://cdn.anonfiles.com/1346131830146.pdf).
Daarnaast kent Scala geen binary compatibility en is het na 10 jaar nog steeds niet duidelijk wat nou idiomatic Scala zou moeten zijn.
Voor de meeste andere talen die pretenderen die next java, java killer, etc te zijn gelden vergelijkbare dingen. Er zijn leuke hello worlds die laten zien in dat je met NOG minder code die hello world kan bouwen, maar zodra je er -echt- mee gaat werken blijkt dat ook die taal dan weer geen silver bullet is.
Hoe kom je hierbij? Heb je ze geteld?
Ja, eigenlijk wel. Bij voorstudies voor een project kijken we dikwijls wat er al beschikbaar is aan functionaliteit, en 9 van de 10 keer blijkt dat er voor Java meer beschikbaar is dan in welke andere taal dan ook in het segment voor web/serverside/back-end. Natuurlijk zijn bepaalde domains soms dominant in andere talen. A+ gaming is C++, embedded is C, AI is veel Prolog (misschien niet echt dominant, maar het komt er tenminste voor).
Dit zegt niets over Java maar meer over de mensen die libraries schrijven
Gedeeltelijk, en het doet niets af aan het feit. Niemand zegt dat Engels of Duits "betere" talen zijn dan Nederlands, maar er is wel degelijk meer materiaal beschikbaar in die talen.
Daarnaast is de standaard library wel degelijk een direct onderdeel van het Java eco-systeem. Sun, nu Oracle en de JCP partners hebben de beperkte resources die ze hadden voornamelijk in de libraries (zowel Java SE als Java EE) en VM gestopt. Die hadden ze ook in de taal kunnen stoppen, maar men heeft bewust een keuze gemaakt. De standaard libraries worden wel degelijk als belangrijk onderdeel van de taal gezien, dat is bij C++ b.v. niet anders.
Dit soort uitspraken komen vaak van benchmarks waarbij super-geoptimaliseerde Java-software wordt vergeleken met niet-geoptimaliseerde C code. C wordt direct gecompileerd naar assembly en dan nog eens geoptimaliseerd door de compiler terwijl Java in een VM draait, waardoor Java simpelweg trager is.
Jammer dat er niet een -1 DOM!, moderatie bestaat. Maar sorry, dat is gewoon een DOMME opmerking.
Waarom denk je dat er onderzoek is naar runtime optimizers voor binare code? Google eens op Dynamo.
Met runtime informatie weet de JIT of een bepaalde method wel of niet wordt aangeroepen, of een branch wel of niet in de meeste gevallen wordt genomen, en kan daar heel gericht op optimaliseren tijdens het draaien van de applicatie.
Bepaalde algortimes met bepaalde datasets presteren wel degelijk veel beter met een runtime optimizer dan met een een statische optimizer. En dan hebben we het
NIET over slechte C code vs optimized Java code, maar over beiden die highly optimized zijn.
Gemiddeld zit Java ongeveer in de legeau van C++, met een aantal benchmarks waar het even snel is, en sommige waar het een factor 2 langzamer is. Vergelijk dit met Ruby dat makkelijk 80x of zelfs meer dan 200x langzamer is dan C++. Wat in C++ dus op z'n snelst 1 seconde is, is dan in java ook 1 seconde of uiterlijk 2 seconde, maar in Ruby meer dan een minuut of zelfs ruim meer dan 3 minuten.
Zie b.v.
http://benchmarksgame.ali...-programs-are-fastest.phpOmdat Java totaal onnodig in een resource vretende VM draait.
Right, waarom ga ik hier nog op in...
Daarnaast is het naar mijn mening een vreselijke taal om in te programmeren, 50 regels in Java zijn 20 regels in een willekeurige ander high-level taal zoals bijv. Python
Python is een vreselijk taal, met die nare 1 regelige closures omdat Guido er geen standaard formatting voor kon bedenken en het toppunt van alles is de GIL.
Dat kun je anno 2013 toch niet serieus nemen?
[Reactie gewijzigd door flowerp op 22 juli 2024 23:03]