| |
|
|
- Seite 1 - |
|
RGH | Hallo XProfaner,
das direkte Ansprechen der I/O-Ports ist unter neueren Windowsversionen (NT, 2000, XP, VISTA) ja nicht mehr möglich und die genannten Funktionen und Befehle funktionieren auf diesen Plattformen von daher nicht mehr. Programme, die diese Befehle/Funktionen nutzen sind daher auf Rechnern mit Windows 95/98/ME beschränkt.
Daher meine Frage, ob Ihr diese Funktionen/Befehle noch nutzt.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 02.09.2007 ▲ |
|
|
|
|
| |
|
- Seite 4 - |
|
| |
|
| |
|
|
|
Frank Abbing |
Zum Ersten bleibt diese Funktion noch undokumentiert bestehen. Es besteht keinerlei technischer Grund, sie zu entfernen. Und zum Zweiten wird es in der nächsten XProfan-Version (die möglicherweise XProfan 2008 heißt) einen Ersatz geben, der nicht nur bequemer, sondern auch deutlich schneller ist (Stichwort: statisches Linken) und das DEF als API-Einbindung sehr schnell vergessen läßt.
Da wird sich Dietmars Herzklappe sicher schnell wieder beruhigen.
Ich sags nochmal, ich finde es in Ordnung, wenn unnützer Balast mal abgeschüttelt wird. Rolands Technik solche Sachen im Code bestehen zu lassen aber aus der Anleitung zu entfernen halte ich für einen geschickten Zug. |
|
|
| |
|
|
|
| Also so richtig verstehen tue ich es aber trotzdem nicht, sei denn es geht um Größenreduzierung der Runtime. Ich verstehe es deshalb nicht weil Roland ohne Weiteres seinem Präkompiler beibringen kann alte Befehle in z.B. callByName(alterbefehl,...) umwandeln zu lassen. Sozusagen eine Funktion callByName die alte Funktionen auffängt ohne das eine Befehls-ID verbraucht wird. |
|
|
| |
|
|
|
RGH | @iF:
Wenn ich z.B. 20 create.....-Funktionen durch 1 Funktion create(...... ersetze habe ich 19 IDs gespart und kann sie an anderer Stelle verwenden. Das ist aber nur eine Seite der Medallie. Die zweite ist die Übersichtlichkeit und/oder Logik der Sprache und damit vielleicht auch die leichtere Erlernbarkeit trotz zunehmender Komplexität. (Hier ist sicherlich auch einige Geschmacksache.) So habe ich diese Containerfunktionen z.B. bei ZIM (einer amerikanisch/kanadischen Datenbank-4GL) kennen und schätzen gelernt: Alle Settings wurden z.B. mit einer Funktion mit zahlreichen Subfunktionen eingestellt. Wenn ich also eine Einstellung benötigte, wußte ich sofort, welchen Funktion zu verwenden war und wo ich in der Doku nachzuschlagen hatte und im Quellcode ist sofort erkennbar, daß es sich um eine Einstellung handelt, weil da eine Setfunktion steht. (Es geht ja nicht nur ums Schreiben des Quellcodes, sondern auch darum, ihn später noch zu verstehen.) Als mir dann die IDs in Profan auszugehen drohten, fiel mir diese Technik ein, und ich setzte sie in Profan ein (ab 7.0). (Und die Erweiterbarkeit dieser Containerfunktionen mittels SUBPROC setzten dem Ganzen die Krone auf. Das gab es selbst in ZIM nicht! ) Zur Übersichtlichkeit gehört auch, daß ich nicht für eine Funktion mehrere Befehle/Funktionen ader alternative Schreibweisen haben möchte. Ein Beispiel: zunächst gabe es den Befehk MESSAGEBOX. Um die gedrückte Taste zu ermitteln, war eine Systemvariable abzufragen. Das erwies sich später als unpraktisch und es wurde die Funktion MESSAGEBOX() eingeführt, die die gedrückte Taste zurückgab. Im Rahmen des Ausmistens wurde der Befehl nun abgeschafft (1 ID wurde frei). Damit aber die alten Quellcodes der alten Hasen noch funktionieren (und Dietmars Herzklappe geschont wird ;) ) wandelt der integrierte PreCompiler vor dem Compilieren/Interpretieren beim Einlesen des Quellcodes den MESSAGEBOX-Befehl in die MESSAGEBOX-Funktion um. Neueinsteiger müssen mit dem veralteten Messagebox-Befehl aber nicht mehr belästigt werden, deshalb fehlt er in der Einführung der Hilfe. (Im Anhang der veralteten Befehle taucht er aber doch noch auf, damit auch der Neueinsteiger alte Quellcodes verstehen kann.) Auf diese Weise versuche ich, die Sprache weiter zu entwickeln, ohne die Kompatibilität mit Füßen zu treten.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 07.09.2007 ▲ |
|
|
|
|
Nico Madysa | Und deswegen hat noch keiner von uns das Profan-Programmieren aufgegeben. |
|
|
| |
|
|
| |
|
- Seite 5 - |
|
|
Frank Abbing | Blödsinn, es verschwinden immer wieder mal renomierte Leute in der Versenkung. Z.B. Thorsten Haggert oder Heiko Reddingius. Möchte ja mal wissen, wohin die abgewandert sind... |
|
|
| |
|
|
|
Nico Madysa | Ich meinte auch eher die, die hier sehr aktiv sind, z.B... dich! |
|
|
| |
|
|
|
Frank Abbing | Reines Profan wäre mir zuwenig, da bin ich ehrlich. In Symbiose mit Assembler geht das aber voll in Ordnung. Hab derzeit keinen Drang nach Veränderung. |
|
|
| |
|
|
|
Sebastian König |
Zitat aus der Hilfedatei von XProfan 10: Wichtiger Hinweis: In künftigen XProfan-Versionen wird Def nur noch für die Definition von Konstanten verwandt werden. Im Ernst: Zum Ersten bleibt diese Funktion noch undokumentiert bestehen. Es besteht keinerlei technischer Grund, sie zu entfernen. Und zum Zweiten wird es in der nächsten XProfan-Version (die möglicherweise XProfan 2008 heißt) einen Ersatz geben, der nicht nur bequemer, sondern auch deutlich schneller ist (Stichwort: statisches Linken) und das DEF als API-Einbindung sehr schnell vergessen läßt.
Hallo,
ich möchte meinen Senf auch mal dazugeben :
Die Entwöhnung der User von überholten Features durch Streichen der Erwähnung in der Hilfe halte ich für einen sehr guten Weg. Und das statische Linken als Ersatz für API-DEFs klingt wirklich interessant - ich bin sehr gespannt!
Allerdings möchte hier dafür plädieren, neben der DEFinition von Konstanten auch weiterhin die Möglichkeit der Definition von einzeiligen Funktionen in der Hilfe dokumentiert zu lassen. Nur sollte man dem Kind vielleicht einen anderen Namen geben: meiner Meinung nach wäre Makro sehr zutreffend.
Begründung: Neben der Möglichkeit, häufig wiederkehrende Rechnungen mit nur einer Zeile (die Variante mit einer Doppelpunkt-getrennten einzeiligen Prozedur ist schon mehr Tipparbeit...) elegant abzuküren, gibt es auch einen handfesten Geschwindigkeitsvorteil der DEF-Variante! Folgender Code zeigt bei mir einen Gewinn von ca. 25% in der Makro-Variante (16172 ms zu 21500 ms, XProfan 10.0a, kompiliert): KompilierenMarkierenSeparierenDEF MulDivMacro(3) (&(1) * &(2) / &(3))
proc MulDivFn
parameters x&,y&,z&
return x& * y& / z&
endproc
DEF &Count 500000
Cls
Randomize
declare start&,stop&
declare tmp&
print Rechne...
start& = &GetTickCount
whileloop &Count
tmp& = MulDivMacro(Rnd(5000),Rnd(6000),Rnd(7000)+1)
wend
stop& = &GetTickCount
print Zeit mit Makro: ,int(stop& - start&),ms
print Rechne...
start& = &GetTickCount
whileloop &Count
tmp& = MulDivFn(Rnd(5000),Rnd(6000),Rnd(7000)+1)
wend
stop& = &GetTickCount
print Zeit mit Funktion: ,int(stop& - start&),ms
waitkey
end
MfG
Sebastian |
|
|
| |
|
|
|
Sebastian König | Hmm... gibt es gar keine Meinungen hierzu (mein Posting direkt über diesem, meine ich)? Roland? |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Jörg Sellmeyer | Sebastian König
Hmm... gibt es gar keine Meinungen hierzu (mein Posting direkt über diesem, meine ich)? Roland?
Naja, da kann es ja eigentlich keine zwei Meinungen zu geben. Entweder muß Roland das reviedieren oder sich Gedanken dazu machen, wieso die Prozedur langsamer ist. Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.09.2007 ▲ |
|
|
|