Zum Inhalt springen

MidWar [Midgard Kampfsimulator]


Mav3N

Empfohlene Beiträge

@ obw: Nun das die User dann abbrechen kommt in der nächsten Version auch "weg": Ich füge einfach eine Fortschrittsanzeige hinzu. Dann werden sie sich an ein paar Sekunden warten halt gewöhnen müssen. :P Ja, ich arbeite gerade mal wieder an den Inputüberprüfungen ... ^^

Fortschrittsanzeigen bei Webanwendungen sind... sportlich. :disturbed: Sofern sie über eine einfache Textausgabe ("10%...20%..." inklusive flush()) hinausgehen.

Was passiert eigentlich, wenn zwei oder noch mehr Leute gleichzeitig etwas machen wollen? ;)

 

Bei jedem Aufruf erst einmal 30s Rechenzeit zu verbraten ist keine gute Idee für einen Server, der auch noch andere Aufgaben erfüllen soll.

 

Solwac

 

Das 2 Personen etwas gleichzeitig machen wird nie der Fall sein. Du weißt doch beim Programmieren gibt es keine Gleichzeitigkeit - nur eine Liste von Anweisungen, die abgearbeitet wird. ;)

Link zu diesem Kommentar
@ obw: Nun das die User dann abbrechen kommt in der nächsten Version auch "weg": Ich füge einfach eine Fortschrittsanzeige hinzu. Dann werden sie sich an ein paar Sekunden warten halt gewöhnen müssen. :P Ja, ich arbeite gerade mal wieder an den Inputüberprüfungen ... ^^

Fortschrittsanzeigen bei Webanwendungen sind... sportlich. :disturbed: Sofern sie über eine einfache Textausgabe ("10%...20%..." inklusive flush()) hinausgehen.

Was passiert eigentlich, wenn zwei oder noch mehr Leute gleichzeitig etwas machen wollen? ;)

 

Bei jedem Aufruf erst einmal 30s Rechenzeit zu verbraten ist keine gute Idee für einen Server, der auch noch andere Aufgaben erfüllen soll.

 

Solwac

 

Das 2 Personen etwas gleichzeitig machen wird nie der Fall sein. Du weißt doch beim Programmieren gibt es keine Gleichzeitigkeit - nur eine Liste von Anweisungen, die abgearbeitet wird. ;)

Warum sollte nicht einer das Programm starten wollen, während der Server schon für Dich rechnet? ;)

 

Solwac

Link zu diesem Kommentar
So, V2.0.1 ist fertig (Fehlerbehebungen, neues Design, verbessertes Output, Forschrittsanzeige).

 

Ich hab die beiden Fehler bei der Wegberechnung, die sayah genannt hat korrigiert. Den Fehler, dass keine LP abgezogen werden, finde ich nicht und kann ich nicht rekonstruieren. Vllt. ist er jetzt weg? Ich weiß es nicht - bitte einfach weiter beobachten. Außerdem hab ich den Fehler mit den JavaScript Dropdownlisten (diese Dinger wo man einen Orc oder einen Oger übernehmen kann) behoben - sie müssten jetzt endlich wieder funktionieren.

Also folgende Beobachtung: Kampf 3 Kämpfer in 3 Teams, Kämpfer 1 Oger per dropdown Liste, B=3 Startposition 0/0 5/5 und 9/9

Mac mit Mac OS X 10.5.6 und Firefox/3.5.7: Dropdown liste funktioniert nicht, es werden keine LP Verluste verrechnet.

PC Windows Vista, Firefox 3.6: dropdown liste funktioniert, LP Schäden werden verrechnet.

Für mich heisst das, das Problem liegt in der Kombination von Mac und deiner Software. Vielleicht ist es spezifisch für meinen Mac, vielleicht sind alle (mit einer speziellen Konfiguration?) betroffen.

Problem bei der Bewegun: hast du die Kontrollbereiche schon umgesetzt? Bei der Simulation beim Mac, stehen sich nach der 1. Runde Kämpfer 1&2 in Nahkampfreichweite gegenüber (Kämpfer 2 greift an) trotzdem bewegt sich Kämpfer 1 in der nächsten Runde ungehindert auf Kämpfer 3 zu.

