Advantages of Blitzmax over Blitzplus?
BlitzMax Forums/BlitzMax Beginners Area/Advantages of Blitzmax over Blitzplus?
| ||
I love Blitzplus.....but can someone give me advantages of Blitzmax over blitzplus. I may be tempted to switch. I have a 5000 lines of code in Blitzplus. I might possibly convert to Blitzplus for Mac compatibility. I have no experience in object oriented programming but I do know C and VB6, so I wondering if I will be as productive in BlitzMax. What do you like about Blitzmax that Blitzplus doesn't have? |
| ||
You don't need to use all of BlitzMax's OO stuff if you don't want to. You can do everything in Functions if you prefer. What do you like about Blitzmax that Blitzplus doesn't have? It's cross-platform. That's probably the biggest plus. (if you are into that kind of thing) It's also very easy to extend through modules. |
| ||
It's better in every comparable way. - faster code - separate compilation - prettier syntax - automatic memory management - much better interop with C and lower-level features (still not great, but better than "everything is an int and use banks for memory") - reflection enables some cool metaprogramming tricks - function pointers - better collection/array support, inline array creation - minor language fixes (nested globals, nested functions, properly scoped locals, proper working field initializers, etc.) ...that's just off the top of my head. Honestly the much-touted OOP support isn't that big a deal (it's not a very "modern" object model by design, anyway; you probably won't use it as-intended). It's the very long list of "minor" tweaks and fixes and general improvements that make it such a better language. They really add up. |
| ||
Plus the modules are open source (graphics, sound, even the low-level interfaces to the operating system). You can learn a lot and customise/tweak the modules. |
| ||
BlitzMax? You do lots more than Blitzplus! For example OpenGL MiniB3D (BlitzMax Module!) Brucey's Modules and finally Module GUI for whichever you prefer :) |
| ||
- Instead of writing pixels directly to videomemory like in blitzplus, Blitzmax uses 2D-in-3D. This gives you real-time rotation, zooming, flipping, transparancy/alpha-blending, etc. with with almost zero performance impact. If you're creating games, that alone is well worth switching, WAY easier to create eyecandy. - Has built-in ability to embed external files into the final executable (incbin) - Ability to extend the language with 3rd party modules that can add a ton of functionality -- talk to databases, regular expressions, networking, additional fileformats, etc. There are tons of modules for blitzmax out there, most notably Brucey's repository. - Can mix C code into Bltizmax programs, which makes it possible to use libraries and such that weren't written with Blitzmax in mind at all - More efficient compiler: if you use frameworks, (easy with the free Framework Assistant tool) Blitzmax compile much smaller executables than Blitzplus does: Blitzplus always includes runtime binary code for its entire command set into the final exe, while blitzmax can import just the modules that contain the commands your program actually uses. As far as object oriented programming is concerned: Blitzmax supports it, but it is NOT required at all. You can continue to write old-fashioned procedural code just like you currently do in Blitzplus. |
| ||
Double precision floats and 64-bit ints. Optional strict mode to make you declare variables properly. |
| ||
I would say you will not have to accept any disadvantage when converting from BlitzPlus to BlitzMax. But because it is worth coverting all code lines manually, you will have a lot of work. At the end your code will be more modern and has more structure. The OOP is always a "can" option. You can mix between old style and new one. The BlitzMax forum is still very activ. You will find a lot of people which are able to support you in your project. |
| ||
And, as I was just reminded by a Blitz3D question, "call by reference" function arguments. In Blitz3D FreeEntity( MyCube ) will free the entity but cannot set the MyCube variable to zero because all function calls are "by value". |
| ||
Like Brucey said above (#2), I use little if any OO but like cross platform -- PC WIN and MAC OSX. |
| ||
To put it in a Star Trek context: BP = Impulse drive; BMX = Warp speed; BMX2 = Trans Warp! |
| ||
Blitzplus requirements = Windows 95/98/ME/2000/XP/Vista/7/8 Blitz3D requirements = Windows 95/98/ME/2000/XP/Vista/7/8 BlitzMax requirements = Windows 2000/XP/Vista/7/8 so I guess if you have Windows 10 you just "try it" and hope it works :) |
| ||
Blitzplus is easier than Blitzmax and the perfect language for a beginner.. |
| ||
will it work in Windows 10? |
| ||
will it work in Windows 10? Yes, Blitzplus and blitzmax both work fine in win10. |
| ||
In bmax, the backbuffer not being preserved is a real bummer if all you want to do is make additions to it (you have to cls and redraw everything). |
| ||
In bmax, the backbuffer not being preserved is a real bummer if all you want to do is make additions to it (you have to cls and redraw everything). That's the way it is in any language that uses 3D on modern videocards -- it be preserved on some machines, not others. Not a blitzmax limitation, but the OpenGL/Direct3D specs themselves. If Blitzmax won't retain the backbuffer on a particular PC for you, then neither will other languages using 3D. |
| ||
No wastage - i.e. if you only need to use a byte variable, you can do so. |