Die Community zu .NET und Classic VB.
Menü

Purebasic - Ein Erfahrungsbericht

 von 

Einleitung 

Auf Wunsch von Klaus habe ich meinen Beitrag aus dem VB6-Forum zu einer Kolumne umformuliert und mit weiteren Informationen ergänzt.

Quelle: Orginalbeitrag aus dem VB6-Forum

Für mich stellte sich damals die Frage, ob ich mit VB6 weitermache, eine .NET-Sprache lerne oder irgendeine andere Sprache, die etwas stärker verbreitet ist. Ich komme ursprünglich aus der VBA/VB6-Ecke, hatte also kaum Erfahrung mit Programmiersprachen und lernte zu dieser Zeit mit VB6, C++, PHP und HTML etwas zu entwickeln.

Ich suchte nach einer preislich günstigen (weil ich damals Schüler war), aber leistungsfähigen Sprache mit einer basic-ähnlichen Syntax, die auf möglichst vielen Betriebssystemen ohne große Anpassungen läuft.

Reiner

Die Sprache  

Die Sprache selbst ist prozedural gehalten, unterstützt aber Anbindungen an objektorientierte Bereiche des Systems, wie z.B. COM oder ActiveX (via Include). Allerdings habe ich damit bisher nicht gearbeitet, weil ich es nicht benötige. Es gibt zusätzlich diverse PreCompiler, die OOP bereitstellen - insgesamt deutlich besser als VB6 das konnte, da man damit auch die Unterstützung für Vererbung, Polymorphie und diverse weitere OOP-Features hat.

Die Sprache wird stetig weiterentwickelt, es kommen bei fast jedem Release neue Librarys hinzu. Vor kurzem haben sich die Entwickler entschieden die Releasezyklen zu verkürzen, um gepatchte Versionen schneller an die Kunden auszuliefern.

Des Weiteren gibt es die Möglichkeit direkt im Code Inline-Assembler einzusetzen, sowie Funktionen des Windows-API ohne zusätzliche Deklarationen direkt ansprechen zu können. Die Syntax ähnelt der von VB6 und ist leicht zu erlernen, u.a. aufgrund der sehr ausführlichen und verständlichen Dokumentation.

Purebasic erlernen  

