Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ANN] BBC BASIC for Windows version 5.70a released

2 views
Skip to first unread message

ne...@rtrussell.co.uk

unread,
Sep 2, 2007, 7:41:08 AM9/2/07
to
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:

http://www.bbcbasic.co.uk/bbcwin/download.html

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.

Here are some useful links:

http://www.bbcbasic.co.uk/bbcwin/
http://bb4w.wikispaces.com/
http://en.wikipedia.org/wiki/BBC_BASIC
http://groups.yahoo.com/group/bb4w
http://www.pcpro.co.uk/features/91575/bbc-basic-the-peoples-language....

Richard.
http://www.rtrussell.co.uk/
To reply by email change 'news' to my forename.

Happy Trails

unread,
Sep 2, 2007, 10:02:20 AM9/2/07
to
On Sun, 02 Sep 2007 04:41:08 -0700, "ne...@rtrussell.co.uk"
<ne...@rtrussell.co.uk> wrote:

>I'm pleased to announce the release of BBC BASIC for Windows version
>5.70a.

Does BBCB allow labels instead of line numbers anywhere at all, or
only not as the object of a GOTO?

ne...@rtrussell.co.uk

unread,
Sep 2, 2007, 12:34:09 PM9/2/07
to
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.

Happy Trails

unread,
Sep 2, 2007, 5:21:00 PM9/2/07
to

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"?

ne...@rtrussell.co.uk

unread,
Sep 2, 2007, 6:23:37 PM9/2/07
to
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!

Happy Trails

unread,
Sep 2, 2007, 8:08:14 PM9/2/07
to
On Sun, 02 Sep 2007 15:23:37 -0700, "ne...@rtrussell.co.uk"
<ne...@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?


ne...@rtrussell.co.uk

unread,
Sep 3, 2007, 4:40:42 AM9/3/07
to
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:

http://www.bbcbasic.co.uk/bbcwin/examples/

Phred

unread,
Sep 3, 2007, 7:29:28 AM9/3/07
to
In article <1188808842.3...@w3g2000hsg.googlegroups.com>, "ne...@rtrussell.co.uk" <ne...@rtrussell.co.uk> wrote:
>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].

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:
>
> IF condition THEN GOTO label
> ...
> (label)


Cheers, Phred.

--
ppnerk...@THISyahoo.com.INVALID

ne...@rtrussell.co.uk

unread,
Sep 3, 2007, 8:05:33 AM9/3/07
to
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.

Judson McClendon

unread,
Sep 3, 2007, 9:50:49 AM9/3/07
to

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."


ne...@rtrussell.co.uk

unread,
Sep 3, 2007, 11:45:35 AM9/3/07
to
On Sep 3, 2:50 pm, "Judson McClendon" <ju...@sunvaley0.com> wrote:
> Richard, surely you aren't saying that functions and subroutines can only
> have numbers instead of labels?

The specification for BBC BASIC does not include any sort of labels,
and (with the exception of the 'unofficial' support in recent versions
of 'BBC BASIC for Windows') no version of BBC BASIC provides them. If
you *must* use GOTO in BBC BASIC then you have no choice but to number
the destination line.

> 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>"?

This has been argued to death in the BBC BASIC community, on and off,
over the last 25 years! The view that I have always taken, and I
think it's the dominant view of BBC BASIC users, is that not having
labels is a useful 'encouragement' not to use GOTOs.

Even in 1981 it was recognised by the BBC and Acorn that GOTO should
not be used, ever. I know that's a controversial viewpoint, but many
people believed it then as they do now: Dijkstra's famous dissertation
'Go To Statement Considered Harmful' was, after all, published way
back in 1968 (Communications of the ACM 11:3, pp 147-148).

The *only* reason GOTO was specified for BBC BASIC was for
compatibility with existing programs (usually written for some variety
of 8K Microsoft BASIC), and of course that only required support for
line numbers. I don't think any version of BASIC had labels in those
days. The assumption was that any program written specifically for
BBC BASIC would not use GOTOs.

> 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".

In BBC BASIC you can achieve an 'implied GOTO' by where you position
the ON ERROR statement in the code, since execution continues after
that statement.

> One was to exit from a deeply nested FOR/NEXT structure.

If you use GOTO to do that in BBC BASIC it will eventually crash,
because of a stack overflow. This is another good argument for not
using GOTOs, since their use can result in insidious bugs which don't
cause an immediate error but may do after running for hours, days or
months: a most horrendous kind of bug to have in a continuously-
running program like a control system.

Anyway, BBC BASIC for Windows now has EXIT to do that properly.

Can I make a plea that this thread doesn't turn into a fruitless
argument about whether GOTOS are good or bad, necessary or
unnecessary. People have such entrenched views on the subject that
further discussion would generate only heat rather than light. By
providing limited support for labels in BBC BASIC for Windows I am
sitting firmly on the fence and intend to stay there!