es grüsst

Sayah el Atir al Azif ibn Mullah

Link zu diesem Kommentar
@ obw: Nun das die User dann abbrechen kommt in der nächsten Version auch "weg": Ich füge einfach eine Fortschrittsanzeige hinzu. Dann werden sie sich an ein paar Sekunden warten halt gewöhnen müssen. :P Ja, ich arbeite gerade mal wieder an den Inputüberprüfungen ... ^^

Fortschrittsanzeigen bei Webanwendungen sind... sportlich. :disturbed: Sofern sie über eine einfache Textausgabe ("10%...20%..." inklusive flush()) hinausgehen.

Was passiert eigentlich, wenn zwei oder noch mehr Leute gleichzeitig etwas machen wollen? ;)

 

Bei jedem Aufruf erst einmal 30s Rechenzeit zu verbraten ist keine gute Idee für einen Server, der auch noch andere Aufgaben erfüllen soll.

 

Solwac

 

Das 2 Personen etwas gleichzeitig machen wird nie der Fall sein. Du weißt doch beim Programmieren gibt es keine Gleichzeitigkeit - nur eine Liste von Anweisungen, die abgearbeitet wird. ;)

Warum sollte nicht einer das Programm starten wollen, während der Server schon für Dich rechnet? ;)

 

Solwac

 

Ach jetzt verstehe ich was du meinst. :D Nun dann haben wir halt einen überlasteten Server. :lookaround:

 

Daran kann ich leider auch nichts ändern... ;)

Link zu diesem Kommentar
So, V2.0.1 ist fertig (Fehlerbehebungen, neues Design, verbessertes Output, Forschrittsanzeige).

 

Ich hab die beiden Fehler bei der Wegberechnung, die sayah genannt hat korrigiert. Den Fehler, dass keine LP abgezogen werden, finde ich nicht und kann ich nicht rekonstruieren. Vllt. ist er jetzt weg? Ich weiß es nicht - bitte einfach weiter beobachten. Außerdem hab ich den Fehler mit den JavaScript Dropdownlisten (diese Dinger wo man einen Orc oder einen Oger übernehmen kann) behoben - sie müssten jetzt endlich wieder funktionieren.

Also folgende Beobachtung: Kampf 3 Kämpfer in 3 Teams, Kämpfer 1 Oger per dropdown Liste, B=3 Startposition 0/0 5/5 und 9/9

Mac mit Mac OS X 10.5.6 und Firefox/3.5.7: Dropdown liste funktioniert nicht, es werden keine LP Verluste verrechnet.

PC Windows Vista, Firefox 3.6: dropdown liste funktioniert, LP Schäden werden verrechnet.

Für mich heisst das, das Problem liegt in der Kombination von Mac und deiner Software. Vielleicht ist es spezifisch für meinen Mac, vielleicht sind alle (mit einer speziellen Konfiguration?) betroffen.

Problem bei der Bewegun: hast du die Kontrollbereiche schon umgesetzt? Bei der Simulation beim Mac, stehen sich nach der 1. Runde Kämpfer 1&2 in Nahkampfreichweite gegenüber (Kämpfer 2 greift an) trotzdem bewegt sich Kämpfer 1 in der nächsten Runde ungehindert auf Kämpfer 3 zu.

es grüsst

Sayah el Atir al Azif ibn Mullah

 

Dann ist auch klar, warum ich das nicht reproduzieren konnte: Ich hab keinen Mac... :D Das sich Kämpfer 1 in der nächsten Runde auf Kämpfer 3 zubewegt, liegt daran, dass derzeit der Kämpfer, der in der nächsten Runde angegriffen werden soll, immer noch per Zufall ausgesucht wird. Also wurde da gerade eine 3 mit meinem Würfel gewürfelt und - schwupps - rennt Kämpfer 1 auf Kämpfer 3 zu. Kontrollbereiche sind noch nicht umgesetzt - kommt noch... Es dauert eben... ^^

 

Ich weiß leider nicht was ich wegen dem Mac da jetzt machen soll. Vllt komme ich irgendwie mal an einen Mac um das zu testen dann sehe ich weiter.

Link zu diesem Kommentar

