I'm pleased to announce the release of BBC BASIC for Windows version 5.70a. This update includes the following new features:
* Simplified 'scrolling over a large canvas'. * Extended control over text cursor (caret) shape. * Improved method of finding the size of a structure. * Font selection supports symbols fonts like WingDings. * Blank lines at top of listing pages are suppressed. * Drag-and-drop from Explorer or Search Results into editor. * Improved function key macros.
If you already have the full version of BBC BASIC for Windows you can update your copy, free of charge, by downloading and installing UPGRADE.EXE from here:
If you don't yet have BBC BASIC for Windows but you would like to try it, you can download a free non-time-limited evaluation copy (capable of running many useful programs) from the same address.
BBC BASIC is the language specified and adopted by the British Broadcasting Corporation for its groundbreaking Computer Literacy Project of the early 1980s. It is ideally suited for the complete beginner yet is powerful enough to write complete Windows applications. Some of the features which make it unique are:
* More than 25 years of development. * Simple, intuitive, user interface. * Syntax colouring and live indentation. * Live trace and listing of variables at run time. * Single-step and breakpoint capability. * Easy access to the Windows API. * Up to 256 Mbytes available for user program. * Embedded assembler for ultimate speed. * Generates compact standalone executables. * 900 page manual. * 190 page beginners' tutorial. * More than 50 example programs included. * 20 software libraries, including 3D graphics.
On Sep 2, 3:02 pm, Happy Trails <nom...@myplace.com> wrote:
> Does BBCB allow labels instead of line numbers anywhere at all, or > only not as the object of a GOTO?
The original BBC BASIC did not allow labels of any kind; destinations of GOTO, GOSUB, RESTORE etc. had to be line numbers. However since all the necessary control structures were present to write programs entirely without GOTOs, one was encouraged to do that. I never use GOTOs in any of my programs, and I have always felt that providing labels would encourage poor program structure.
However there is one respect in which the absence of labels is limiting, and that is when converting programs from other dialects of BASIC. Replacing the labels with line numbers is undesirable, and rewriting the code to eliminate them altogether is extra effort. Therefore in fact you *can* use labels in recent versions of BBC BASIC for Windows but the implementation is minimal and not intended for use in new programs.
<n...@rtrussell.co.uk> wrote: >On Sep 2, 3:02 pm, Happy Trails <nom...@myplace.com> wrote: >> Does BBCB allow labels instead of line numbers anywhere at all, or >> only not as the object of a GOTO?
>The original BBC BASIC did not allow labels of any kind; destinations >of GOTO, GOSUB, RESTORE etc. had to be line numbers. However since >all the necessary control structures were present to write programs >entirely without GOTOs, one was encouraged to do that. I never use >GOTOs in any of my programs, and I have always felt that providing >labels would encourage poor program structure.
>However there is one respect in which the absence of labels is >limiting, and that is when converting programs from other dialects of >BASIC. Replacing the labels with line numbers is undesirable, and >rewriting the code to eliminate them altogether is extra effort. >Therefore in fact you *can* use labels in recent versions of BBC BASIC >for Windows but the implementation is minimal and not intended for use >in new programs.
Are you not able to post in the same thread for some reason? Why do you start a new thread?
========
No "original" Basic used labels of any kind that I know of, so BBCB is not unique in that shortcoming.
It did not take long, however for the majority of vendors, not the least of which being Microsoft, to realize how much more logical, readable, and maintainable programs were with labels instead of numbers. Why someone of your experience would still maintain to this day the puerile attitude that software is "better" without GOTO's is beyond comprehension, especially when they would be so easy to implement.
Why not let the programmer choose what he wants to do istead of thinking "you know better"?
Sometimes I use GOTO's to separate out logic so it is easier to follow what's going on in a complex situation with lots of possibilities; sometimes I do it to make things easier to trace; sometimes it is just to simplify stuff so it is easier to document, with it's own comment lines.
I always want to see an exit from a SUB at the bottom of the SUB, and not have to search for it up in the middle somewhere, tacked on to the 4th branch of a dipsy if-when-do pile of shit, where I had to put it because I didn't have a GOTO.
When you take this ease of reading through your own or someone else's code away, you might as well be writing in C, and not bother with Basic altogether.
I almost started looking for that "send my 30 quid" page, until I saw this nonsense.
Please tell me in plain language that my rant is for naught - that I can use BBCB with all the GOTO labels in any new or old code that I want with no restrictions!
What do you mean by "...but the implementation is minimal and not intended for use in new programs"?
On Sep 2, 10:21 pm, Happy Trails <nom...@myplace.com> wrote:
> Why do you start a new thread?
I did not, I simply replied. It appears in the same thread on Google Groups. I expect your newsreader put it in a separate thread because I trimmed the newsgroups list (it ought to be trimmed more, but I don't know which one you're reading).
> Why someone of your experience would still maintain to this > day the puerile attitude that software is "better" without GOTO's is > beyond comprehension
The use of GOTOs doesn't necessarily mean a program is poorly structured, but they certainly make it easier to write bad programs. I find that the discipline of not using GOTOs forces me to think more carefully about the structure, with the result being a better program. In fact the only time I have used a GOTO is in a test program to check that GOTOs work!
Incidentally in BBC BASIC GOTOs are quite slow. Nevertheless it is *your* choice whether to use them.
> What do you mean by "...but the implementation is minimal and not > intended for use in new programs"?
There are some limitations in the BB4W implementation of labels:
1. All labels are global. 2. Labels share the same namespace with variables. 3. You cannot use labels in library modules.
> I almost started looking for that "send my 30 quid" page, until I saw > this nonsense.
Please don't waste your money on something you're probably not going to like. That's what the (free) evaluation version is for; it is fully functional apart from the limited user memory and no 'compiler'. Try that first; the last thing I want is unhappy customers!
On Sun, 02 Sep 2007 15:23:37 -0700, "n...@rtrussell.co.uk"
<n...@rtrussell.co.uk> wrote: >On Sep 2, 10:21 pm, Happy Trails <nom...@myplace.com> wrote: >> Why do you start a new thread?
>I did not, I simply replied. It appears in the same thread on Google >Groups. I expect your newsreader put it in a separate thread because >I trimmed the newsgroups list (it ought to be trimmed more, but I >don't know which one you're reading).
========================== What I am seeing is a subject line of:
"[ANN] BBC BASIC for Windows version 5.70a released"
posted to 3 groups for your initial post, and my reply to that. In your answer to my reply I am seeing a subject line of:
"Re: BBC BASIC for Windows version 5.70a released"
which you have posted to 2 of the original 3 groups.
Because the subject line is altered, with the "[ANN] " being replaced by the "RE: " in the string of text, my newsreader is seeing it as a new thread. My reader, Forte Agent, will continue the thread for a truncated number of groups if that is the only change it sees, as it treats each group separately anyway.
I would expect that the only change coming out of your second posting was the deletion of the [ANN] prefix, as Agent will use the "RE: " prefix to find an existing thread and add to it providing all other text is identical.
Did you delete the [ANN] or did your newsreader/poster do that?
Maybe it's a GG thing. ==========================
>I find that the discipline of not using GOTOs forces me to think more >carefully about the structure, with the result being a better >program.
========================== "Better" is sometimes pretty subjective. I think the "best" programs are ones that are understandable, maintainable, and least prone to programmer error.
I find most programmers, especially beginning ones, make most of their errors in the middle of complex, multi-level if-then-else-do-while constructions, which can easily be avoided, and differing logic paths easily and clearly delineated sometimes, by using goto's.
Your opinion is merely different, not better or maybe not even worse. ==========================
>Incidentally in BBC BASIC GOTOs are quite slow.
========================== Is this for some real reason, or is this something you have done to purposely discourage their use? ==========================
>There are some limitations in the BB4W implementation of labels:
>1. All labels are global. >2. Labels share the same namespace with variables. >3. You cannot use labels in library modules.
========================== 1 - that seems okay - it makes for better self-documentation that way. 2 - this is similar to PDS - again okay.
I see these first 2 as positive things, not limitations.
3 - what does this mean exactly? Do you mean if I "include" some code, it cannot have any labels in it? But it can have line numbers?
==========================
>> I almost started looking for that "send my 30 quid" page, until I saw >> this nonsense.
>Please don't waste your money on something you're probably not going >to like. That's what the (free) evaluation version is for; it is >fully functional apart from the limited user memory and no >'compiler'. Try that first; the last thing I want is unhappy >customers!
========================== Comment much appreciated.
Since you do allow labels, I will spend more time reading the manual, and as you suggest, d/l a trial.
==========================
Just for fun, how would you compare your product to Powerbasic - either PBCC or PBW? To me, one big difference I can see immediately in your favour is that they do not have an IDE you can run a program in - it's compiled only. Do you have any info about this on your web site that I should look at or can you just give me a summary statement here?
On Sep 3, 1:08 am, Happy Trails <nom...@myplace.com> wrote:
> Did you delete the [ANN] or did your newsreader/poster do that?
Google Groups deletes the [ANN].
> > Incidentally in BBC BASIC GOTOs are quite slow. > Is this for some real reason, or is this something you have done to > purposely discourage their use?
Not purposely to discourage their use, no. The short reason is that BB4W is an interpreter. The long reason is that using a line-number destination involves scanning the program to find that line, and using a label destination involves a variable lookup. REPEAT..UNTIL and WHILE..ENDWHILE loops have no such overhead, because the 'destination' is available on the stack (with the exception of the case when the *initial* WHILE condition is false).
> 3 - what does this mean exactly? Do you mean if I "include" some > code, it cannot have any labels in it? But it can have line numbers?
It can have neither. 'Installed' library modules in BBC BASIC are discontinuous with the main program and neither line numbers nor labels work there. You won't be surprised to learn that I don't consider that to be a significant limitation, but you may disagree.
> Since you do allow labels, I will spend more time reading the manual, > and as you suggest, d/l a trial.
You won't find labels mentioned in the manual, since so many existing users disapprove of them (I once did a poll of BBC BASIC users on this question; 72% replied that they didn't want labels). But, to let the cat out of the bag, the syntax is to include the label in parentheses thus:
IF condition THEN GOTO label ... (label)
> Just for fun, how would you compare your product to Powerbasic
Very different animals. PowerBasic, being a true compiler, is much faster than BB4W in most cases (although there was an occasion when BB4W was able to outperform a PB program because the writer hadn't realised he had coded a matrix dot-product - a built-in function in BBC BASIC!). Where BBC BASIC scores is the IDE, the convenience of 'immediate mode', the straightforward interfacing to the Windows API etc. BBC BASIC is exceptional in its ability to span the entire range of applications from the simplest of programs for the complete beginner to multi-megabyte Windows GUI applications. It is arguable that in being a Jack of All Trades it is also a Master of None, but it does command loyal support from its many users.
Do try looking at, and running, some of the pre-compiled programs on my web site which will give you a general feel for what you can achieve:
>> Did you delete the [ANN] or did your newsreader/poster do that?
>Google Groups deletes the [ANN].
Interesting. My old newsreader (News Xpress 2.01) had no trouble threading correctly, even with that deletion of yours. I wonder if there's some defined protocol concerning [xxx] at the start of a Subject line that at least some newsreaders acknowledge?
[snip]
>> Since you do allow labels, I will spend more time reading the manual, >> and as you suggest, d/l a trial.
>You won't find labels mentioned in the manual, since so many existing >users disapprove of them (I once did a poll of BBC BASIC users on this >question; 72% replied that they didn't want labels).
With all due respect, Richard, that is just plain silly. What about the 28% that were happy with them? I really find it hard to understand that the majority would suffer in some way just because something mentioned in the docs didn't have any value for them. Or were you worried some may go blind if they happen to see them? ;-)
>But, to let thecat out of the bag, the syntax is to include the label >in parentheses thus:
On Sep 3, 12:29 pm, ppnerkDELETET...@yahoo.com (Phred) wrote:
> Or were you worried some may go blind if they happen to see them? ;-)
The label functionality was added for my own experimental use. It's not part of the specification of BBC BASIC, and nobody would *expect* any version of BBC BASIC to have it. It's not included in my test suite, it is entirely unsupported and it is not guaranteed to work correctly. In those circumstances it would be *wrong* to mention it in the documentation.
Once a feature has been documented, it can never subsequently be changed in an incompatible fashion without risking existing programs failing. Therefore if I foresee that the syntax might change I do not document it. Indeed, the limitations that I mentioned earlier mean that labels, as currently implemented, do not meet a standard which I would consider to be desirable to become an advertised feature of the language.
There are other features in BBC BASIC for Windows that are not mentioned in the documentation, either because they have not been thoroughly tested or are known to have shortcomings.
<n...@rtrussell.co.uk> wrote: > Happy Trails <nom...@myplace.com> wrote: >> Does BBCB allow labels instead of line numbers anywhere at all, or >> only not as the object of a GOTO?
> The original BBC BASIC did not allow labels of any kind; destinations > of GOTO, GOSUB, RESTORE etc. had to be line numbers. However > since all the necessary control structures were present to write programs > entirely without GOTOs, one was encouraged to do that. I never use > GOTOs in any of my programs, and I have always felt that providing > labels would encourage poor program structure.
> However there is one respect in which the absence of labels is > limiting, and that is when converting programs from other dialects of > BASIC. Replacing the labels with line numbers is undesirable, and > rewriting the code to eliminate them altogether is extra effort. > Therefore in fact you *can* use labels in recent versions of BBC BASIC > for Windows but the implementation is minimal and not intended for use > in new programs.
Richard, surely you aren't saying that functions and subroutines can only have numbers instead of labels? Though I understand your objection to using goto, if someone is going to use goto anyway, wouldn't "goto <meaningful-label>" be better than "goto <meaningless-number>"?
I couldn't remember the last time I used goto in a BASIC program, but your statement about not using goto for 25 years prompted me to search all my BASIC code for goto's. The only goto's I could find in programs since the 1970's were to handle error or termination situations where there was no better syntax available, such as "ON ERROR GOTO". One was to exit from a deeply nested FOR/NEXT structure. -- Judson McClendon ju...@sunvaley0.com (remove zero) Sun Valley Systems http://sunvaley.com "For God so loved the world that He gave His only begotten Son, that whoever believes in Him should not perish but have everlasting life."