If no OO .. then we stick to (relative) small apps... that's a choice ofcourse. But 'Basic' ansich is not something holy that should always be like the basics from the early 80's. The language evolves, and moving into OO territory is kinda normal in modern basics, on various systems.
Look at early QBasics compared to MSX basic, that QBasic originates from somewhere around '88 orso? It has block-if's, and all the other stuff you'd wish for.. (no OO however).. is QBasic blasphemious to 'BASIC' then?
Don't ask yourself 'what should a new MSX-Basic look like?'
Ask yourself this: "what kinda apps do I want to make with it, and how big will they be?"
wolf_: I know, that's what BASIC is for in the first place, isn't it
... The switch to C, PASCAL or assembly can easily be made on MSX. I'd rather think that each language has its purpose -- ASM for the real die-hards who want to create killer apps & demos that use every CPU cycle, C and (T)PASCAL for dudes who like to write apps and games with extra speed and ease of programming, and BASIC to get the job done quickly. Using NBASIC is a plus, BASIC programs will speed up greatly then. Struct-like things (from C) are maybe doable in MSX-BASIC, and I'd like to have it too. But complete OO-implementation is just too much (polymorphism/data abstraction/accessibility/etc).
Ok, those things you mention are evil, but a simple mechanism with private/public variables and functions would be very handy.
btw, again you are comparing 'basic' with the OLD basics ... wake up! Basic evolves too.
We're talking about BASIC here; Beginners All-purpose Symbolic Instructional Code !
Why not 'just' start with including KUN-BASIC on-chip ? KUN-BASIC supports inline ASM, is fast and - quite important - it already exists !
I agree with D-Tail, a new version of MSX-Basic with labels, classes and other new/OO features would ofcourse be nice,
but in that case why not make a real OO language like MSX-Java or MSX-C# straight away ?
Ofcourse BASICs do evolve, but don't tell me that VB.NET is a real OO language; and implementing some VBScript-like language anno 2005 is (IMHO) like designing a V8 engine with 50 hp. I assume you can't hack all these new features into the existing MSX-Basic code, so why waste time & effort creating a new BASIC - which syntax is considered deprecated - instead of creating a real OO language ...
* Worships Serial KiLLa
Beginners don't want to mess around with line numbers, so a new MSX-BASIC should at least introduce labels (numbers could be labels too, for compatibility).
And actually, VB.Net comes really close to C#. Almost anything that can be done in C# can also be done in VB.Net. Biggest difference is that VB.Net code is more 'verbose'.
Arjan: A workaround for working with line labels already exists: NestorPreTer. Check Konamiman's MSX Page to see how it works. Actually, I'm pretty much satisfied with the BASIC/MSXDOS2/NestorBASIC/NestorPreTer/Compass combo --
1) Make up a nice source file in Compass
2) Exit Compass, and use NPR in MSXDOS2 to compile the source to a BASIC ASCII listing
3) Go to BASIC, load the ASCII file, save it again with a BASIC header
4) Play ;)
The only thing, which I can think of, is that steps 1-3 could be combined in one IDE orso... Plus that Compass/NBASIC/MSXDOS2 don't always work nicely together either. But the start is already there! wolf_: you should definately take a look at a decent NPR listing. I'd be happy to post one here ;)
I think most important is a decent editor/debugger.
MSX2 Basic with some extensions and labels is ok for me.
[D-Tail]: a nice setup indeed! but real beginners prolly want to press a 'start' button and run the app directly as you're saying yourself already
And actually, VB.Net comes really close to C#. Almost anything that can be done in C# can also be done in VB.Net. Biggest difference is that VB.Net code is more 'verbose'.
Yes, because all .Net languages share the same CLR. But the VB.Net syntax is horrific in terms of OO, trying to combine classic VB with OO notation. Whazzup with: " myLength = Len(myString) " instead of " myLength = myString.length; " ... no OO there ...
I can write C, C++, C#, Java, J# and VB (among others), but I dropped VB.Net immediately, can't get this crippled-OO notation in my head.
NOFI, but don't get me started on this subject ;-)
But on topic; a good Basic-editor sounds like a good idea, it could even 'encapsulate' labels while creating BASIC-compatible opcode.
This way one could use labels, but the result would still be a 'normal' BASIC program ...