Vielleicht liegt es nicht am Mac selbst, sondern an der Version von Firefox oder der Version der Software die die Werte ausliesst oder...

Was mich erstaunt: Das alles macht Sinn, würde das Programm von meinem Rechner ausgeführt, was aber, wenn ich dich richtig verstanden habe, nicht der Fall ist, womit meine Erklärung der Mac sei schuld zwar naheliegend, aber halt doch nicht wirklich logisch ist. :confused:

Uebrigens, ich denke es ist sinnvoll, dass du die Rechenarbeit vom Server nimmst und auf den Computer des Benutzers verlegst. Sonst findest du nie jemanden, der dir die Nutzung seines Servers erlaubt. Vorausgesetzt natürlich, das ist nicht sowieso schon der Fall.

es grüsst

Sayah el Atir al Azif ibn Mullah

Link zu diesem Kommentar
Vielleicht liegt es nicht am Mac selbst, sondern an der Version von Firefox oder der Version der Software die die Werte ausliesst oder...

Was mich erstaunt: Das alles macht Sinn, würde das Programm von meinem Rechner ausgeführt, was aber, wenn ich dich richtig verstanden habe, nicht der Fall ist, womit meine Erklärung der Mac sei schuld zwar naheliegend, aber halt doch nicht wirklich logisch ist. :confused:

Uebrigens, ich denke es ist sinnvoll, dass du die Rechenarbeit vom Server nimmst und auf den Computer des Benutzers verlegst. Sonst findest du nie jemanden, der dir die Nutzung seines Servers erlaubt. Vorausgesetzt natürlich, das ist nicht sowieso schon der Fall.

es grüsst

Sayah el Atir al Azif ibn Mullah

 

Das Problem ist, dass ich nur PHP gut genug kann, um darin den Kampfsimulator zu programmieren - und PHP ist eine Sprache für das Internet. Sie wird nur auf einem Server ausgeführt womit die Rechenleistung immer vom Server gestellt werden muss - klar könnte ich alles in JS auf den PC des Benutzers auslagern, aber das ist viel zu aufwendig und dämlich... Es bleibt also dabei, dass ich den dort auf dem Server lassen muss - altenativ kann ich den PHP Quellcode verteilen, dann muss man sich schnell XAMPP installieren und schon kann man den Code auf seinem PC ausführen.

Link zu diesem Kommentar

ich habe nun 2 Oger Gr 4 und 5 Orcs Gr 1 in Team 1 gegen 9 Menschen Gr 1, 5 Zwerge Gr. 1, 2 Elfen Gr1, einen Bären Gr5 und einen Wolf Gr2 kämpfen lassen.

In Runde 2 erhielt ich folgenden Fehler: Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 72 bytes) in /home/webpages/lima-city/midwar/html/V2.0.1/astar.php on line 235

Dazu habe ich noch das Problem, dass Oger 1 in der ersten Runde einen Gegner angreift, obwohl keiner in Reichweite steht. In der zweiten Runde läuft Oger 1 wie er sollte, die anderen Figuren verhalten sich (soweit ich sehe) normal. Ebenfalls wird für einige Figuren ein Zielfeld 10/1 berechnet, was (wenn ich es richtig verstanden habe) ausserhalb der erlaubten Werte ist... nicht?

es grüsst

Sayah el Atir al Azif ibn Mullah

ps. vielleicht musst du dir halt doch eine Programmiersprache beibringen die etwas besser rechnet.

Bearbeitet von sayah
Link zu diesem Kommentar
ich habe nun 2 Oger Gr 4 und 5 Orcs Gr 1 in Team 1 gegen 9 Menschen Gr 1, 5 Zwerge Gr. 1, 2 Elfen Gr1, einen Bären Gr5 und einen Wolf Gr2 kämpfen lassen.

In Runde 2 erhielt ich folgenden Fehler: Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 72 bytes) in /home/webpages/lima-city/midwar/html/V2.0.1/astar.php on line 235

Dazu habe ich noch das Problem, dass Oger 1 in der ersten Runde einen Gegner angreift, obwohl keiner in Reichweite steht. In der zweiten Runde läuft Oger 1 wie er sollte, die anderen Figuren verhalten sich (soweit ich sehe) normal. Ebenfalls wird für einige Figuren ein Zielfeld 10/1 berechnet, was (wenn ich es richtig verstanden habe) ausserhalb der erlaubten Werte ist... nicht?