R.Nicholson

unread,
Sep 3, 2007, 2:16:08 PM9/3/07
to
On Sep 3, 8:45 am, "n...@rtrussell.co.uk" <n...@rtrussell.co.uk>
wrote:

> The *only* reason GOTO was specified for BBC BASIC was for
> compatibility with existing programs (usually written for some variety
> of 8K Microsoft BASIC), and of course that only required support for
> line numbers. I don't think any version of BASIC had labels in those
> days.

The other reason why a Basic implementation should have a
GOTO statement is that it is required by the ANSI Minimal
Basic Standard with no other alternative for may control
constructs, thus almost all programs from that era use it.
The GOTO statement was also part of the original Dartmouth
Basic design, as designed for teaching purposes before the
structured programming fad. Structured programming can
always be done using only GOTO statements, by merely only
using it only within well defined control flow constructs
(which is how good assembly language programmers create
well structured software.)


IMHO. YMMV.
--
rhn A.T nicholson d.0.t C-o-M

R.Nicholson

unread,
Sep 3, 2007, 2:25:22 PM9/3/07
to
On Sep 2, 3:23 pm, "n...@rtrussell.co.uk" <n...@rtrussell.co.uk>
wrote:

> 1. All labels are global.
> 2. Labels share the same namespace with variables.
> 3. You cannot use labels in library modules.

Chipmunk Basic allows GOTO labels with similar
characteristics to the above. Rule (3) is unneeded
because all library modules are done by including
files, which also use the one global namespace.
Assignment to a variable being used as a GOTO label
can result in unexpected behavior.

Line numbers, as GOTO targets, in Chipmunk Basic must
be in ascending order and spaced apart by at least
the number of intervening lines. This does cause
some incompatibilities with later MS qbasic code
which allows line numbers out of order.


IMHO. YMMV.
--
rhn A.T nicholson d.0.T C-o-M

Judson McClendon

unread,
Sep 3, 2007, 2:48:03 PM9/3/07
to
<ne...@rtrussell.co.uk> wrote:

> "Judson McClendon" <ju...@sunvaley0.com> wrote:
>> One was to exit from a deeply nested FOR/NEXT structure.
>
> If you use GOTO to do that in BBC BASIC it will eventually crash,
> because of a stack overflow. This is another good argument for not
> using GOTOs, since their use can result in insidious bugs which don't
> cause an immediate error but may do after running for hours, days or
> months: a most horrendous kind of bug to have in a continuously-
> running program like a control system.

Good point, but this was a termination condition, so it doesn't apply. One
of the situations that come up where goto may be almost unavoidable,
depending on the particular situation and language features, is in handling
such exceptions. Personally I welcome the try...catch syntax in some of
the newer BASICs, because use of it can usually eliminate clumsy syntax
in such situations.

R.Nicholson

unread,
Sep 3, 2007, 3:09:41 PM9/3/07
to
On Sep 3, 8:45 am, "n...@rtrussell.co.uk" <n...@rtrussell.co.uk>
wrote:
> > One was to exit from a deeply nested FOR/NEXT structure.
>
> If you use GOTO to do that in BBC BASIC it will eventually crash,
> because of a stack overflow.

Just to help prevent this, Chipmunk Basic will clean up
any broken for/next stack fragments at any more outer loop
or subroutine return. It will also expand the stack
until there's no memory left, allowing a runaway program
to thrash the memory allocator as the downside.


IMHO. YMMV.
--
rhn A.T nicholson d.0.t C-o-M
Chipmunk Basic://www.nicholson.com/rhn/basic

ne...@rtrussell.co.uk

unread,
Sep 3, 2007, 4:14:01 PM9/3/07
to
On Sep 3, 8:09 pm, "R.Nicholson" <rhnlo...@yahoo.com> wrote:
> And a programmer
> who knows how to use goto's might end up with a better
> feel for the hardware representation of a CPU.

I seriously doubt that. It certainly doesn't apply in my case; I was
an assembly language programmer long before I was a BASIC programmer,
and of course all my BBC BASIC interpreters are written entirely in
assembler code, so I have a pretty good idea of the CPU's hardware
architecture. Being forced to use 'gotos' all the time in my
assembler code doesn't make me any more inclined to use them in my
BASIC programs.

I would say it's also pretty significant that the person who designed
and coded the original BBC BASIC (Sophie Wilson) was also the co-
inventor and designer of the ARM processor, and indeed the ARM was
first simulated and tested in BBC BASIC!

> The other reason why a Basic implementation should have a
> GOTO statement is that it is required by the ANSI Minimal
> Basic Standard

I can't recollect there being any consideration of the ANSI Standard
when the BBC specified what was to become BBC BASIC in 1980/1981.
Either we didn't know about it or didn't care (or both)!

