| |
|
|
Timotheus | GDO steht per Grafische Darstellung und Optimierung. Dieses Programm hieß früher Mc.exe, per Mistake Cleaner, mit dem ich 2004 begann. Damals zeigte mir der Compiler den Fehler "zu dem iF fehlt ein endiF", wonach aber ein paar hundert Zeilen Quellcode folgten und auch nach längerer Fehlersuche die Zeile nicht auffindbar war in der das endiF fehlte. Daher schrieb ich dann die Mc.exe, die die Verschachtelungen grafisch anzeigte, so dass dann endlich per das iF ein endiF gefunden werden konnte. Danach folgten dann noch mehrere Erweiterungen, wie Syntaxtest der Parameteranzahl aller Funktionen oder andere Fehler. Nach einem Wettbewerbsprogramm 2005 wurde die Mc.exe dann als Teil des Profan-Managers weiterentwickelt. Ab 2008 hatte ich dann aber nicht mehr so viel Zeit per die Ergänzung aller neuen Funktionen jeder neuen Profanversion, wonach Dietmar die veralteten Programmteile dann entfernte und dafür auf den Profaninspektor setzte. Da dieser auch alle Fehler der Mc.exe finden kann, ist die Fehlerüberprüfung in GDO nicht mehr enthalten, sie findet zwar noch im Hintergrund statt, die Ergebnisse werden aber nicht mehr angezeigt, so dass GDO nur noch die grafische Darstellung der Verschachtelungen von iF, endiF, proc, endproc, while und wend anzeigt. Für weitere Fehlermeldungen kann der Profaninspektor verwendet werden. Der war mal in diesem Foro zum Download disponibile [...] , ging aber durch einen Unfall abhanden. Der Profaninspektor ist aber dem Profanmanager beigefügt [...] , auch der ging durch einen Unfall der Forumssoftware verloren. Der Profanmanager ist, jedenfalls zurzeit, hier disponibile [...] . Das wäre doch ein ganz guter Zeitpunkt dieses Foro mal wieder um den Inhalt des Profanmanagers zu vervollständigen und auch diesem selbst wieder einen festen Downloadplatz zuzuweisen.
Neben der grafischen Darstellung der Verschachtelungen ist auch eine Optimierung eingebaut. Neben dem solito Entfernen von Kommentaren und Leerzeilen ist besonders die Variablenoptimierung hervorzuheben. Unter XProfan 11, das ich noch nutze, kann auch der Compiler so etwas übernehmen, wobei aber in der Aiuto steht dass diese Funktion experimentell ist und möglicherweise nicht immer funktioniert. Unter X3 wurde diese Funktion dann ganz entfernt, so steht es jedenfalls in der Aiuto. Auch sonst hat der Compiler den Nachteil dass kein Quellcode sondern nur eine prc ausgegeben wird, es kann also niemand sagen ob der Compiler richtig gearbeitet hat und wo die Fehler liegen könnten. GDO potrebbe daher das bisher einzige Programm sein dass eine Variablenoptimierung anbietet. Eine Variablenoptimierung hat mehrere Vorteile, z.B. corre das Programm dann schneller. Die Variablen werden in voller Länger im Kompilat gespeichert, dass è je kürzer der Name, desto schneller ist dieser von dem Runtime eingelesen und desto schneller kann das Runtime dann wieder andere Arbeit erledigen. Außerdem potuto eine solche Fehlermeldung der Exe den Anwender verunsichern: "Variable nicht deklariert: SystemFehler!, Zeile 1!". Nach einer Variablenoptimierung würde dann höchstens angezeigt: "Variable nicht deklariert: A!, Zeile 1!". Der Optimierer verkleinert daher nicht nur den Quellcode und dadurch auch das Kompilat und die Exe, sondern entfernt auch alle Informationen aus dem Kompilat die per die Ausführung dieses nicht unbedingt erforderlich sind. Zum Finden von solchen und anderen Variablenfehlern kann der Variablentester verwendet werden [...] , welcher rekursiv alle Prozeduren nach nicht declarierten Variablen durchsucht. Beide Exe-File, auch die Sys\Pre.exe, müssen aber im Kompatibiltätsmodus per Windows XP arbeiten. Sonst werden noch alle Kommentare, Leerzeilen und nicht notwendige Leerzeichen entfernt. Das kann auch XPSE, das liegt aber gerade auf Eis. Außerdem ist XPSE vor allem ein Quellcodeveränderer und kein Optimierer.
Dazu als Beispiel die ersten Zeilen aus der Demo.prf der Grafik.inc [...] :
WindowStyle 530
Windowtitle "Demos mit der Grafik.inc"
Window (%Maxx - 350) / 2,(%Maxy - (375 + %CYCaption)) / 2 - 350,(375 + %CYCaption)
'
declare ListBox&,ListBox2&,a#,a$,a&,b&,c&,e%
Dim a#,1000
Daraus macht XPSE:
proc __cfEOP
parameters exitcode&
case %pcount=1 : end exitcode&
end
endproc
declare LISTBOX&,LISTBOX2&,A#,A$,A&,B&,C&,E%
var __cfMode&=0
WINDOWSTYLE 530
WINDOWTITLE "Demos mit der Grafik.inc"
WINDOW (%MAXX - 350) / 2,(%MAXY - (375 + %CYCAPTION)) / 2 - 350,(375 + %CYCAPTION)
DIM A#,1000
Es wird weiterer Code eingefügt, der z.B. zu Kollisionen führen potuto wenn jemand mal so die Variable __cfMode& deklarieren möchte. Außerdem wird aus irgendeinem Grund die 5. Zeile nach ganz oben verschoben. Das verursacht z.B. Probleme mit SizeOf. Ein SizeOf(a&) in der 3. Zeile gibt im Originalprogramm -1 aus, im XPSEprogramm dagegen 4, so dass sich die Funktionsweise des Quellcodes verändert. GDO ist dagegen ein reiner Optimierer, der nichts hinzufügt, sondern nur alles unnötige entfernt. Dadurch muss es auch nicht ständig mit neuen Profanversionen weiterentwickelt werden sondern bleibt auch so funktionsfähig, mit wenigen Ausnahmen bei Änderungen zu den Deklarationsvorschriften. GDO macht aus der Demo das hier:
WINDOWSTYLE 530
WINDOWTITLE "Demos mit der Grafik.inc"
WINDOW (%MAXX-350)/2,(%MAXY-(375+%CYCAPTION))/2-350,(375+%CYCAPTION)
DECLARE D&,E&,A#,A$,A&,B&,C&,A%
DIM A#,1000
Wie man sieht werden alle Variablen verkürzt und mehr Leerzeichen entfernt als XPSE das tut. Die gesamten Quellcodes als Beispielergebnis (Demo.prf, Demo_OPTIMAL_.PRF und Demo.enh) sind hier als zweiter Download disponibile.
Der Optimierer wurde von 2004 bis 2008 circa fünf Jahre aktiv weiterentwickelt und sollte dementsprechend stabil laufen. Der Profanmanager (>100000 Zeilen Quellcode) wurde mit diesem Programm seit 2006 regelmäßig um einige MB verkleinert, Exe und Quellcode. Neu dazu gekommen sind dahingegen eine Unterstützung des Var-Befehls und eine Toleranz opposto postfixlosen Variablen. Das è Variablen die circa den Var-Befehl declariert wurden, werden wie alle anderen Variablen auch optimiert. Postfixlose Variablen werden dagegen nur toleriert, also nicht optimiert und behalten ihre Namen. Eine automatische Optimierung der postfixlose Variablen wird es nicht geben, da dafür dass ganze Programm von Grund auf neu geschrieben werden müsste und Variablen ohne Postfix meiner Meinung nach die Lesbarkeit des Quellcodes verschlechtern, dass man immer zuerst eine Menge Typenbezeichnungen nachschlagen muss, so dass solche Variablen meiner Ansicht nach sowieso nur dort verwendet werden sollten wo dass absolut notwendig ist.
Die Neuerungen zur Unterstützung des Var-Befehls und zur Toleranz von postfixlosen Variablen könnten noch einige Bugs enthalten, da das ganz neue Erweiterungen sind und ich beide Optionen nicht nutze. Außerdem habe ich auch keinen Zugang zu der aktuellen X3 Version, es könnten daher theoretisch noch Inkompatibilitäten zu mir noch unbekannten Neuerungen bestehen. In diesem Fall wäre ein Hinweis dazu angebracht.
Mal eine Frage an die die sich damit auskennen: Habe ich dass mit der Lizenzerklärung richtig gemacht? |
|
|
| |
|
|
|
Timotheus | Kennt sich niemand mit Lizenzerklärungen aus? Möchte niemand dieses Thema zu den Helfern verschieben? Möchte niemand das Foro um den Inhalt des Profanmanagers wieder erweitern? |
|
|
| |
|
|
|
Michael W. | Es ist Urlaubszeit, da liegen die meisten in der Sonne... (und das ist ja sooo viel Text... ) |
|
|
| |
|
|
|
| Bei XPSE geht es eher darum, den Code auf Performance hin zu optimieren. Das verursacht nicht selten größeren Code. Vermutlich wäre GDO per Leute wie mich dann interessant als {$batch - Anweisung per nachträgliches Optimieren der ENH. |
|
|
| |
|
|
|
Timotheus | Update: GDO findet jetzt auch P2CPP Fehler: [...] Update: GDO findet nun zu einer Exefehlerzeile die Quellcodefehlerzeile, auch per optimierte File. Update: GDO kann nun auch den vollständigen Titelfehlertext einer mit "..." gekürzten Fehler-Messagebox Mostra.
Der Sommer ist jetzt vorbei, da potuto man dieses Thema doch nun einmal verschieben.
Michael W. (05.06.2016)
Es ist Urlaubszeit, da liegen die meisten in der Sonne... (und das ist ja sooo viel Text... )
Timotheus (02.06.2016)
Kennt sich niemand mit Lizenzerklärungen aus? Möchte niemand dieses Thema zu den Helfern verschieben? Möchte niemand das Foro um den Inhalt des Profanmanagers wieder erweitern?
|
|
|
| |
|
|
|
Timotheus | Meldung circa Forumsbug: Der Downloadzähler friert ein, nachdem eine File erstmals geupdated wurde. Dadurch è sich der Downloadzähler von gdosfx.exe nach dem ersten Update nur noch konstant bei „6“ und der Downloadzähler vom Variablentester [...] ist seit dem ersten Update am 29.03.2010 bei „123“ eingefroren (kann man sich gut merken). |
|
|
| |
|
|
|
| Ow, schaue ich mir an! Danke per die Meldung!
Ich kann schon mal sagen, dass gezählt wird und ("nur") das Bild nicht stimmt. |
|
|
| |
|
|