es grüsst

Sayah el Atir al Azif ibn Mullah

 

schicke mir bitte per PN den ganzen ausgegebenen Text. Also lass den MidWar alles simulieren, drücke bei Windows STRG + a und kopiere mir alles in die PN, dann kann ich weitergucken.

 

Der Fehler mit der Allowed memory size heißt einfach, dass mein A* Algorithmus gerade mal wieder zuviel Speicher verbraucht, ich vermute daher, dass im Algorithmus Einträge immer noch nicht richtig gelöscht werden - derart exorbitante Werte sind jenseits von Gut, Böse und verständlich für so ein kleines Feld, irgendwo sind also leider immer noch Fehler. Wie mir scheint habe ich noch viel zutun. ;)

Link zu diesem Kommentar

Name ID LP AP Schaden Team Angriffswert Verteidigungswert Rüstung Status X Y B

Sorren 1 11 40 1W6+1 1 14 15 Vollrüstung Unbeeinträchtigt 0 0 3

Radamanthu 2 14 50 1W6 2 12 16 Textilrüstung Unbeeinträchtigt 9 9 4

 

Runde 1

Sorren mit der ID 1 geht 3 Schritte von Feld 0,0 auf Feld 3,3, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 8,8 nicht erreicht hat.

Radamanthu mit der ID 2 geht 4 Schritte von Feld 9,9 auf Feld 5,5, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 4,4 nicht erreicht hat.

 

Runde 2

Sorren mit der ID 1 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Sorren mit der ID 1 erzielt 23 und hat Radamanthu mit der ID 2 getroffen. Radamanthu mit der ID 2 erzielt 24, konnte abwehren und verliert 7 AP.

Radamanthu mit der ID 2 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Und so weiter in den folgenden Runden. Anscheinend ist die Erkennung, ob zwei Figuren nebeneinander stehen, noch fehlerhaft.
Link zu diesem Kommentar

Name ID LP AP Schaden Team Angriffswert Verteidigungswert Rüstung Status X Y B

Sorren 1 11 40 1W6+1 1 14 15 Vollrüstung Unbeeinträchtigt 0 0 3

Radamanthu 2 14 50 1W6 2 12 16 Textilrüstung Unbeeinträchtigt 9 9 4

 

Runde 1

Sorren mit der ID 1 geht 3 Schritte von Feld 0,0 auf Feld 3,3, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 8,8 nicht erreicht hat.

Radamanthu mit der ID 2 geht 4 Schritte von Feld 9,9 auf Feld 5,5, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 4,4 nicht erreicht hat.

 

Runde 2

Sorren mit der ID 1 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Sorren mit der ID 1 erzielt 23 und hat Radamanthu mit der ID 2 getroffen. Radamanthu mit der ID 2 erzielt 24, konnte abwehren und verliert 7 AP.

Radamanthu mit der ID 2 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Und so weiter in den folgenden Runden. Anscheinend ist die Erkennung, ob zwei Figuren nebeneinander stehen, noch fehlerhaft.

 

Gut, danke. Es sind jetzt 7 verschiedene Fehler gefunden worden. Da werde ich wohl noch ein wenig zu tun haben, bis das läuft. ;)

Link zu diesem Kommentar

So,

 

habe alle 7 Fehler beheben können. (Hoffe ich). Version 2.0.2 ist fertig.

 

Die Erkennung, ob zwei Figuren nebeneinander stehen war Fehlerhaft - es lag an einem vergessenen Gleichheitszeichen ...

Das Problem, dass sayah gefunden hatte, fand sich darin, dass er in seinen Beispielen B = 03 anstatt 3 eingegeben hatte, wodurch Fehler produziert werden. Ich habe das nun abgefangen und wandel 03 automatisch in 3 um, wodurch keine Fehler mehr auftreten sollten.

Die restlichen Fehler waren intern und nicht so wichtig.

Es werden nun alle Werte Serverseitig überprüft, damit auch ja nichts schiefgeht und alles möglichst sicher ist (Auch werden jetzt endlich die X,Y und B Werte überprüft).

 