> Line numbers, as GOTO targets, in Chipmunk Basic must
> be in ascending order and spaced apart by at least
> the number of intervening lines. This does cause
> some incompatibilities with later MS qbasic code
> which allows line numbers out of order.

BBC BASIC's line numbers must be in ascending sequence, but there's no
requirement for any minimum spacing. The first line can be line 1 and
the last line 2, with all the others unnumbered, if you like.

> Just to help prevent this, Chipmunk Basic will clean up
> any broken for/next stack fragments at any more outer loop
> or subroutine return.

Yes, BBC BASIC will also clean up the stack on a function or procedure
return, so it's safe (from a stack point of view) to use GOTO there.
However, you can often achieve the same effect just by exiting from
the function prematurely - which is equivalent to a GOTO without
actually using one.

Tom Lake

unread,
Sep 3, 2007, 6:37:13 PM9/3/07
to
> The other reason why a Basic implementation should have a
> GOTO statement is that it is required by the ANSI Minimal
> Basic Standard with no other alternative for may control
> constructs, thus almost all programs from that era use it.

Since BBC BASIC is a British product, they may not care
what the *American* National Standards Institute says!

Tom Lake


rhnlogic

unread,
Sep 4, 2007, 1:33:36 AM9/4/07
to

Tha ANSI Minimal Basic standard was also referenced as:
Minimal BASIC (ISO 6373-1984 (E))

James

unread,
Sep 4, 2007, 3:31:44 AM9/4/07
to
One Yanks perspective.

Having done a few million lines of code in several languages including
Basic is it really so important to be on top in this Goto yes or no
thread. Like porridge some like it hot and some like it cold. Some
like Goto and some do not. To each their own. In the end if the
program works for the creator and the users does it really matter what
others "think." If some versions of Basic do a better/more reliable job
with labels then with that version labels should be dominant. For those
doing a better/more reliable job with goto's then for those use goto's.
If a version does not create a problem with either then it is totally
up to the programmer. As for the user's they are just happy when it
works regardless of what makes it work. If it breaks then they are not
happy. As for American Standard vs. British Standard the only standard
that counts is the one that works for the user wherever they may be.

Just one Yanks opinion. Lets stop the war again. We were friends after
WWII or have we forgotten.

James

ne...@rtrussell.co.uk

unread,
Sep 4, 2007, 4:18:19 AM9/4/07
to
On Sep 4, 6:33 am, rhnlogic <rhnlo...@yahoo.com> wrote:
> Tha ANSI Minimal Basic standard was also referenced as:
> Minimal BASIC (ISO 6373-1984 (E))

Yes, but (judging by that number) not until 1984, which was far too
late to influence BBC BASIC. The ISO standard has now been withdrawn,
but the German equivalent (DIN 66284) is still available, I think.

ne...@rtrussell.co.uk

unread,
Sep 4, 2007, 10:38:50 AM9/4/07
to
On Sep 4, 8:31 am, James <J...@9b01.com> wrote:
> Having done a few million lines of code in several languages including
> Basic is it really so important to be on top in this Goto yes or no
> thread. Like porridge some like it hot and some like it cold. Some
> like Goto and some do not. To each their own.

Hear, hear. In fact nobody in this thread has expressed the extreme
view that GOTOs should never be used (such people definitely exist),
so we have been spared the worst of the polarisation on the subject.
I am probably one of the more anti-GOTO people here, yet I was partly
responsible for specifying, and have spent the last 25 years
promoting, a language (BBC BASIC) of which GOTO is a fundamental
part. I have even extended the language to include labels, with the
sole object of making the use of GOTO easier, so nobody (sober!) can
possibly accuse me of being closed-minded on the subject.

> In the end if the program works for the creator and the users does it
> really matter what others "think."

I entirely agree. I do believe it's important for everybody to have
an understanding of *why* there is such controversy, so that in their
use of GOTO (or not) they appreciate the pros and cons. That way they
can avoid pitfalls.

R.Nicholson

unread,
Sep 4, 2007, 1:22:58 PM9/4/07
to
On Sep 3, 1:14 pm, "n...@rtrussell.co.uk" <n...@rtrussell.co.uk>
wrote:

> Yes, BBC BASIC will also clean up the stack on a function or procedure
> return, so it's safe (from a stack point of view) to use GOTO there.
> However, you can often achieve the same effect just by exiting from
> the function prematurely - which is equivalent to a GOTO without
> actually using one.

Almost every control structure is equivalent to a
GOTO or an IF GOTO (possibly preserving a return
address) without spelling it out in a syntactically
explicit manner.

A GOTO is merely the control structure equivalent
to the use of pointers in data structures. They
can optionally be used outside the encapsulation
of the structure definition if needed. If they
are not needed, the result may be easier to formally
define or prove in some cases.

0 new messages