C ist schon vor langer Zeit eine Standardsprache für Spiele und Grafiksoftware geworden. Und es gab tatsächlich einen Grund: Die Arbeit mit Echtzeitgrafiken und Physik erfordert eine hohe Leistung. Geometrie verarbeiten, Puffer verwalten, Matrixberechnungen – all das braucht Zeit.
Aber was ist mit der Logik auf hoher Ebene? Spielmechanik, Benutzeroberfläche, Speicherverwaltung, Netzwerkanfragen? Stabilität und Sicherheit sind dort weitaus gefragter als Geschwindigkeit.
Wir können leistungsintensive Funktionen in einer kompilierten Sprache wie C implementieren und sie aus einem Programm aufrufen, das in einer dynamischen Sprache wie Python geschrieben ist.
Aber heute verfügen wir bereits über gut dokumentierte und einfach zu verwendende Bibliotheken für Python (pygame, pyopengl, pyassimp, pybullet, numpy), die hauptsächlich auf C/C implementiert sind und Funktionen für umfangreiche Berechnungen bereitstellen. oder insbesondere Physik/Grafik. Wir werden möglicherweise nie mit der Notwendigkeit konfrontiert, solche Bibliotheken selbst zu implementieren.
Es ist allgemein anerkannt, dass Garbage-Collected-Sprachen wie Java oder C# langsamer als C sind und die Anforderungen für umfangreiche Berechnungen nicht wirklich erfüllen. Das ist natürlich nicht wahr.
C kann in einigen Sonderfällen Java oder C# in der Leistung um 20–30 % übertreffen, aber wenn es um Laufzeitabstraktionen geht, wie z. B. dynamische Funktionsverteilung, Sprachinteraktion, asynchrone Aufgaben, Text- oder abstrakte Sammlungsverwaltung, Java und C# zeigen eine viel höhere Effizienz als C.
Außerdem können wir unsere Python-Programme zur gleichen Laufzeit mit Java oder C# ausführen, indem wir Jython oder IronPython verwenden. Es bringt viele Vorteile mit sich, wie z. B. gemeinsamer Garbage-Collected-Speicher, Typensystem und einfacher Zugriff auf C#- oder Java-Bibliotheken direkt nach dem Auspacken. Auf Java sind so schöne dynamische Sprachen wie Clojure und Groovy implementiert, die vollständigen Zugriff auf die Java-Klassenbibliothek haben und die zuvor genannten Vorteile teilen.
Heutzutage sind Personalcomputer viel schneller als vor 15 bis 20 Jahren. Die meisten Desktop-Programme oder Spiele funktionieren jedoch nicht so schnell wie erwartet (obwohl sie immer noch größtenteils auf C/C implementiert sind). Heute brauchen wir gute Algorithmen und effektive Ansätze viel mehr als nur Sprachgeschwindigkeit. Eine Funktion mit konstanter Komplexität in Python ist besser als eine Funktion mit linearer Komplexität in C. Das Malen von 100 Bäumen mit 15 Zeilen Python-Code ist besser als das Malen von 500 Bäumen mit 300 Zeilen von C-Code.
Es ist nicht wirklich wichtig, welche Sprache Sie verwenden, wenn Sie noch kein Spiel erstellt haben, oder?
Ein Spiel auf C zu erstellen ist viel anspruchsvoller und anstrengender, als dasselbe auf Python oder Ruby zu tun. Wenn Sie 1 Spiel mit C erstellen würden, würden Sie 10 Spiele mit Python erstellen. Wenn Sie 5 Spiele mit Python erstellen würden, wären es 0 Spiele mit C .
Lasst uns auf Spiel und Spaß achten, wozu sonst?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3