Sonst habe ich noch nichts geändert.

 

Als nächste werde ich hinzufügen, dass man endlich die Kartengröße selber einstellen kann, sowie eine Überprüfung, ob es auch wirklich verschiedene Teams gibt (das ist die einzige Überprüfung, die derzeit noch fehlt). Außerdem gibt es noch 2 JavaScript Fehler, die ich irgendwie noch bereinigen muss. Zum einen kann man, wenn man mehr als 7 Kämpfer eingibt höchsten bis zum 7ten Kämpfer auf "Kopieren" klicken, zum anderen werden nicht in allen Browsern die Kampfinformationseinstellungen richtig übernommen. Das wird in der nächsten Version geändert. Dann dürfte alle Fehler behoben sein und es geht an neue Funktionen. :)

 

Bamba

 

Link: midwar.de.vu

 

Übrigens: Für die Namen von Figuren sind nur noch Buchstaben erlaubt!

 

EDIT: Wie üblich bitte fleißig Fehler suchen. Eigentlich dürfte es keine mehr geben, bis auf: "Fatal error: Maximum execution time of 60 seconds exceeded in astar.php on line 194". Das besagt lediglich, dass er zu lange für die Berechnung gebraucht hat, was auf dem Freeserver nicht möglich ist. Daher will ich ja irgendwie auf einen vernünftigen Server mit genug Rechenleistung wechseln. ;) Das ist also kein Fehler!

 

EDIT 2: Übrigens kann der Simulator jetzt endlich auch erkennen, wenn eine Person zugestellt ist (von Hindernissen oder Verbündeten) und sich diese Runde nicht bewegen kann. Vorher resultierte daraus immer ein Fehler).

Bearbeitet von Bamba
Link zu diesem Kommentar

Ich arbeite gerade an 2.0.3 und muss feststellen, dass wir ein großes Problem haben. Ich wollte diese Version eigentlich hinzufügen, dass man selber die Kartengröße (maximal 100x100) einstellen kann. In einem Beispiel Test von mir mit 50x50 Feldern, 10 Kämpfern und dem Standardkram auf Statistikkampf, rechnet er in 60 Sekunden (bis die Fehlermeldung von zu langer Berechnung kommt) gerade mal 2% fertig ... Das wären 50 Minuten komplette Rechenzeit für einen Statistikkampf bei gerade mal 50x50 Feldern ... Ich fürchte das geht so nicht. Entweder finde ich jetzt eine Möglichkeit den Kampfsimulator mal eben um den Faktor 100 in der Geschwindigkeit pushen zu können, oder ich kann keine weiteren Funktionen hinzufügen. HipHop bringt laut Google ca. 50%. 25 Minuten bei so einem billigen Feld für einen Statistikkampf? Ne danke! Das kann doch irgendwie nicht sein.

 

Hilferuf an die Profis: Was kann ich machen? :S

 

Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.

 

Bamba

Link zu diesem Kommentar
Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.
Überlege mal, ab welcher Rechenzeit Dir genug Zeit zum Erlernen einer weiteren Sprache bleibt. ;)

 

Es gibt grundsätzlich drei Möglichkeiten, die Geschwindigkeit eines Programms zu erhöhen:

  • Schnellerer Rechner
  • Bessere Compilation
  • Besserer Algorithmus

Du hast ein paar Zahlen schon genannt...

Link zu diesem Kommentar
Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.
Überlege mal, ab welcher Rechenzeit Dir genug Zeit zum Erlernen einer weiteren Sprache bleibt. ;)

 

Es gibt grundsätzlich drei Möglichkeiten, die Geschwindigkeit eines Programms zu erhöhen:

  • Schnellerer Rechner
  • Bessere Compilation
  • Besserer Algorithmus

Du hast ein paar Zahlen schon genannt...

 

Der Algorithmus ist bei weitem vorzuziehen :notify:

Link zu diesem Kommentar
Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.
Überlege mal, ab welcher Rechenzeit Dir genug Zeit zum Erlernen einer weiteren Sprache bleibt. ;)

 

