Hello and a question

Started by TwoCatsYelling, August 23, 2020, 23:21:44

Previous topic - Next topic

TwoCatsYelling

Hello everyone. New here :)

I purchased BlitzBasic a loooong time ago. August 6, 2004 to be exact; I still have the book and CD.

Anyway, been wanting to learn some programming lately, preferably with something more approachable to someone who's never programmed before. I remembered back to that book/cd and decided to check that out again. Seems a lot of history has transpired in 16 years, the creator of BB seems to have retired from working on it(?), and there's a few flavors of it now.

BlitzMax seems to be the most recent one, at least from what I can tell coming back into it after so long.

Anyway.. I'm interested to jump in, but am unsure of which to go with? BlitzMax, or BlitzMax NG?  Are there significant differences between the two, or any reason to use one over the other? Major differences in the language/syntax, etc? I've done some searching, but haven't been able to find any information that seems to differentiate the two.

Any info/help/advice here is much appreciated!


Derron

"old" Blitzmax = "legacy"
"new" BlitzMax = "ng"


ng: maintained (receiving bugfixes, updates...)
legacy: no longer maintained (no longer receiving bugfixes, updates...

legacy: non strict, strict or superstrict
ng: strict or superstrict
(non strict does not require variable declaration for integer/objects and is more error prone because of this - eg spelling errors)

legacy: Windows, linux and older Mac OS X targets, 32 bit only
ng: windows, linux, mac os x, raspi, nx, ... in 32 and 64 bit

legacy: compiles to assembler on its own
ng: transpiles to C and lets gcc compile to a binary including optimization

legacy: brl render backends
ng: brl render backends + SDL backends

...


The "strictness" might look cumbersome at first, but I would go with it as the "non strictness" vanilla allows will sooner or later lead to issues (spelling mistakes and the compiler happily accepts it as a new variable).
Vanilla/legacy is no longer maintained and 32 bit only ... so while it still works ... it might no longer run on mac os next year - or with current linux distributions which become 64bit only too.


bye
Ron

TwoCatsYelling

Wow, very thorough response!

Thank you for your time and help!

Very appreciated :)

NG it is.

Quote from: Derron on August 24, 2020, 14:06:14
"old" Blitzmax = "legacy"
"new" BlitzMax = "ng"


ng: maintained (receiving bugfixes, updates...)
legacy: no longer maintained (no longer receiving bugfixes, updates...

legacy: non strict, strict or superstrict
ng: strict or superstrict
(non strict does not require variable declaration for integer/objects and is more error prone because of this - eg spelling errors)

legacy: Windows, linux and older Mac OS X targets, 32 bit only
ng: windows, linux, mac os x, raspi, nx, ... in 32 and 64 bit

legacy: compiles to assembler on its own
ng: transpiles to C and lets gcc compile to a binary including optimization

legacy: brl render backends
ng: brl render backends + SDL backends

...


The "strictness" might look cumbersome at first, but I would go with it as the "non strictness" vanilla allows will sooner or later lead to issues (spelling mistakes and the compiler happily accepts it as a new variable).
Vanilla/legacy is no longer maintained and 32 bit only ... so while it still works ... it might no longer run on mac os next year - or with current linux distributions which become 64bit only too.


bye
Ron

TomToad

Quote from: GfK on August 24, 2020, 15:39:58
On a similar note, what IDEs are available lately?  The default one with Blitzmax was always crap. Object-oriented code needs code completion, which it didn't have.  You can't possibly remember the name you've given to every single variable, class and method.

Like Strict mode, coding without it is just a pain in the arse.

Hezkore did a VSCode extension. https://www.syntaxbomb.com/index.php/topic,5771.0.html
------------------------------------------------
8 rabbits equals 1 rabbyte.

Derron

Quote from: GfK on August 24, 2020, 15:39:58
On a similar note, what IDEs are available lately?  The default one with Blitzmax was always crap. Object-oriented code needs code completion, which it didn't have.  You can't possibly remember the name you've given to every single variable, class and method.


Hezkore wrote an extension for Visual Studio Code.
Next step is a complete rewrite of the extension and the inclusion of the debugger (Hezkore finally got communication working ... VS Code has some ... expectactions :D). For proper autocomplete we need a bit more.
I wrote a basic parser for code (so to fetch the types, its fields, locals, globals. ...) but this will all take some time and is "for the future".


Edit: TomToad was faster :D

bye
Ron