Die Hilfe ist sehr ausführlich geschrieben und jeder Befehl ist auf Deutsch dokumentiert. Die Forenteilnehmer im Forum des Herstellers ( http://www.purebasic.fr/german/) sind sehr freundlich gesonnen und geben kompetente Hilfe. Vieles ist bereits gefragt und gelöst worden; man muss halt die Suchfunktion bemühen oder Google fragen. Es gibt auch sehr viele Beispielcodes und Tipps auf purearea.NET. Technisch agieren die Teilnehmer auf hohem Niveau, auch wenn es um systemnahe Fragen geht, findet man kompetente Hilfe. Es ging sogar das Gerücht um, dass Purebasic in den Kreisen der Malware-Programmierer einen guten Ruf genießt, weil es nunmal sehr schnelle und vor allem kleine Programme erzeugt und dabei auch noch leicht zu programmieren ist.

Die Sprache orientiert sich zwar teilweise an VB6, für Umsteiger ist es jedoch unumgänglich die Hilfe zu benutzen. Allerdings hatte ich nach ca. einer Woche einen Großteil der wichtigsten Befehle drauf und konnte meine erste Anwendung schreiben, in der ich bereits auf die Windows-API zurückgegriffen habe.

Fakten zu Purebasic  

  • Betriebssystem-API-Funktionen integriert (Windows und Linux, MacOSX weiß ich nicht)
  • Abwärtskompatibel bis Win3.1
  • 32bit- und 64bit-Support
  • Unterstützung von Windows, Linux und MacOSX (Windows und Linux habe ich selbst ausprobiert genial!)
  • Konsolenanwendungen möglich
  • Inline-ASM möglich
  • OOP Support durch PreCompiler möglich
  • Threadprogrammierung sehr umfangreich möglich
  • SerialPort ansteuerbar
  • Medien per integriertem DX/OpenGL-Wrapper abspielbar
  • umfangreiche Grafikbibliotheken (PNG, TIFF, JPG und TGA ladbar)
  • Hash-Bibliothek (MD5, SHA1, AES, CRC32) integriert
  • Umfangreiche Möglichkeiten für Bildmanipulation
  • OGRE-3D-Engine per integriertem Wrapper
  • Wrapper für Fensteranwendungen in 3D (ja, sowas gibts http://www.cegui.org.uk)
  • Scintilla (Quellcode-Editor) per integriertem Wrapper
  • Datenbankenschnittstellen vorhanden (ODBC, SQLite und PostgreSQL)
  • XML-Bibliothek
  • Unterstützung von Regulären Ausdrücken
  • Bibliothek, um fremde Prozesse fernzusteuern (z.B. Konsolenanwendungen, praktisch z.B. für Ping)
  • Unicode-Unterstützung
  • Es werden sehr ressourcensparende Programme werden erstellt
  • Erstellen von Windows-/Consolen-Exe und DLL möglich
  • Codekompatibilität zu unterschiedlichen Betriebssystemen
  • integrierte Kompressionsroutinen (JCalG1-Algorithmus)
  • OnError-Bibliothek, um auf Fehler reagieren zu können
  • Umfangreiche IDE mit Syntaxhighlighting, Autocomplete und Projektverwaltung, Debugger, Breakpoints, Variablenüberwachung, Disassembler und Aufrufverfolgung
  • VisualDesigner (nicht so gut wie bei VB6, da z.B. keine Usercontrols möglich, aber mit WinAPI kann man ja so ziemlich alles machen)
  • sehr ausführliche Dokumentation inklusive kommentierter Beispiele
  • es sind keine Runtimes-Libraries erforderlich, um ein kompiliertes Programm auszuführen.

Unterschiede zu VB6  

  • keine Usercontrols durch Klicken erstellbar
  • Controls heißen Gadgets
  • etwas andere Gadgetbezeichnungen als unter VB6
  • kein guter GUI-Editor zum Zusammenklicken, dafür leicht verständliche GUI-Funktionen
  • man muss den Event-Loop wie bei C/C++ selbst schreiben, Beispiel:
  • If OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | 
    #PB_Window_MinimizeGadget)
      Repeat ; eine Schleife, der sog. Eventloop, um Events abzufangen
        Event = WaitWindowEvent()
        Select Event
          Case #PB_Event_CloseWindow ; beim Schließen des Fensters
            Quit = 1
          Case #PB_Event_MinimizeWindow ; beim Minimieren des Fensters
            MessageRequester("Titel: Fenster minimiert", "Inhalt: Fenster wurde minimiert")
        EndSelect
      Until Quit = 1
    EndIf
    End
  • geringfügig andere Syntax
  • für OOP muss man sich bereits gut mit dem Debugger auskennen, da hierbei die vorkompilierten Codes durch den Compiler gejagt werden und man dann auf dieser Basis die Fehlermeldungen erhält. Das ist halt ein wenig Bastelei.

Purebasic kaufen  

Ausschließlich über http://www.purebasic.com, dort kann man es auch per Überweisung ordern. Die Kaufversionen in Läden oder auf Amazon sind Versionen ohne lebenslange Updategarantie!

Kauft man über purebasic.com, zahlt man einmalig 79€ und besitzt die "Vollversion", inklusive lebenslanger Updates

Beispiele  

z.B. mein Tool mouseLock inkl. Source ( http://diinggentlementz.com/#/Projekte/mouseLock.html) Dieses dient dazu auf einem Notebook/Netbook einen Mausklick zu sperren, während man am Tippen ist. Somit kann man nicht versehentlich den Cursor auf dem Touchpad verschieben, während man längere Texte tippt.

Ein anderes Beispiel:
Ich hatte das Problem, dass ich neue Inhalte in eine alte, nicht utf-8-fähige Webanwendung kopieren musste. Nun sind allerdings alle Texte aus der Worddatei mit den Umlauten Ö,Ä,Ü,ä,ü,ö und ß versehen. Auch musste ich nur bestimmte Texte der Worddatei aktualisieren. Um jetzt nicht 6h Texte zu kopieren und von Hand anzupassen, habe ich kurzum ein Tool geschrieben, das 2mal pro Sekunden die Zwischenablage auf neue Inhalte prüft. Werden neue Inhalte gefunden, so werden die Umlaute automatisch durch ihre HTML-Entitäten ersetzt und der Text in der Zwischenablage aktualisiert. Das ganze waren ca. 10 Zeilen Code, geschrieben in 10 Minuten und hat mir grob geschätzt 4h Arbeit erspart. Purebasic ist für Alltagsprobleme ideal einsetzbar. Unter VB6 hätte ich mich abgekämpft, um auf die richtige API zurückzugreifen, um einen Text in die Zwischenablage zu kopieren.

Oder zum Suchen von doppelten Dateien auf der Festplatte:
Alle Dateien auflisten lassen, in eine SQLite-DB reinpumpen und dort gleiche Dateigrößen sowie identische Datumsangaben in einen View packen. Dann noch die MD5-Summen von den gefundenen Dateien vergleichen, wenn identisch, dann Treffer und diesen dem Nutzer melden. Auch nur ca. 200 Zeilen Code und alles mit Purebasicinternen Funktionen. Läuft also unter Windows, Linux, sowie MacOSX.

Meine Meinung und Empfehlung  

Purebasic gibt mir die Möglichkeiten von C++ mit der Syntax und Einfachheit von VB6 und dem Umfang von PHP an die Hand, um kleine und schnelle Programme zu erzeugen, dessen Größe und Leistungsfähigkeit ich sonst nur mit Assembler erreichen würde. Die Stabilität der Programme ist richtig gut, ich habe noch keinen Absturz oder Fehlverhalten auf unterschiedlichen Systemen gehabt. Angenehm finde ich auch die Benennung der Funktionsbezeichnungen. Z.B. mit OpenConsole öffne ich eine Konsole. Mit OpenSubMenu kann ich ein Untermenü erstellen. Mit SendNetworkString kann man einen String an einen Client im Netzwerk senden. Insgesamt sehr logisch und verständlich diese Bezeichnungen. Natürlich scheiden sich an manchen Punkten die Geister, aber im Großen und Ganzen ist das sehr gut gelungen, wenn man weniger auf wissenschaftlich formulierte Beschreibungen, sondern auf einfache und verständliche Beschreibungen Wert legt.

Allerdings kann ich Purebasic bislang nur für Tools empfehlen und noch nicht für große, professionelle Anwendungen, da ich damit bisher nur Tools programmiert habe. Mein größtes Projekt hatte gerade mal 5000 Zeilen. Der Compiler arbeitet sehr schnell und zuverlässig und gibt Fehler gut verständlich aus.

Für einfache Anwendungen von Hobbyentwicklern super geeignet, allerdings für große Anwendungen (z.T. auch wg. mangelnder nativer OOP-Unterstützung) eher nicht zu empfehlen, weil es halt etwas "unprofessionell" wirkt. Das Potential spreche ich Purebasic allerdings damit nicht ab, große Projekte umsetzen zu können! Purebasic besitzt mehr das Flair von VB6 als von VB.NET und ist dementsprechend auch geeignet.

Seitdem ich mit dieser Sprache programmiere, hat sich dort eine ganze Menge getan. Bisher habe ich alle Änderungen als Vorteil werten können. Die Entwickler beachten die Wünsche der Nutzer und scheinen ihre Sprache auch selbst zum Entwickeln einzusetzen.

Purebasic ist somit für Hobbyentwickler interessant, die schnell und einfach Programme entwickeln wollen, ohne sich groß in Programmiertechniken einlesen zu müssen.

Ich hoffe, dass euch dieser Einblick dazu bringt, Purebasic eine Chance zu geben, die aktuelle Demoversion herunterzuladen und etwas Spass zu haben :-)

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 7 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Reiner am 02.10.2011 um 00:14

Hallo Jürgen,

ich stimme dir grundsätzlich überein, dass Purebasic nicht für RAD-Entwicklung gedacht ist.
Mittlererweile habe ich mich beruflich mehr in Richtung Web orientiert, sodass Purebasic für mich nur noch wenig Bedeutung hat. Ich hatte mir damals (nachdem ich diese Kolumne geschrieben habe) eine OOP-Klasse geschrieben, die einem das Erstellen und das Handling mit Fenstern etwas erleichtert. Ich gebe aber zu, dass sich dies nur bei wirklich großen Projekten lohnt und genau dafür ist Purebasic nicht wirklich ausgelegt. Ich finde es lediglich praktisch, wenn man so Standardsachen machen muss, z.B. ein Logfile parsen oder eine Stringbearbeitung durchführen, auch wenn hier Reguläre Ausdrücke m.E. etwas umständlich umgesetzt sind.

Gruß


Reiner

Kommentar von Jürgen am 30.09.2011 um 20:20

Hallo,

ich habe schon vor ca. 10 Jahren mit VB 5, später 6, eine komplette Warenwirtschaft erstellt, und auch über 100 mal verkauft.

Im Prinzip ist VB nicht soooo schlecht, auf VB.net bin ich jedoch nach einem Test nicht umgestiegen - ich mag es einfach nicht, wenn an allen möglichen Ecken und Enden Dateien angelegt werden, die ich nicht autorisiert habe.

Dann bin ich Anfang 2010 nach einer Demo von PB (PureBasic) zur Kaufversion gewechselt, und somit lizensiert.

Im Prinzip bin ich zufrieden. Mit PB ist jedoch RAD (Rapid Aplikation Development) nicht möglich - man muss "alles mögliche" von Hand schreiben. Allerdings ist es mit dem kostenlosen Tool PureFORM etwas einfacher. Es handelt sich im Prinzip um einen cleveren Editor, der ein wenig auch ereignisgesteuerte Programmierung - ähnlich wie bei VB - zulässt.

Fakt ist aber auch dies; PureBasic wird sich niemals richtig durchsetzen, schlicht weil keine vernünftige RAD möglich ist. RAD ist nummal in praktisch jeder ersthaften IDE möglich - nicht jedoch bei PB. Und genau das ist mir unverständlich. Aber gut, ich bin nicht der Entwickler von PB und muss es ja nicht verstehen :-)

Grüße
Jürgen
www.loetseite.de

Kommentar von Reiner am 06.06.2010 um 22:52

@Momrad:
Ja, manche Samples sind noch nicht zu 100% valide. Die meisten Beispiele sollten allerdings funktionieren. Hast du dich denn korrekt an die Installationsanweisung gehalten? Soweit mir bekannt müssen die XCode-Tools installiert sein, damit die Entwicklung mittels PB möglich ist. Der Compiler benötigt nämlich noch einen Assembler. Und der ist meines Wissens in XCode enthalten. MacOSX ist das neueste Betriebssystem, welches PB unterstützt. Daher können hier im Vergleich zu Windows auch noch gröbere Fehler enthalten sein, weil einfach eine kleinere Nutzerbasis existiert, die während der Beta-Phasen testen kann.

@marroh:
Du hast in einigen Punkten natürlich recht. Dennoch ist es Ansichtssache. Da ich z.B. nie viel mit COM basteln musste, ist mir das ehrlich gesagt egal. Der Bericht ist ein subjektiver Eindruck, keine objektive Analyse. Gerade für den ein oder anderen VB6-Entwickler könnte es interessant sein, sofern Linux unterstützt werden soll.

@milan:
Du hast natürlich recht, das Pointer-Management unter PB ist große Klasse. Allerdings kommt es, wenn man nicht aufpasst, auch hier wie unter C schnell zu Fehlern. Also eher nichts, um mal schnell etwas zu programmieren.

@dada:
Dem stimme ich nicht so wirklich zu. Es zwingt dich ja keiner, eine neuere Version einzusetzen. Auch sind die Bibliotheken meist kompatibel, sodass du den Orginalcompiler weiterverwenden kannst und nur gepatchte Bibliotheken aktualisierst. Es ist halt eine proprietäre Software, die von einer handvoll Entwickler programmiert wird. Ich empfinde das bereits als eine beachtliche Leistung!
Abgesehen sind seit Version 4.0 nur noch marginale Änderungen eingeflossen: Nur ganz wenige Befehle wurden entfernt. Meist wurden nur Parameter oder Rückgabewerte verändert oder die Funktion wurde umbenannt. Primär wurden aber eigentlich immer nur neue Befehle eingeführt. Natürlich ist es ärgerlich, wenn man ständig seinen Code verändern muss. Aber ich tue das z.B. gerne, weil ich bislang alle Änderungen als sinnvoll erachte. Es macht meinen Code besser lesbar.

Kommentar von Dada am 06.06.2010 um 19:36

Habe mir PB 2003 zugelegt und bin damit auch sehr zufrieden - jedoch sollte man beachten, dass es keine "stabile" Sprache ist - sprich: Was heute geschrieben wird, wird morgen nicht mehr kompiliert, da sich einige Befehle und Funktionen geädert haben.
Im kleinen Rahmen ist das schon sehr ärgerlich aber geradewegs akzeptabel - professionelle Entwicklung ist damit aber nicht möglich... was sehr schade ist.

Kommentar von milan1612 am 22.05.2010 um 19:18

Kann mich dem positiven Urteil nur anschließen.

Ich bin seit 5 jahren aktiver Purebasic Nutzer und bin eigentlich rundum zufrieden damit.

Dem Bericht hinzuzufügen wäre noch die sehr einfache und mächtige Unterstützung von Pointern. Direkte Manipulation von Speicher ist super realisiert und extrem performant. Hier kann man wirklich mal einen Vergleich mit C machen - bis auf die Syntax ;)