Es gibt grundsätzlich drei Möglichkeiten, die Geschwindigkeit eines Programms zu erhöhen:

  • Schnellerer Rechner
  • Bessere Compilation
  • Besserer Algorithmus

Du hast ein paar Zahlen schon genannt...

 

Schnellerer Rechner wird erstmal nicht funktionieren. Bessere Compilation... Naja wir hätten HipHop und Konsorten, das sind aber auch nicht die Bringer. Besserer Algorithmus? Ich kann beim besten Willen nicht auf etwas von dem verzichten was ich eingebastelt habe. Vereinfachen kann ich es nicht. Und auch wenn ich den A* Algorithmus bei mir unübersichtlich programmiert habe, so ist er trotzdem eine relativ gute Implementation von der Logik her. Und die zählt! Auch dort lässt sich nicht viel machen. Daher stehe ich gerade total auf dem Schlauch. Ich kann euch wenn ihr wollt den kompletten Quellcode schicken und ihr schaut mal was sich machen lässt, aber wenn keinem eine Möglichkeit einfällt wo ich das noch was drehen kann, kann ich nicht weiter programmieren und neue Funktionen einbauen.

 

Ich lerne gerade zwar weiter Python, aber selbst wenn ich Python sehr gut könnte, hätte ich keine Lust alles nochmal in Python nachzubauen ...

Link zu diesem Kommentar

Ich weiss du wirst hassen, was ich als nächstes schreibe: eventuell ist es das beste, dass du nun, wo du die Fehler kennst und weisst was du alles in der Software unterbringen möchtest, von vorne beginnst. Damit verhinderst du dass du suboptimal programmierte Teile weiter herumschleppst und jedesmal wenn du etwas ein umständliches Konstrukt programmieren musst.

