BlitzMax - genau wie erhofft
Übersicht

![]() |
koril-kBetreff: BlitzMax - genau wie erhofft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mehrere Jahre in C++ programmiert und mich in die Sprache förmlich verliebt, da sie eine wunderbare Ausdrucksfähigkeit besitzt. Allerdings sah ich nach und nach ein, dass diese Sprache für die Hobbyentwicklung von Spielen einfach zu umständlich ist. Z.B. war und ist es unsagbar lästig, sich für die Spieleprogrammierung mit den ganzen Bibliotheken auseinanderzusetzen. Einige sind leicht verständlich aber zu eingeschränkt oder unausgereift (wie z.B. "Allegro") und wieder andere sind zu kompliziert (wie z.B. DirectX). Nachdem ich mich nun ein paar Wochen in BlitzMax eingearbeitet habe, habe ich schon die halbe Grundstruktur meines Spieles fertig. BlitzMax brachte mir genau die Erleichterung von dem technischen Ballast, den ich mir für meine kreative Arbeit erhofft habe.
Einige Dinge begeistern mich im Gegensatz zu anderen Sprachen besonders, die ich einfach mal aussprechen will: 1) Zum Einen enthält die Sprache alle Befehle zur sofortigen Verwendung bereit. Dieses elendige installieren und linken von Bibliotheken hat mich in C++ oft den letzten Nerv gekostet. Bis man da eine einfache "Hello World"-Testanwendung zustande bekommt musste man sich tagelang in die Dokumentation einlesen. 2) Weiterhin muss man aus dem selben Grund keine Strukturen vorbereiten, d.h. man muss keine INIT-Funktionen etc aufrufen, die die Bibliotheken initialisieren. In BlitzMax sage ich einfach "Graphics" und mein Fenster ist da. Was müsste ich dafür alles in DirectX machen? 3) Der nächste Punkt ist, dass die Sprache im Gegensatz zu C++ und anderen sehr natürlich wirkt. In C++ gibt es eine Vielzahl von Steuerzeichen, z.B. { ... }, &, ->, * (Indirektion) usw. die den Code technisch wirken lassen. Zwar finde ich persönlich den Code dadurch leichter lesbar, aber er wirkt auch sehr formal, starr, wenig einladend. Es macht nicht so viel Spaß, ihn zu schreiben, wie in BlitzMax. 4) Sehr erleichternd finde ich, dass BlitzMax keinen Wert auf die Reihenfolge von Definitionen legt. In C++ kann einen das Problem gegenseitiger Abhängigkeiten von Klassen schwer zu schaffen machen. Überhaupt ist dort die ganze Struktur der Quelltextniederschrift gewaltig: Man muss Header-Dateien entwerfen, die nichts weiter tun, als dem Compiler Arbeit zu erleichtern (dass sie prinzipiell nicht nötig sind, zeigt ja BlitzMax am deutlichsten). Ich will nicht behaupten, dass BlitzMax "besser" ist als C++, aber C++ ist so maschinennah und für so große Projekte entworfen, dass man sich um zahllose Dinge den Kopf zerbrechen muss, die einen bei einem Hobbyprojekt gar nicht im Detail interessieren. In BlitzMax habe ich in den wenigen Wochen, in denen ich jetzt damit arbeite, das Gefühl bekommen, dass ich den kreativen Anteil meiner Ideen direkt als Programm aufschreiben kann, statt mich um technische Details zu sorgen, die mir die Lust an der Entwicklung vermiesen (ist mir in C++ schon mehrfach vorgekommen). Dieser Luxus, so will ich ihn nennen, ist der wesentliche Unterschied zu anderen Hochsprachen. C++ sollte man zwar trotzdem lernen, um ein tieferen Verständnis für Programmiersprachen und die Arbeitsweise eines Programms/Computers zu gewinnen, aber für den Hobbyalltag rate ich euch als erfahrener C++-Programmierer: Kümmert euch nicht um destruktives Geschwätz über BlitzMax - ihr seid für die Hobby-Spieleprogrammierung im reinsten Paradies. |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Öh ja....
Ein BMAX lob ist auch mal angebrach, finde auch das es eine gute Progg Sprache für Hobby Programmierung ist ![]() |
||
It's done when it's done. |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
koril-k hat Folgendes geschrieben: 1) Zum Einen enthält die Sprache alle Befehle zur sofortigen Verwendung bereit. Dieses elendige installieren und linken von Bibliotheken hat mich in C++ oft den letzten Nerv gekostet. Bis man da eine einfache "Hello World"-Testanwendung zustande bekommt musste man sich tagelang in die Dokumentation einlesen.
Du musst hier zwischen der Sprache selbst und den mitgelieferten Modulen unterscheiden. BMax kann, wie C++, ohne Module bzw. Libs überhaupt nichts. Dass BRL aber im Lieferumfang viele Module aus verschiedenen Bereichen der Spiele- bzw. Applikationsentwicklung mitliefert, ist natürlich ein sehr tolles Zusatzfeatures, wenn man einfach die IDE starten und loslegen will. Dass man für ein Hello World in C++ aber tagelang Dokus lesen muss, ist aber massloss übertrieben ![]() koril-k hat Folgendes geschrieben: 2) Weiterhin muss man aus dem selben Grund keine Strukturen vorbereiten, d.h. man muss keine INIT-Funktionen etc aufrufen, die die Bibliotheken initialisieren. In BlitzMax sage ich einfach "Graphics" und mein Fenster ist da. Was müsste ich dafür alles in DirectX machen?
Das kann man nicht wirklich vergleichen - DirectX ist eine gigantische API, die einem abertausende von Features bietet. DirectX ist keine Engine, die man einfach so anwerfen kann. Mit entsprechenden Libs wird aber auch Graphics in C++ möglich. Ich verwende ja meist GLUT, wenn ich C++ benutze, da braucht es auch nicht mehr als zwei oder drei Befehle, um das Fenster mit GL-Context zu erstellen. koril-k hat Folgendes geschrieben: 3) Der nächste Punkt ist, dass die Sprache im Gegensatz zu C++ und anderen sehr natürlich wirkt. In C++ gibt es eine Vielzahl von Steuerzeichen, z.B. { ... }, &, ->, * (Indirektion) usw. die den Code technisch wirken lassen. Zwar finde ich persönlich den Code dadurch leichter lesbar, aber er wirkt auch sehr formal, starr, wenig einladend. Es macht nicht so viel Spaß, ihn zu schreiben, wie in BlitzMax.
Da scheiden sich die Geschmäcker. BMax ist halt an BASIC angelehnt und daher auch so konzipiert, dass wenig Spezialzeichen, dafür ausdruckskräftige Wörter verwendet werden, um die Lesbarkeit für Menschen zu erleichtern. Das fand ich auch sehr toll, als ich mit BMax bzw. B3D anfing. Nachteil davon ist aber, dass bei langen Quellcodes das ganze schnell unübersichtlich wird, da man nicht auf den ersten Blick Syntax-Elemente von eigentlichen Befehlen unterscheiden kann. koril-k hat Folgendes geschrieben: 4) Sehr erleichternd finde ich, dass BlitzMax keinen Wert auf die Reihenfolge von Definitionen legt. In C++ kann einen das Problem gegenseitiger Abhängigkeiten von Klassen schwer zu schaffen machen. Überhaupt ist dort die ganze Struktur der Quelltextniederschrift gewaltig: Man muss Header-Dateien entwerfen, die nichts weiter tun, als dem Compiler Arbeit zu erleichtern (dass sie prinzipiell nicht nötig sind, zeigt ja BlitzMax am deutlichsten).
Das nimmt Hobbyprogrammierern natürlich ein grosses und anfangs nervenaufreibendes Stück Arbeit ab. Allerdings sind die Ansprüche an BMax natürlich auch anders als an C++ - BMax-Quelltexte überschreiten in der Regel nur selten die Grenze von 50'000 Zeilen. So spielt es auch für die Kompilierzeit nicht wirklich eine Rolle, ob der Quelltext nun einmal durchgegangen wird oder mehrere Durchläufe vonnöten sind. In C++ aber werden Projekte mit mehreren dutzend Millionen Zeilen geschrieben - da spielt es eine extrem grosse Rolle, dass der Compiler den Code möglichst wenige Male durchläuft. Ausserdem geht es ja darum, dass man sauber die Deklaration von der Implementierung trennen kann. Wenn ich eine Lib verwenden will, soll ich nicht die eigentlichen Funktionen einzubinden müssen; nur die Signaturen der Funktionen spielen eine Rolle, daher auch die Trennung in Header/Source. So muss auch der Code der Implementation gar nicht vorhanden sein, sondern ich kann bereits kompilierte DLLs mit entsprechenden Headern nutzen. Nicht, dass man nach diesem Post nun denkt, ich würde nur noch C++ verwenden - ich bevorzuge nach wie vor BMax, wenn ich nicht grade ein grösseres Projekt im Auge habe. Die Einfachheit, mit der man die Module benutzen kann, ist absolut unschlagbar. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
koril-k |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit dem Hello World Programm meinte ich keine Konsolenanwendung. Natürlich ist man dann mit einem "void main() { cout << "Hello World" << endl; } " schnell bei der Sache. Was müsste ich in DirectX alles schreiben, um auf einem Windows-GUI-Fenster ein "Hello World" zu bekommen? Wie viele Dinge müsste ich initialisierfen, laden, konfigurieren usw?
Du hast natürlich Recht, wenn du sagst, die Sprache sei von den Modulen getrennt zu betrachten. Wenn man diese und jene Bibliothek installiert und ins C++-Projekt eingelinkt hat, ist es u.U. genaus einfach zu verwenden, wie die Module BlitzMaxs. Allerdings ist eben genau dieses installieren und einlinken keineswegs immer einfach. Oft gerät man an unvorcompilierte Bibliotheken, die man erst mittels irgendwelcher "makefiles" compilieren muss... für Leute, die kein Linux ('oder wo sowas herkommt) im Blut haben, ist das eine technische Mühsal, die bei der Betrachtung nicht unter den Teppich gekehrt werden darf. "BlitzMax" ist nun ein Kombinationsprodukt aus Sprache und Modulen, das diesen Arbeitsschritt eliminiert. Einige deiner Argumente sind berechtigt, nur beziehe ich mich ja eben tatsächlich auf Hobbyentwicklung, und da ist es egal, ob der Compiler nun 60 oder 120 Sekunden benötigt und auch, ob ich nun eine Funktion selbst oder nur ihre Signatur implementiere. Daher ist der technische Ballast anderer Sprachen auch als solcher zu bezeichnen. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bmax ist und bleibt mein absoluter Liebling, für mich als Hobbyisten ist es einfach ideal. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich mag BlitzMax auch. ![]() Schön finde ich auch die Tatsache, dass es - wenn auch auf Kosten des Umfangs - ziemlich übersichtlich ist. Wenn man nähere Informationen zu einem Modul haben möchte, kann man sich einfach dessen Code durchlesen. Noch eine Sache zu BlitzMax vs. C++: Die C-artige Syntax kommt aus den USA. Dort wird ein anderes Tastaturlayout als in Deutschland genutzt. Warum ist das hier von Interesse? Ganz einfach: "{" und "}" gehören zu den häufig benutzten Zeichen der C-artigen Sprachen. Während diese Zeichen auf einer US-Tastatur einfach mit Shift+ "["/"]" zu erreichen sind, muss man auf einer deutschen Tastatur schon fast Fingerakrobatik betreiben, damit man die Drittbelegungen von "7" und "0" erreicht. Das macht diese Sprachen um einiges weniger schreibfreundlich! Das macht eine BASIC-Syntax hier natürlich auch viel interessanter. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group