Kommentar von marroh am 05.05.2010 um 02:31

Hallo Reiner. Sehr schön im wesentlichen, Dein Erfahrungsbericht. :) Leider haben sich da einige Fehler/Halbwahrheiten eingeschlichen. Hier mal einige Punkte:
>bei Fakten zu Purebasic:
>Betriebssystem-API-Funktionen integriert
Viele, aber bei weitem nicht alle API-Funktionen sind direkt nutzbar.

>Hash-Bibliothek (MD5, SHA1, AES, CRC32) integriert
AES ist eine Verschlüsselung, keine Hash-Funktion.

>integrierte Kompressionsroutinen (JCalG1-Algorithmus)
Je nach Version. x86 = JCalG1, x64 = ZLib

>Es werden sehr ressourcensparende Programme werden erstellt
Dieser Satz ergibt (noch) keinen Sinn ;)

>bei Unterschiede zu VB6:
>geringfügig andere Syntax
Ausser den üblichen Basic-Like Befehlen a la Str(), Val() und Co. ist die Syntax alles andere als geringfügig anders.

>bei Die Sprache:
>...wie z.B. COM oder ActiveX (via Include).
Es bleibt dabei das PureBasic echt nicht für COM und Co. geeignet ist. Selbst mit dem Include ist es die Hölle damit auf COM oder ActiveX zuzugreifen. Vor allem wenn es mal etwas komplizierter ist als z.B. eine simple WMI-Abfrage oder so.