Beispiel: Bewegung, wir haben darüber geplaudert. Jetzt hast du einen funktionierenden Algorhytmus, zugegeben, der aber nicht alles leistest was du gerne in der Software verwirklichen möchtest. Ihn zu ändern (Reihenfolge in der bewegt wird (Reihenfolge der Teams und dann Reihenfolge der einzelnen Kämpfer) in der bestehenden Software wird schwierig und führt wahrscheinlich zu suboptimalen Lösungen weil du auf bestehenden Code Rücksicht nehmen musst. Beginnst du von vorne ist das, zugegeben sehr viel Arbeit, nur evetuell bekommst du dafür 'sauberen' Code also ein optimaleres Programm. Je nachdem was du noch alles umsetzen willst, lohnt sich der Aufwand, denke ich.

es grüsst

Sayah el Atir al Azif ibn Mullah

Link zu diesem Kommentar
  • 2 Monate später...

Hallo,

 

ich glaube ich melde mich mal wieder.

 

Nachdem ich die gesamten PHP Skripte an einen enorm guten PHP Programmierer geschickt hatte, der versprach sich alles anzugucken und ich nach 2 Monaten noch keine Rückmeldungen bekomme hatte (Ich glaube er ist an meinem Code verzweifelt), habe ich beschlossen selber weiterzumachen. Mit PHP gehts ja wohl nicht, also hab ich das ganze mal in Python neugeschrieben oder zumindest damit angefangen. Bis jetzt bin ich so weit, dass MidWar in Python sämtliche Sachen des MidWar's in PHP kann, bis auf das rechnen mit Positionen. Und natürlich ist es noch ohne eine grafische Benutzeroberfläche.

 

Jetzt wollte ich das ganze mal an sayah zum testen schicken, als mir auffiel: Scheiße, wie pack ich das in eine .exe Datei? Es gibt 6 mir bekannte Programme, um das zu bewerkstelligen. Problem dabei: Entweder funktionieren sie mit Windows nicht, oder sie unterstützen kein Python 3 (indem ich alles geschrieben habe), oder es kommen seltsame Fehlermeldungen. Zusätzlich kommt hinzu, dass es ja eigentlich Schummellösungen sind, da immer die benötigten Libraries aus Python mit in die .exe eingebunden werden (so habe ich das zumindest bisher verstanden), was ich nicht möchte, weil meist unnötiger Ballast mitgenommen wird. Ich will eigentlich nur, dass der meinen Quellcode, den ich geschrieben habe in eine exe kompiliert, damit das ganze ausgeführt werden kann. Nach Stundenlanger rumprobiererei hab ich dann aufgegeben. Python? Ist ne tolle Sprache, die Syntax ist das beste was ich kenne, die Module auch, die Geschwindigkeit ist auch ok - aber ich kann damit keine .exe's erstellen. Also kann ich das ganze wohl auch nicht in Python programmieren. Jetzt bin ich auf der Suche nach einer neuen Sprache, die eine genauso einfache Syntax wie Python hat, die Geschwindigkeit von C oder C++ und die man bitteschön auch in .exe Dateien verwandeln kann, damit ich dann zum 3ten mal alles neuschrieben kann...

 

Jemand ne Idee? Anforderungen:

 

- Einfache Syntax (Ich möchte so eine wie Python, da macht das Programmieren richtig Spaß)

- Hohe Geschwindigkeit - sollte an C++ oder gar C rankommen

- Die Möglichkeit einfach nur per Klick (Gibt es ja bei den ganzen C++ Compilern auch) das ganze in eine .exe umzurechnen, die dann verschickt werden kann (am besten sogar noch plattformübergreifen für x86, x86-64, Mac, Linux...)

- Eine gute Verfügbarkeit von Standardmodulen (Wer viel mit Python gearbeitet hat wie ich, lernt so etwas echt zu schätzen)

- Eine gute Dokumentation

 

Wenn ich dann endlich mal die richtige Sprache gefunden habe, kann ich das ganze Ding auch zu Ende schreiben ...

Link zu diesem Kommentar

Jetzt wollte ich das ganze mal an sayah zum testen schicken, als mir auffiel: Scheiße, wie pack ich das in eine .exe Datei?

 

Du brauchst ihm eigentlich nur die entsprechenden Dateien in einem Archiv zu schicken.

 

Python ist eine Interpretersprache, da wird normalerweise keine .exe Datei gebaut. Sofern der Interpreter für eine Plattform existiert, kann das Programm auch ohne Veränderung auf der entsprechenden Plattform ausgeführt werden.

Bearbeitet von Sulvahir
Link zu diesem Kommentar

Jetzt wollte ich das ganze mal an sayah zum testen schicken, als mir auffiel: Scheiße, wie pack ich das in eine .exe Datei?

 

Du brauchst ihm eigentlich nur die entsprechenden Dateien in einem Archiv zu schicken.

 

Python ist eine Interpretersprache, da wird normalerweise keine .exe Datei gebaut. Sofern der Interpreter für eine Plattform existiert, kann das Programm auch ohne Veränderung auf der entsprechenden Plattform ausgeführt werden.

 

Ja und? Damit ist es vom Python Interpreter abhängig und derjenige muss Python installiert haben - das möchte ich nicht. Ich möchte etwas komplett unabhängiges. Am liebsten würde ich Python so wie es ist behalten, nur die Möglichkeit hinzufügen, dass man aus bestehendem Quellcode ohne weiteres .exe Dateien kompilieren kann.

Link zu diesem Kommentar
Korrekt.

Außerdem wird es schwierig ein Sprache zu finde mit der Geschwindigkeit von C und der Einsteigerfreundlichkeit von Python.

 

Ich würde es wahrscheinlich in C# schreiben, aber das ist nicht so schnell.

 

Da gefällt mir die Syntax wiederum nicht - wieso umständlich wenn es auch mit der Syntax von Python einfach geht? Ich meine, wenn man sich einen abgebrochen hat MidWar in PHP zu schreiben und für die fight.php 20KB Code produziert hat und exakt das selbe nun in Python wiederholt sind es aufeinmal nur noch 8KB, dann sieht man schon einen Unterschied zwischen den Sprachen ...

Link zu diesem Kommentar

Moin,

 

Ich würde es wahrscheinlich in C# schreiben, aber das ist nicht so schnell.

 

C# ist langsam und ein uebles Speichermonster.

 

Ich denk mal wenn du Geschwindigkeit rausholen willst, so braucht du eine Sprache mit einem erstklassigen Garbage Collector, die evtl sogar echten Maschinencode ausfuehrt. Zudem willst du die Flexibilitaet einer Scriptsprache.

 

In meinen Augen fallen damit PHP, Perl5, Python und aehnliche flach, weil deren GC und VM nicht viel besser sind als a little Smalltalk. Boese Zungen behaupten die Autoren hatten alSt gelesen, und sich danach ueberlegt, dass ne Scriptsprache selbst zu basteln ganz einfach ist. Auch fallen Curly-Braces-Algol Sprachen (C, C++, Java, C#) flach, weil du damit nicht die Flexibilitaet von Scriptsprachen hast. Ueber bleiben die Klassiker:

 

Smalltalk/X - Schnellstes mir bekanntes Smalltalk, dass die Moeglichkeit bietet, einzelne Methoden nach C zu uebersetzen, und dynamisch zuzulinken, und sogar C-Crosscompiler unterstuetzt, wenn du nen Binary fuer andere Platformen baust. Leider ist die Lizens nicht wirklich frei.

 

( Cincom Smalltalk ist nicht so schnell wie ST/X aber besser als Perl,Python,Ruby,PHP. Und bei Squeak kommt dazu dass sich kaum jemand mit dessen GUI anfreunden kann, wenns nicht grade nen 9 jaehriges Maedchen ist, die finden so was Cute - Squeak ist imho die beste Moeglichkeit fuer Kinder richtig Programmieren zu lernen ;-)

 

CMUCL/SBCL uebersetzt Lisp in echten Machinencode, der GC ist perfekt. Schneller gehts nichtmal mit C. So ist die Lisp-Regex Library schneller als die Perl, Python, PHP und Unix-C library, weil die Regex on the fly in Maschinencode uebersetzt wird.

 

GNU Common Lisp verfolgt einen mit ST/X vergleichen Ansatz bei dem Lisp Code in C Code uebersetzt wird. Leider ist William Schelter schon seit einiger Zeit tot, und wenns Debian nicht gebe, und Anwendungen die fuer den GCL geschrieben wurde, gaebe es keine Wartung mehr.

 

Clisp ist das Common-Lisp mit niedrigsten Footprint. Es hat zwar nur einen Bytecode Interpreter, dieser ist aber extrem schnell, und der GC ist perfect. Die VM ist schnell genug, dass Lisp-Regexp schneller als das Unix-C Equivalent sind.

 

Letzters zeigt mal wieder dass in jeder nicht trivialen Anwendung irgenwo ein Interpreter steckt, und dass sich es sich dann lohnt wenn ich diesen direkt in der Anwendungsentwicklung nutzen kann.

 

Ich denke mal Spieleprogrammierung ist optimal, um neue Sprachen kennen zu lernen. Warum nicht erstmal die Klassiker. Nach ein paar Wochen Lisp oder Smalltalk kommen dir alle andern Sprachen wie Krueppel vor. Insbesondere Smalltalk/80 war seiner Zeit 30 Jahre vorraus. Seitdem erscheinen alle Jahre wieder neue Hype Sprachen, die jedes mal ein stueckchen naeher an Smalltalk sind.

 

ciao,Kraehe

Link zu diesem Kommentar

 

Ja und? Damit ist es vom Python Interpreter abhängig und derjenige muss Python installiert haben - das möchte ich nicht. Ich möchte etwas komplett unabhängiges. Am liebsten würde ich Python so wie es ist behalten, nur die Möglichkeit hinzufügen, dass man aus bestehendem Quellcode ohne weiteres .exe Dateien kompilieren kann.

 

Ich fürchte, einen Tod musst du sterben:

 

Plattformunabhängig: Dann wäre eine Interpretersprache (wie Python) sinnvoll, da der Interpreter für etliche Plattformen existiert, und du das Programm nur einmal schreiben musst.

 

Ausführbares Executable: Dann musst du für jede Plattform und für jede Architektur das Programm einzeln kompilieren. Dabei kann es dir schnell passieren, dass du zusätzlich für jede Plattform eigenen Code schreiben (und debuggen!) musst, weil irgendetwas nicht so funktioniert, wie es soll, und du hast die X-fache Arbeit.

 

Ein Kompromiss wäre eine Interpretersprache, die faktisch bereits überall installiert ist; das wäre dann Java.

Link zu diesem Kommentar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...