XProfan: Einfach programmieren, eine einfache Programmiersprache

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • [Blockierte Grafik: http://www.jds-online-shop.de/…ofanx2_250x250%5B1%5D.jpg]


    Vorbemerkungen: XProfan ist eine äußerst mächtige Programmier- und Batchsprache für Windows in Einem. Zudem ist XProfan auch noch ein SQL-fähiges Datenbank-Entwicklungssystem mit ODBC-Schnittstelle und direkter dBase-Unterstützung. Auch die Fähigkeiten als MultiMedia-Entwicklungstool können überzeugen. XProfan enthält beides: Interpreter und schnellen Compiler!


    Es gibt auch Profan-Versionen für Linux und DOS mit eingeschränktem Befehlsumfang. Auch hier gilt: Ein neues Linken reicht aus, um aus einen Linux- oder DOS-Programm ein Windowsprogramm zu machen. Im Netzwerk könnte ein und dasselbe (!) Kompilat von Windows-, LINUX- oder DOS-Runtimes mit der gleichen Versionsnummer gestartet werden: Ein Programm auf dem Server - beliebige Clients!


    Ziele der Entwicklung von XProfan sind:


    :admin: Eine einfache - an BASIC angelehnte - Syntax auch - aber nicht nur - für den Anfänger
    :admin: Traditionelle prozedurale und zukunftsweisende objektorientierte Programmierung gleichzeitig
    :admin: Alle Grafik- und Multimediamöglichlkeiten die Windows bietet
    :admin: Umfangreiche Datei- und Verwaltungsfunktionen
    :admin: Das komplette Programm in einer nicht zu großen Datei
    :admin: Keine weiteren DLLs oder sonstige Dateien
    :admin: Möglichkeit, Anwendungen ohne weitere Kosten weiterzugeben


    Herausgekommen ist bisher "XProfan 12". Eine komplette Programmiersprache. Der Anfänger wird viele BASIC-Befehle in gewohnter Form wiederfinden, u.a. PRINT, LOCATE, CLS, INPUT, IF, WHILE, WEND, SOUND, PRINT #n, INPUT #n, END, LET, ...


    Auch die Variablen und Konstanten werden weitestgehend wie in BASIC gehandhabt, wenn auch mit dem Bereichs-Typ ein Datentyp eingeführt wurde, der die Flexibilität von Zeigern bietet, ohne deren Gefährlichkeit in der Anwendung.


    Bei den Dateioperationen wurde allerdings das etwas vielseitigere Konzept von PASCAL übernommen:
    ASSIGN, RESET, REWRITE, APPEND, RENAME, ERASE, CLOSE, SETFATTR, ...
    Mit COPY können Dateien kopiert werden und mit CHDIR, MKDIR und RMDIR können Verzeichnisse verwaltet werden. Spezielle Funktionen geben Auskunft über das aktuelle Laufwerk, den aktuellen Pfad, Attribute, Änderungsdatum und vieles mehr.


    Dazu kommen dann noch Windows-spezifische Dinge, wie Menüs, Listboxen, Inputboxen, Load- und Save-Dialoge, ... um nur ein paar Möglichkeiten zu nennen. Zahlreiche vorgefertigte Dialogboxen nehmen dem Programmierer bei Standardaufgaben viel Arbeit ab. Wem das nicht ausreicht, dem wird mit den vielfältigen Möglichkeiten der Oberflächengestaltung gedient, die von mehreren "Helfern" tatkräftig unterstützt werden. Dialoge können völlig frei gestaltet und variiert werden. Alle wesentlichen Dialogelemente stehen zur Verfügung.


    Natürlich ist ein Zugriff auf Ressourcen möglich, sodass es z.B. denkbar ist alle Menüs, Dialoge, Texte, Icons und Bitmaps eines Programmes mit einem Tool wie dem "Resource Hacker" in einer DLL oder dem Runtime-Modul unterzubringen


    Sehr wichtig sind natürlich auch die umfangreichen Grafikbefehle, die direkt auf den Grafik-Kern von Windows zugreifen: USEBRUSH, USEFONT, USEPEN, USEICON, COPYBMP, RECTANGLE, ROUNDRECT, ELLIPSE, ARC, PIE, DRAWTEXT, ...
    Mit LOADBMP und SAVEBMP können Bitmap-Grafiken geladen, verarbeitet und gespeichert werden. Memorybitmaps sorgen für das notwendige Tempo bei Animationen. Das Drucken der Grafiken ist natürlich kein Problem!


    Für den Multimedia-Fan bietet XProfan auch einiges: Ansteuerung aller Multimediageräte und Abspielen von WAV-Sounddateien über die Soundkarte. Über die MIDI-Erweiterung der Befehle PLAY und MUSIC komponieren Sie mehrstimmige Songs mit den Sounds Ihrer Soundkarte. Das Abspielen von Musik-CDs ist ebensowenig ein Problem wie das Untermalen von Spielen mit Geräuschen oder das Abspielen von Microsofts Video für Windows: MCISEND, PLAYSOUND, ...


    Per FTP-Protokoll ist der Zugriff aufs Internet möglich: Dateien und Verzeichnisse lesen, Dateien schreiben, etc. Der Programmierung von Software, die über das Internet Daten austauscht, steht somit nichts im Wege.


    XProfan hat zahlreiche Datenbankfunktionen zum Lesen und Bearbeiten von dBase III- kompatiblen Datenbanken. Kleine und mittlere Datenbankanwendungen sind für XProfan kein Problem. Zusätzlich kommt noch die ODBC-SQL-Schnittstelle hinzu, so dass XProfan auch im Client-Server-Bereich eine immer größere Rolle spielt. SQL ist auch für XProfan keine Fremdsprache.


    Die Kontrolle "fremder" Fenster ist ebenso möglich, wie das Senden von Messages und Tastaturcodes. Gerade die zahlreichen Windowsbotschaften eröffnen dem Programmierer umfangreiche Möglichkeiten, auch fremde Anwendungen durch ein XProfan-Programm anzusteuern und zu beeinflussen. Mittels DDE können z.B. Programmanagergruppen angelegt, umbenannt und auch wieder entfernt werden.


    Einige Spezialbefehle und eine Option des Linkers ermöglichen die einfache Programmierung von ScreenSavern, die über den Windows-Desktop angesteuert werden können.


    Der fortgeschrittene Anwender wird vermutlich zur Bildschirmausgabe die textorientierten Ausgabebefehle des BASIC weniger verwenden, als vielmehr die neuen und mächtigen Windows-Befehle, die volle Kontrolle über die Windows-Grafik bieten und auch TrueType-Schriften voll unterstützen. Text in allen Größen, Farben und Ausrichtungen ist kein Problem.


    Wem all dies nicht ausreicht, der kann Funktionen aus Windows-API und DLLs einbinden und so den Funktionsumfang nahezu beliebig erweitern.


    Strukturierte und übersichtliche Programmierung wird ermöglicht, indem nur ein Befehl pro Zeile erlaubt ist und zahlreiche Kontrollstrukturen verfügbar sind:
    IF ... ELSEIF ... ELSE ... ENDIF, CASE, WHILE ... ENDWHILE, REPEAT ... UNTIL, SELECT ... CASE.
    Mit PROC ... ENDPROC können Prozeduren und Funktionen definiert werden und mit DEF können externe Funktionen definiert werden. In Prozeduren und Funktionen gibt es lokale Variablen.


    OpenGL wird auch direkt durch zahlreiche Funktionen unterstützt:


    oGL("2D"...3D Position wird in Bildschirmkoordinaten gewandelt
    oGL("BitmapFont"...Ein Bitmap-Font für OpenGL wird erzeugt
    oGL("Blendmode"...Der Überblendmodus wird eingestellt
    oGL("Clear"...Löscht den OpenGL-Bildschirm
    oGL("Color"...Farbe für die folgenden Zeichenoperationen
    oGL("CreateXPGL"...Erzeugt XPGL-Daten
    oGL("Cuboid"...Ein Kubus wird gezeichnet
    oGL("Cylinder"...Ein Zylinder wird gezeichnet
    oGL("DeleteList"...Die Displayliste wird gelöscht
    oGL("DeleteTexture"...Löscht die Textur aus dem Grafikspeicher
    oGL("Disk"...Eine Scheibe bzw. ein Ring wird gezeichnet
    oGL("Done"...OpenGL wird beendet
    oGL("Draw"...Zeichnet ein 3D-Sprite
    oGL("DrawList" ...Die Displayliste wird ausgeführt
    oGL("DrawXPGL"...Zeichnet die aktuellen XPGL-daten
    oGL("EndList"...Ende der Darstellungs-Liste
    oGL("EndTest"...Der Testmodus wird beendet
    oGL("ErrorString"...Fehlerbeschreibung zum OpenGL-Fehler
    oGL("Fog"...Der Nebelmodus wird eingestellt
    oGL("GetTextureBMP"...Eine Bitmap wird als Textur bereitgestellt.
    oGL("Init"...OpenGL-Initialisierung
    oGL("LoadTextureBMP"...Eine Bitmapdatei wird als Textur bereitgestellt
    oGL("LoadXPGL"...Lädt eine XPGL-Datei
    oGL("LoadXPGLData"...Lädt binäre XPGL-Daten
    oGL("Locate"...Position der Ausgabe des Bitmap-Fonts
    oGL("Move"...Bewegt den Ausgangspunkt
    oGL("Origin"...Ursprungskoordinatensystem festlegen
    oGL("Outlinefont"...Ein 3D-Font für OpenGL wird erzeugt
    oGL("PartialDisk"...Der Teil eines Rings wird gezeichnet
    oGL("Pop"...Attribute und Koordinatensystem werden widerhergestellt
    oGL("PosMode"...Positionierungsmodus wird festgelegt
    oGL("Print"...Textausgabe
    oGL("Push"...Attribute und Koordinatensystem werden auf den Stapel gesichert
    oGL("Pyramid"...Eine Pyramide wird gezeichnet
    oGL("Quad"...Ein Quadrat wird gezeichnet
    oGL("Rotate"...Das Koordinatensystem wird gedreht
    oGL("SaveXPGLData"...Speichert die XPGL-Daten als binäre Datei
    oGL("Scale"...Die folgenden Objekte werden scaliert
    oGL("SetName"...Weist einem OpenGL-Objekt eine Kennzeichnung zu
    oGL("Show"...Die OpenGL-Szene wird angezeigt
    oGL("Sphere"...Eine Kugel wird gezeichnet
    oGL("StartList"...Eine Darstellungs-Liste wird erzeugt
    oGL("StartTest"...OpenGL wird in den Testmodus geschaltet
    oGL("TestMouse"...Entfernung einer 3D-Koordinate zur Mausposition
    oGL("TestXY"...Entfernung einer 3D-Position zu einer Bildschirmposition
    oGL("Texture"...Einstellung der Textur
    oGL("Triangle"...Ein Dreieck wird gezeichnet
    oGL("Tube"...Eine Röhre wird gezeichnet
    oGL("UseXPGL"...Die XPGL-Daten werden zum Zeichnen vorbereitet
    oGL("XPGLCount"...Ermittel die Anzahl der Punkte in den XPGL-Daten
    oGL("XPGLObjType"...Ermittelt den Objekttyp der XPGL-Daten
    oGL("XPGLType"...Ermittelt die Art der Werte der XPGL-Daten
    oGL("<Apifunktion>"...Ruft eine Funktion der OpenGL-API auf


    Mit SubProc kann die Container-Funktion OpenGL() um weitere selbstdefinierte Funktionen erweitert werden.


    XProfan hat einen Compiler, der einen sehr kompakten Zwischencode erzeugt, der mit einem Runtime-Modul gestartet werden kann. Das letzte Glied in der Kette zur kompletten Programmiersprache ist der im Compiler integrierte Linker, der Runtimemodul und Zwischencode zu einer eigenständigen EXE- Datei oder zu einem ScreenSaver linkt.
    Und da das Runtime-Modul keine 700 kB groß ist, sind recht aufwendige Windowsapplikationen unter 1 MB möglich. In den meisten Fällen paßt ein komplettes XProfan-Programm immer noch auf eine Diskette ... sofern man dieses historische Speichermedium noch hat. Da die fertige XProfan-Applikation immer noch als Runtime-Modul für weitere Zwischencode-Dateien dienen kann und sogar eine Übergabe von Parametern (z.B. über die Zwischenablage) möglich ist, steht der modularisierten Programmierung nichts im Wege.


    Ach ja: Das berühmte "Hallo Welt"-Programm in XProfan:


    Print "Hallo Welt"
    WaitKey
    End


    So einfach ist das. Das "WaitKey" steht nur deshalb da, damit der Anwender Gelegenheit hat, das Ergebnis zu betrachten: Ein Programm in einem Windows- Fenster mit allem was dazugehört. Sozusagen eine vollständige Windows- Applikation. Mit einem Tastendruck oder über die entsprechende Fensterfunktion wird das Programm beendet.
    Natürlich beherrscht XProfan das auch in Form eines reinen Windows-Dialoges mit "Ok"-Knopf:


    MessageBox("Hallo Welt","als Windows-Dialog",64)
    End


    Die Kombination von Interpreter und Compiler bietet interessante Vorteile. Im Interpretermodus entwickeln Sie das Programm und testen es aus. Ein zuschaltbarer TRACE-Modus, Debug-Infos und Breakpoints unterstützen Sie dabei. Und wenn es dann fertig getestet ist, verleihen Sie ihm mit dem Compiler den nötigen Drive!


    ... und eine Batchsprache für Windows benötigen Sie auch nicht mehr, wenn Sie XProfan haben!

    Webpage des Herstellers zum Downloaden der verschiedenen Free- und Shareware-Versionen: PROFAN


    (Gepostet mit freundlicher Genehmigung des Text- und Programmautors Roland G. Hülsmann)

  • [LEFT]Hallo,


    und noch einige zusätzliche Hintergrund-Infos! ;)


    Warum gibt es XProfan?


    "Profan" steht als Wortspiel einerseits für "Programmieren für Anwender" und andererseits für das griechische Wort für "einfach" oder "gewöhnlich" im Gegensatz zu "heilig".
    1991/92 war die Windowsprogrammierung noch sehr kompliziert. Es gab einige wenige, eher akademisch eingesetzten, objektorientierten Programmiersysteme und für die Mehrzahl der Programmierer eben C und etwas später Turbo Pascal für Windows. Und um damit z.B. ein Fenster zu erzeugen, auf dem eine Linie gezeichnet wurde, brauchte es mehrere Seiten Code: Die Windowsroutine war zu schreiben, die Messageverwaltung, etc. und um die Linie zu zeichen mußte erst ein Devicekontext erzeugt werden, dann Brush und Pen definiert werden ... und wenn man dann eine Linie auf dem Fenster sah und es bewegte, war sie sofort wieder verschwunden. Das Neuzeichnen bei Veränderung des Fensters gehtr natürlich nicht von alleine, denn das Programm bekommt von Windows nur per Message mitgeteilt, dass es neu gezeichnet werden sollte. Das Programm muß also diese Message abfragen und das Neuzeichnen dann übernehmen ...


    Von Turbo Basic und Turbo Pascal her kommend,sagte ich mir: Das muß einfacher gehen. So wie ehedem bei BASIC: Ein CLS und anschließend ein LINE. Um den ganzen Rest muß sich der Programmierer nicht kümmern müssen. Und Mitte 1992 ging es einfacher. Profan 1.3/1.4 wurde von mir als Shareware frei gegeben.


    Für was ist XProfan geeignet?


    XProfan ist geeignet für die Programmierung von alle Arten von Anwendungen, wobei ich dazu natürlich auch Spiele zähle. Da XProfan ursprünglich plattformübergreifend gedacht war (es existieren in der Tat auch ältere textbasierte Versionen für DOS, OS/2 und Linux), erzeugt der Compiler einen Zwischencode, der von der jeweiligen zum System passenden Runtime (heute spricht man da eher von Virtual Machine) abgearbeitet wird. (Ähnlich machte es früher auch Visual Basic und immer noch Java.) Auch wenn XPreofan im Laufe der Entwicklung oftmals beschleunigt wurde, kommt es von der Geschwindigkeit doch nicht immer an Delphi oder C++ heran. Manches wird allerdings dadurch wett gemacht, dass seitenlanger C++-Quelltext in XProfan oftmals nur wenige Zeilen benötigt.
    Vieles, was in anderen Sprachen durch externe Bibliotheken möglich wird, kann XProfan schon in der "Grundausstattung": Embedded SQL, dBase-Dateien, FTP und eMails senden und vor allem seit XProfan 10 OpenGL! Und besonders hier macht XProfan die Sache wieder richtig einfach: was in
    anderen Sprachen über seitenweisen Code möglich ist, schafft das XProfan-OpenGL in wenigen Zeilen! Schaut Euch nur mal den OpenGL-Kurs in der Hilfe an und vergleicht es selbst! (Die aktuelle Hilfe kann hier geladen werden: http://www.xprofan.de/download/prfchm.zip )


    Ach ja: Ein fertiges XProfan-Programm ist in der Regel eine EXE, die oft noch auf eine dieser historischen Disketten passen würde und benötigt keine weiteren mehre zig Megabyte schweren Laufzeitbibliotheken wie etwa die VB-Runtime oder die NET-Unterstützung, um zu funktionieren ... und das sogar noch auf dem uralten Windows 95!


    Das Einbinden der Windows-API ist auch kein Problem. Gerade in XProfan 11 wurde das noch einmal vereinfacht. Selbst APIs, die CallBack-Adressen erwarten, können genutzt werden und das auch im Interpreter, also im Batchbetrieb. (Dafür sind die CallBack-Funktionen in XProfan geschaffen worden und dafür funktionieren sie auch perfekt.)


    Es gibt auf dem Markt zahlreiche Spiele und Anwendungen, die in Profan² (Version 2 - 7) oder XProfan (ab Version 8) programmiert wurden. Ich weiß z.B. von einem kompletten Warenwirtschaftssystemin XProfan und auch meine Kundenverwaltung habe zu großen Teilen von Clipper nach XProfan portiert. Was kommerzielle Spiele betrifft, fällt mein Auge gerade auf die Packungen von "Robo Challenge XL" (läuft ohne Patch nur unter Win 9x/ME) und die Aufbausimulation "Die Smaragdmine". (Ein paar einfachere Spiele sind auf der XProfan CD mit dabei.)


    [B]Für was ist XProfan nicht geeignet?[/B]


    XProfan nimmt dem Programmierer eine ganze Menge ab. Daher hat XProfan ein eigenes internes Messagehandling und eigene Fensterroutinen für die in XProfan möglichen Fensterklassen. Dieses kollidiert natürlicherweise mit sehr systemnaher Programmierung, wie sie für Dienste, manche Überwachungstools, virenähnliche Programme, etc. nötig wären. Hier hat Andreas (AHT) also recht, wenn er feststellt, dass XProfan für die Programmierung von bestimmten speziellen Systemtools ungeeignet ist. Wer so etwas möchte, findet aber das was er sucht bei C/C++ (da gibt es eine Reihe freier Compiler) und Assembler. (Auch von Delphi mit OWL würde ich da aus eigener Erfahrung abraten, aber das gehört nicht hierher ...) Es gibt zwar eine Funktion, um das XProfan-eigene Messagehandling weitgehend abzuschalten, aber gänzlich abgeschaltet wird es dadurch auch nicht. Ebenso führt die Verwendung der Prozeduradressen für etwas anderes als die genannten Callbacks zwangsläufig zu Problemen. Wenn man diese Grenzen kennt und damit umzugehen weiß, kann man trotzdem das eine oder andere auch in XProfan verwirklichen, besonders wenn man zusätzlich Assemblerroutinen (etwa mit Franks XProfan Inline Assempler XPIA) oder DLLs einbindet.


    Und weiter?


    Wer es ausprobieren will, findet hier ( PROFAN Download ) ja genügend Möglichkeiten. Wer die beste OpenGL-fähige Batchsprache für Windows nutzen will, sollte zu XProfanFree greifen, der künftige Anwendungsprogrammierer wählt die Freeware-Vollversion XProfan 9.1 und der werdende Spieleprogrammierer nimmt OGLBasic PE, den "kleinen Bruder" von XProfan.


    Gruß
    Roland


    [/LEFT]

    (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
    AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


    http://www.xprofan.de