![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
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: Eine einfache - an BASIC angelehnte - Syntax auch - aber nicht nur - für den Anfänger Traditionelle prozedurale und zukunftsweisende objektorientierte Programmierung gleichzeitig Alle Grafik- und Multimediamöglichlkeiten die Windows bietet Umfangreiche Datei- und Verwaltungsfunktionen Das komplette Programm in einer nicht zu großen Datei Keine weiteren DLLs oder sonstige Dateien Möglichkeit, Anwendungen ohne weitere Kosten weiterzugebenHerausgekommen ist bisher "XProfan 11". 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)
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (27.02.2010 um 16:30 Uhr) |
|
|
|
|
|
|
#2 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
Hallo,
nun will ich, der Autor von XProfan, auch mal meinen Senf dazu geben! 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.) Für was ist XProfan nicht geeignet? 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 Profan² 7.6 und der werdende Spieleprogrammierer nimmt OGLBasic PE, den "kleinen Bruder" von XProfan. Gruß Roland Geändert von RGH (21.02.2009 um 19:21 Uhr) Grund: Tippfehler korrigiert ... zumindest Einige ... |
|
|
|
![]() |
|
| Lesezeichen |
| Stichworte |
| programmieren, xprofan |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| XProfan 8 ist jetzt Freeware. Damit kann jeder programmieren! | Frabbing | Aktuelle Meldungen | 0 | 22.11.2009 19:56 |
| Mal eine einfache Frage? - Wie erstellt man eine vollständige Sicherung? | mAd-ShadoW | Windows Vista | 3 | 06.09.2008 17:06 |
| toolbar programmieren - wo bekomme ich eine art codegerüst? | rumsfield | Sonstige Programmiersprachen | 0 | 15.01.2006 23:54 |
| Suche eine Software tzm Programmieren | Matthhias | Software - Allgemein | 0 | 04.09.2005 12:56 |
| Eine einfache Frage | jurek94 | Windows XP | 3 | 28.06.2005 11:53 |