>Es gibt zusätzlich diverse PreCompiler, die OOP bereitstellen - insgesamt deutlich besser als VB6 das konnte

Das halte ich aber für ein böses Gerücht. Da hast Du aber gewisse Erweiterungen zu VB6 noch nicht gesehen oder erleben dürfen. Und PureBasic ist und bleibt schlussendlich eine prozedurale Sprache, da ändert auch die Ansätze der bis jetzt erhältlichen Pre-Compiler für PureBasich nichts daran.

>bei Purebasic erlernen:
>Die Hilfe ist sehr ausführlich geschrieben und jeder Befehl ist auf Deutsch dokumentiert.

Von wegen - lol. Gibt leider so einiges was in der Hilfe nur extremst spärlich dokumentiert ist. Sei es z.B. Prototypes, Imports oder auch div. einzelne andere Befehle die ich jetzt im Moment nicht alle auflisten mag.

Joa, könnte noch viel dazu tippen... aber Du hast Dir dennoch grosse Mühe gegeben was ich super finde. PureBasic ist es in jeden Fall wert. :)

lg Martin

Kommentar von Momrad am 02.05.2010 um 14:23

Habe gerade die Demoversion gestartet und ein Beispiel geladen. Compiliert, Startet und stürzt ab.

Für MacOS Leopard von mir nicht zu empfehlen, wenn nicht mal mitgelieferte Beispiele funktionieren.

Ich habe aber natürlich nicht alle Beispiele getestet.