Könnte man moderne Spiele in Java programmieren?

Soweit ich weiß werden die meisten der brandneuen Spiele, vor Allem die, die aufwendige Grafiken beinhalten, meistens in reinen "Compiler-Sprachen" (ich kenne den Fachbegriff leider nicht, aber ich glaube man weiß, was gemeint ist?) programmiert. Also Sprachen wie z.b. C++. Das macht aufgrund der besseren Performance ja auch, soweit ich das beurteilen kann, Sinn.

Wenn man die Sinnhaftigkeit aber mal außer Acht lässt und sich rein auf die Realisierbarkeit fokussiert, wäre es dann möglich, Titel wie Black Ops 4 Oder Battlefield 5 von Grund auf und einzige in Java zu schreiben? Wie sähe es mit CAD-Anwendungen aus? Könnte Software, die mit Blender oder Photoshop verglichen werden kann, in Sprachen wie Java geschrieben werden?

Könnte man solche Projekte auch ohne größere Performanceeinbußen realisieren? - Oder anders gefragt: Ein "perfekter" Code, jeweils in Java und einer Sprache wie C++ werden zum Vergleich gezogen. Wenn die selbe Arbeit verrichtet werden soll, in welcher Größenordnung liegen die Einbußen von Java? Sind das gegenüber C++. Kann man das noch einigermaßen in Kauf nehmen?

Mir geht es bei der Frage im Grunde genommen darum, mich endlich zu entscheiden welche Programmiersprache ich lernen möchte. Aus zeitlichen Gründen und auch deshalb, weil es mich hinsichtlich meines Berufes überhaupt nicht tangiert möchte ich mich auf eine einzige Sprache beschränken und das dafür richtig machen. Dabei wollte ich wenn möglich eine Sprach die Alles erlaubt. Da kam mir als erstes Java in den Sinn. Läuft überall, ist der Hit, wenn es um Android geht, und für Anfänger wohl besser geeignet als z.B. C++. Mir ist klar, dass Java Grenzen kennt, wenn es um hardwarenahe Programmierung geht. - Ein Treiber in Java, wäre das überhaupt möglich?

Hier haben Sprachen wie C++ tatsächlich die Nase vorne, aber auch da hat man, in den Bereichen wo Assembler eingesetzt wird, Grenzen.

Im Grund genommen ist das, wonach ich suche wahrscheinlich genau C++, man kann sich ja, soweit ich weiß, auch selbst Laufzeitumgebungen basteln oder mit virtuellen Maschinen arbeiten, so dass der Großteil vom Code auch systemübergreifend funktioniert. Ich finde an C++ einfach nichts schlechtes. Allerdings hat mich schon der erste Blick in ein C++ Buch vollständig demotiviert. Es scheint mir so, als sei es um einiges schwieriger als Java, alleine schon was die Syntax angeht... Man könnte meine Frage also auch so formulieren: Lohnt es sich, wenn man sich den Weg zu aufwendigen Anwendungen offen halten möchte, C++ zu lernen, oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Ich entschuldige mich, wenn ich irgendwo fachliche Fehler eingebaut habe und freue mich natürlich, wenn ich korrigiert werde, ich eben alles andere als ein IT-Spezialist.

Es wäre nett, wenn ihr eure Meinung mit mir teilt.

Computer, Technik, programmieren, Java, Cplusplus, Informatik, Programmiersprache
C++: Eigener "Zufallsgenerator"?

Achtung Anfänger am Werk:

Ich habe versucht einen eigenen "Zufallsgenerator" zu schreiben, dafür habe ich folgenden Code benutzt:

long time();
long random(long max, long seed = time());

//zählt welche Zahl bei 100 generierten Zufallszahlen wie oft vorkommt
int main() {...}

//liefert die aktuelle Zeit
long time() {...}

long random(long max, long seed) {
    
    return seed%max;
}

Wie zu erwarten waren die Ergebnisse zwar irgendwie zufällig jedoch nicht gleichmäßig verteilt, hier eine Beispielausgabe :

Zahl 0: 0 mal | Zahl 1: 63 mal | Zahl 2: 37 mal | Zahl 3: 0 mal | Zahl 4: 0 mal

Danach wollte ich aber aus reiner Interesse wissen welcher Seed denn jeweils übermittelt wird und habe dem Code nur eine Zeile hinzugefügt:

long time();
long random(long max, long seed = time());

//zählt welche Zahl bei 100 generierten Zufallszahlen wie oft vorkommt
int main() {...}

//liefert die aktuelle Zeit
long time() {...}

long random(long max, long seed) {
    
    std::cout << seed << std::endl;

    return seed%max;
}

Und mit Verwunderung musste ich feststellen, dass die Werte nun relativ gleichmäßig verteilt ausgegeben wurden (nach den einzelnen Seeds natürlich), eine Beispielausgabe:

Zahl 0: 19 | Zahl 1: 24 | Zahl 2: 18 | Zahl 3: 20 | Zahl 4: 19

  • Warum sind die Werte beim 2. Codebeispiel gleichmäßiger verteilt?
  • Kann ich es irgendwie hinbekommen dass die Werte so verteilt sind wie im 2. Codebeispiel, ohne dabei etwas in der Konsole ausgeben zu müssen?

PS. Ich dachte dass die bessere Verteilung im 2. Codebeispiel möglicherweise damit zusammenhängt, dass der cout-Befehl eine gewisse Zeit beansprucht, und somit die Seeds indirekt beeinflusst. Deshalb habe ich versucht an der selben Stelle wo im 2. Beispiel der cout-Befehl steht eine kurze Wartezeit einzubauen, jedoch war das Ergebnis ähnlich wie beim 1. Beispiel.

programmieren, Cplusplus, zufallsgenerator

Meistgelesene Fragen zum Thema Cplusplus