Origins of BlitzMax

BlitzMax Forums/BlitzMax Beginners Area/Origins of BlitzMax

Shortwind(Posted 2009) [#1]
This has probably been asked before, but what language is BlitzMax source code? C, c++, asm???

What I mean is did Mark and the BlitzTeam write blitzmax in blitzmax, or is the "orginal" in c?


Perturbatio(Posted 2009) [#2]
bcc and bmk are blitzmax, it was originally written in C then recoded in BMX


Brucey(Posted 2009) [#3]
I thought bcc was in C++ ?

Certainly much more likely than being BlitzMax.... :-p


TaskMaster(Posted 2009) [#4]
Most of the BlitzMax source code itself is in BlitzMax, but there is a lot of C/C++ in there as well.


Shortwind(Posted 2009) [#5]
[Edited for better content... still a rant... sorry...]

I know this is a sore subject, but if the main BlitzMax compiler orginated as C/C++ why doesn't blitz support unsigned ints, unsigned longs????

Why does it support "stupid" shortcuts? Like the whole :+ stuff, no then after if statements, the use of using % or $ when first using a variable then not needing to use it further down in the program, the NON use of strict as default... I'm sure you all can add more...

Why can't I put a variable name after a NEXT statement??? This is exceedingly silly!!!!

The language supports all types of things that are not standard in a "basic" language, so why did Mark and the BRL team decide that "certain" constraints would be incorporated into the language???

Has the BRL team ever posted an "offical reason" for some of these constraints??? I've heard the arguement that mixing unsigned and signed is bad..... but that's horse-hocky, because unsigned and signed is already mixed in the language now!!! and if the main compiler is from a language that originally supported these features it's just stupid that blitzmax itself does not.

Since when does a "basic" language support POINTERS???? If they can support pointers they can support a unsigned int...

Don't get me wrong, I love BlitzMax, I'm exeedingly happy with the features they have included.... I guess there are just some programming conventions that I see in peoples posted code that irritate me. I guess I'm really annoyed by all the integration into C dialects! They don't belong in a "BASIC" language. They make source code hard to read, and leads to unnessary errors.


therevills(Posted 2009) [#6]
I like the "stupid" shortcuts!

I use :+ all the time, so much faster the x = x + 1 same with %, $, ! etc...

Why can't I put a variable name after a NEXT statement


Why would you want to? Example?

BlitzMax is described as an "Enhanced BASIC language":
http://www.blitzbasic.com/Products/blitzmax.php

You may want to edit your post, swearing isnt big or clever... - [Edit: Thanks for editing your post :) ]


xlsior(Posted 2009) [#7]
Why does it support "stupid" shortcuts? Like the whole :+ crap, no then after if statements, the use of using % or $ when first using a variable then not needing to use it further down in the program, the NON use of strict as default... I'm sure you all can add more...


"Why not?"

You don't HAVE to use them, but its always nice to have a choice, to fit your individual programming style.


Why can't I put a variable name after a NEXT statement

Why would you want to? Example?


That one took me a little getting used to as well, since in most BASIC dialects it's mandatory:

for t=1 to 100
   print t
next t


The advantage of that is that if you have multiple nested loops, it's easier to keep track of which next belongs to which for. And of course the downside is that it's unnecessary typing from the compilers point of view, since it can figure out which is which based on the nesting.

Since when does a "basic" language support POINTERS????


The more advance basic dialects have supported pointers for years. Just to mention another one, PowerBASIC 3.5 for DOS did pointers in 1997.
Again, why not? Pointers make it a lot easier to interface with external 3rd party libraries, among others.


Jesse(Posted 2009) [#8]

I like the "stupid" shortcuts!


what he said!

@Shortwind
I don't think there is a perfect language. There is always something we don't like about every thing. There are things we wish it had and there are things it has and don't even know how to use. Ultimately one person puts a product on the table for sale to make a living and it's up to us to decide whether it's good for us or not. Best we can do is suggest to the author/seller what we think it should have, be removed, or fixed about the product. if he/she cares or is smart enough the changes will be made, if they are worth the effort. If he/she doesn't, he/shell'll come around when everybody start going for the competition. Simple law of supply and demand. you can't fight that. just go with the flow.

Tantrums are just childish attempts at getting attention. Specially when you know you can be banned for failing to fallow forum rules. Believe me when I say that some guys here know how that is. ;)


therevills(Posted 2009) [#9]

since in most BASIC dialects it's mandatory



I had totally forgetten about that! Thanks for jogging the ol' brain, I remember doing it for the Amstrad BASIC now...


Shortwind(Posted 2009) [#10]
Ok, Ok, I got carried away. Sorry about that. It wasn't a tantrum, just a rant. I'll take more care in my comments before hitting the post button. :(

I appreciate the feedback. As I said I do actually like BlitzMax tremendously. I will eventually get used to the BlitzMax philosophy and paradigm. Of course I don't have to like some of the decisions they have made about the language, I was just curious as to other peoples point of view on the subject.


Brucey(Posted 2009) [#11]
If it didn't support pointers, wrapping 3rd party libraries would be a tad more difficult... :-p

I don't see what all the fuss is about, tbh.

But then again... OOP in BASIC? What's going on there? ...


Who was John Galt?(Posted 2009) [#12]
Firstly, BlitzMax is not really a 'BASIC'. It uses basic syntax, but has a lot of advanced features you would not expect in basic. If you want plain basic, there are plenty of other languages to choose from.

Just because a language is written in C++ or whatever, does not mean that language can automatically have all the features of C++ for little or no effort. You could write the world's most advanced C++ compiler in Qbasic if you so desired. Okay it would be dog slow at compiling, but it could potentially spew out the most optimised machine code.

Variable names after next and the 'THEN' statement are pointless code bloat and do nothing.

I can't understand why people complain about features in a language that they don't have to use. If you're looking for a more limited language, Blitz Plus may be more to your liking.


Dabhand(Posted 2009) [#13]
BlitzBasic has shared properties of other languages from the dawn of its creation... If a language has a neat element about it and another language would benefit it if it was included, why not take it.

What I want in Blitz is this:-

Call &BB18


but if I see this:-

? "Hello World"


I'll be proper upset! :P

Dabz


Yasha(Posted 2009) [#14]
BlitzMax is not really a 'BASIC'


I for one object to the continued use of "BASIC" to refer to a group of languages that bear no more resemblance to each other than ...er... at any rate none of them are similar to Dartmouth BASIC in any remotely significant way.

</nobodycaring>

EDIT: Also, I was under the impression the reason Strict is not default is because BlitzMax isn't really a strict language; you merely have the option to act as though it is. Making it default would be misleading.


Czar Flavius(Posted 2009) [#15]
Some of your questions can be answered with a brief look at history. The earlier versions of Blitzbasic were more like BASIC, but as the language evolved over the years, it became more like a modern language that just didn't follow C-style syntax. The reason why Strict is non-standard, was to improve compatability with code produced in earlier versions of Blitz in which there was no such thing. Nowadays I agree it should be default, but in the first days, I guess it made sense to ease the transition.

As for the "stupid shortcuts", I didn't even know about $ etc for long while :P (I knew they were in earlier Blitz but I thought they were superceded by :Int, :String.. if you don't like them, you don't have to use them :P)

About the fact there lacks an unsigned int or long (or signed byte or short).. this too bugged me, but after a while, I realised it's not really that big a deal! (Although, I still don't see why we can't make that choice..)

I guess I'm really annoyed by all the integration into C dialects! They don't belong in a "BASIC" language. They make source code hard to read, and leads to unnessary errors.
Perhaps this is cynical of me, but these days I think the "BASIC" tag that's used with BlitzMax is just a marketing gimmick. Don't get me wrong, I like BM as it is, but it doesn't really exist in my mind as "Super Basic". It' just.. Blitz :P

Could you give an example of unnecessary errors that could arise?


Gabriel(Posted 2009) [#16]
Perhaps this is cynical of me, but these days I think the "BASIC" tag that's used with BlitzMax is just a marketing gimmick. Don't get me wrong, I like BM as it is, but it doesn't really exist in my mind as "Super Basic". It' just.. Blitz :P

This sums it up perfectly for me. It may still market itself as a basic variant - and it will appeal to programmers who use BASIC variants so that's only right - but there's a reason that Basic is not part of the name any more.


skidracer(Posted 2009) [#17]
BASIC development is a heck more fun. Running your program every 5 minutes as you develop with a multiple of at least 5 less things that can go wrong can also make it extremely productive.


dmaz(Posted 2009) [#18]
I've been learning Objective C lately... now there's a language people should complain about! 6-7 years ago c++ was my favorite but Mark's implementation of OOP in bmax, while not the most complete is (IMO) very logical and clean. It's certainly my favorite language to program in now even without overloading, private variables and templateing. There's not much good from obj c that I can find except for dynamic typing which is pretty darn cool (although I think the compiler should forgo that when explicitly typed).

While Mark can certainly add to the language, I think he did it right! (edit: at least for his stated goals)


CS_TBL(Posted 2009) [#19]
I've had BASIC discussions elsewhere as well. Me stating that a language as a whole can evolve into something bigger and more structured, while the other stated that by doing so it's not BASIC anymore.

The grey area is of course "where does BASIC end", which on its own is a nice discussion.. :P

Perhaps it's beginners starting in BASIC, feeling they're ready for something bigger, but can't be arsed to move over to Pascal or C(++/#), resulting in the actual BASIC going 'there'.

The biggest objection I have against the C family is the overuse of cryptic symbols, the code overhead/bloat and the lack of decent manuals aimed at beginners. making good manuals is tough, we all *cough* know that. :P

I want readable English without symbols!

For a=0 To 9
bla
Next

looks much cleaner than:

for (int a; a<=9; a++;){
bla;
}

Not to mention multiplications and pointers together in a formula.. bleh.


Czar Flavius(Posted 2009) [#20]
The biggest thing I wish for in Blitz, is enumerations! I loved them in C++ and dearly miss them.