Jump to content
IGNORED

50 Years of BASIC - TIME


Mr SQL

Recommended Posts

 

The argument can be made that using JMP is not a good habit to get into either, and that JSR should be the law of the land. But then, for something real small and tight, the JMP actually is the better choice in many cases.

 

 

In the same way that BASIC is different from Assembly Language. :P

 

SIO has a good point, goto is JMP (and imo BASIC is just a macro compiler or interpreter).

 

The JMP instruction is equal to an unspecified long branch, LBRA (long branch always), the same resources consumed.

 

BASIC is so flexible that in addition to GOTO and GOSUB it's also possible and often desirable to leverage the short branch instructions for faster throughput by saturating the horizontal logic blocks.

 

Vintage BASIC doesn't support vertical logic blocks popular with modern languages:

 

if a=1 and c=2 then

statement

statement

statement

else

statement

statement

end if

 

But horizontal works fine and imo is easier to read:

 

if a=1 and c=2 then statement:statement:statement else statement:statement

 

And the compiler will use short branching to the logic blocks to generate a faster and smaller program footprint than using either goto (jmp/lbra) or gosub (jsr) will achieve.

 

Knowing about this doesn't matter with modern sandboxed languages but it can make a big imact for programmers writing video games at 1 MHZ! :)

  • Like 1
Link to comment
Share on other sites

You can't argue for the value of BASIC as a learning tool for those who are starting in the programming field and then turn around and say that BASIC is just Assembly with macros as if there were no cognitive difference between them.

 

That's like saying, Calculus is just basic arithmetic but with more symbols, or that a nuclear reactor control system is just a calculator with more buttons -- it trivializes the differences between them; differences that are of material significance to your argument on the merits of one over the other for certain applications.

 

My rather flippant comment was to say that, regardless of how it is actually implemented underneath (which you must admit is of no consequence to the programmer, especially one who is learning), a GOTO in a higher level language has a different cognitive weight within its high level constructs, than JMP has within the low level ones of Assembly.

 

Surely you can see that.

 

dZ.

  • Like 2
Link to comment
Share on other sites

You can't argue for the value of BASIC as a learning tool for those who are starting in the programming field and then turn around and say that BASIC is just Assembly with macros as if there were no cognitive difference between them.

 

That's like saying, Calculus is just basic arithmetic but with more symbols, or that a nuclear reactor control system is just a calculator with more buttons -- it trivializes the differences between them; differences that are of material significance to your argument on the merits of one over the other for certain applications.

 

My rather flippant comment was to say that, regardless of how it is actually implemented underneath (which you must admit is of no consequence to the programmer, especially one who is learning), a GOTO in a higher level language has a different cognitive weight within its high level constructs, than JMP has within the low level ones of Assembly.

 

Surely you can see that.

 

dZ.

 

Fair enough on the cognitive difference - while a Macro Assembler turns blocks of high level code into Assembly like a BASIC/Fortran compiler, the idea is to supplement your own assembly code whereas with the BASIC/Fortran compiler the idea is pure high level code instead of writing Assembly.

 

For straight BASIC programs I agree, But BASIC is so flexible that here too the line becomes blurred as soon as we undertake constructing a hybrid BASIC/Machine Language program; once we embed asm or poke it into memory there is no longer a congnitive difference between BASIC and a Macro Assembler.

 

BASIC's closeness to Assembly comes from being both low level and very high level simultaneously and it really does make a difference for programmers writing games for retro machines to utilize short branching instead of GOTO/JMP and even sometimes to replace GOSUB/JSR with GOTO/JMP; the threads on the batari BASIC forums have examples of programmers making these optimizations to enhance their games.

imo this is the reason BASIC is so valuable as a learning tool; as the programmer become proficient they become more advanced and learn low level concepts, eventually they can even learn Assembly.

 

What other programming language offers such a robust educational path linking low level and high level concepts?

  • Like 1
Link to comment
Share on other sites

What other programming language offers such a robust educational path linking low level and high level concepts?

Some would say Pascal, which one-ups the algorithmic and structure programming constructs of BASIC. ;)

 

I would also say C, because when you get down to it, at its core, it's also "just a macro library" built on top of Assembly language. Besides, your personal views on BASIC as a versatile programming language are mostly subjective -- in the same way I feel about C.

 

"Easy" also is in the eye of the beholder, for I've known people who took to Assembly Language like a duck to water and did it directly, as their very first introduction to programming. You can argue that they would have done better or learned faster had they started with BASIC, but that's hardly scientific when there is no way to know.

 

I've acknowledged the strengths of BASIC as a learning language because it has been the one most of us started with and it is comfortable to use, and it was designed as such.

 

What I object to is elevating it as the end-all-be-all perfect programming language (as you sometimes seem to be doing), with such flexibility to invite the novice and support the expert. I disagree with this because BASIC has many flaws and does not lend itself to learning good habits, which in my mind is very important for a novice; and for experts, there are many other languages better suited to advanced applications and higher cognitive thinking.

 

dZ.

  • Like 1
Link to comment
Share on other sites

Some would say Pascal, which one-ups the algorithmic and structure programming constructs of BASIC. ;)

 

I would also say C, because when you get down to it, at its core, it's also "just a macro library" built on top of Assembly language. Besides, your personal views on BASIC as a versatile programming language are mostly subjective -- in the same way I feel about C.

 

"Easy" also is in the eye of the beholder, for I've known people who took to Assembly Language like a duck to water and did it directly, as their very first introduction to programming. You can argue that they would have done better or learned faster had they started with BASIC, but that's hardly scientific when there is no way to know.

 

I've acknowledged the strengths of BASIC as a learning language because it has been the one most of us started with and it is comfortable to use, and it was designed as such.

 

What I object to is elevating it as the end-all-be-all perfect programming language (as you sometimes seem to be doing), with such flexibility to invite the novice and support the expert. I disagree with this because BASIC has many flaws and does not lend itself to learning good habits, which in my mind is very important for a novice; and for experts, there are many other languages better suited to advanced applications and higher cognitive thinking.

 

dZ.

 

Well I think it depends on the platform; for the Atari 2600, BASIC is the perfect language because the compiler output for BASIC is more efficient than for C and the extra space and speed are needed on this platform.

 

By comparision the C64 supports more programming models for having more memory to work with, which C needs; C doesn't do as well with 4K/8K footprints so the Atari 2600 is not an elligible target platform unless the C code is running on a modern co-processor like with some homebrews.

 

I have seen excellent homebrews like PowerGlove written in C and there is even a Java programming language out for the C64, made possible (barely) because it has 64k.

 

There are also plenty of excellent hombrews in more traditional (for 8-bit microcomputers) BASIC and Assembly like the recent GPAC, an awesome pac clone on the Commodore forum - there's an excellent educational series accompanying that game that shows how to program pacman games in BASIC and Assembly, don't see many tutorials like that with C.

 

What languages do you program Intellivision games in, IntyBASIC and Assembly or something else?

Link to comment
Share on other sites

Well I think it depends on the platform; for the Atari 2600, BASIC is the perfect language because the compiler output for BASIC is more efficient than for C and the extra space and speed are needed on this platform.

 

Agreed, it depends on the language, the platform, and the skills of the programmer.

 

I was just talking in generalities since for most of this thread you also seem to be talking about BASIC in general. :)

 

What languages do you program Intellivision games in, IntyBASIC and Assembly or something else?

I use only Assembly Language. I think IntyBASIC is an excellent language and one that lowers the barriers for many newcomers to the platform. I just personally disagree with it's approach to a basic framework (more than just a language, IntyBASIC is also a programming framework which abstracts the hardware and offers a low-level kernel). Plus, I just don't like BASIC as a language for systems development like games. ;)

 

dZ.

Link to comment
Share on other sites

Agreed, it depends on the language, the platform, and the skills of the programmer.

 

I was just talking in generalities since for most of this thread you also seem to be talking about BASIC in general. :)

 

 

I use only Assembly Language. I think IntyBASIC is an excellent language and one that lowers the barriers for many newcomers to the platform. I just personally disagree with it's approach to a basic framework (more than just a language, IntyBASIC is also a programming framework which abstracts the hardware and offers a low-level kernel). Plus, I just don't like BASIC as a language for systems development like games. ;)

 

dZ.

 

By the way, I would never recommend Assembly over BASIC for someone starting. However, given other options, I would probably suggest something else. :)

 

dZ.

 

Good point about frameworks - for a begginer who wants to write Atari 2600 games I would definitely reccommend BASIC or using Assembly with a Framework, so that the programmer need not be concerned with racing the beam, a technical challenge not present on other systems.

 

The C64 and the Inty have more of a built in Framework for beginning Assembly programmers to get started with (screen buffer, x/y addressable sprites, etc) by comparison so a beginner would fare better learning Assembly on those platforms. What languages would you reccommend for a beginner who wants to write C64 games, C or Assembly?

 

Here's a discusson on lemon64 debating the merits of C, Assembly and BASIC for c64 game development:

http://gkanold.wixsite.com/homeputerium/games-list-2017

 

When I designed Virtual World BASIC/Flashback BASIC for the Atari 2600 I thought BASIC was a great fit for being retro and small footprint.

The most important feature is language agnostic, an embedded RDBMS (blitter chip) for graphics acceleration which can be used as a Framework directly with Assembly, or with alternate compiled language - I could have choosen any language, I think it's really just semantics and like the advantages BASIC offers for small code.

 

It's hard to ignore that aspect when I look at the 2 inch thick Assembly printout for my games PIXELS or KC Monster Maze, compared to just a few pages of BASIC for DEFENDER III.

 

There is another international programming contest celebrating 40 years of BASIC programming on Micro Computers this year here:

http://gkanold.wixsite.com/homeputerium/games-list-2017

 

Take a look at the screenshots already and the entries from last year to see the amazing things that can be done in 10 lines of BASIC.

We don't see that with C; the relative disadvantage is that we need to write a lot more high level language code than we do with BASIC.

 

Another disadvantage as per the lemon thread is that when video games are written in C invariably some sections must still be written in Assembly.

Ok but a lot of extra code plus sections required in Assembly make it look like C is neither finished nor high level enough; BASIC is so powerful you don't need to mix in any Assembly to write an excellent game and you don't need a lot of code either. imo this flexibility opens the language up to beginners and makes it more fun.

Link to comment
Share on other sites

Just my 2 cents:

 

I learned BASIC on a TI99/4A and TRS80 model 4. Later on a DEC PDP11. ( strangely similar to the TI basic BTW )

When I got a C=64, I started adding in-line assembly. But I still like the TI99 The best. Though it is painfully SLOW.

 

So much for the history.

 

Now, learning BASIC gave me my career today. T-SQL and PL-SQL are very much like BASIC.

Reporting services use VBScript etc.

 

Granted we can use C#/CLR for Stored Procs. etc.

 

BASIC is the Rapid Development language. Though it is hard to live without While loops on the older console basic's LOL

  • Like 2
Link to comment
Share on other sites

Just my 2 cents:

 

I learned BASIC on a TI99/4A and TRS80 model 4. Later on a DEC PDP11. ( strangely similar to the TI basic BTW )

When I got a C=64, I started adding in-line assembly. But I still like the TI99 The best. Though it is painfully SLOW.

 

So much for the history.

 

Now, learning BASIC gave me my career today. T-SQL and PL-SQL are very much like BASIC.

Reporting services use VBScript etc.

 

Granted we can use C#/CLR for Stored Procs. etc.

 

BASIC is the Rapid Development language. Though it is hard to live without While loops on the older console basic's LOL

Refreshing perspective! :) Agree BASIC is all about rapid development and that T-SQL and PL-SQL extensions are essentially BASIC.

 

MS can't get away from BASIC, even the VB6 IDE from 1998 is back in MS Office after attempts to get business users to run .net in EXCEL.

 

The TI was awesome, had a great BASIC despite being slow. The c64 had a good BASIC too though it lacked graphics commands - I was particularly impressed with that BASIC when it was running on the 5K VIC-20; turn the clock back to 1981 and very few high level languages are efficient enough to run in 4 or 5K - primarily BASIC and Forth.

 

I think BASIC has awesome potential in scripting environments and for embedded and legacy systems today - we will likely see new BASIC compilers and interpreters emerge in those areas.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 months later...

I started off with Commodore 64 BASIC, even though the C64 was discontinued in 1994, and I was born in 1991. The Usborne books you could follow along and type in the typed up programs were my first experience of programming, and it was all in BASIC.

 

I completely agree with DZ, you either have two types of people: people who begin with BASIC but move on unharmed, and people who remain ensnared within BASIC metaphors (or put better: its lack of metaphors and structure). I used to love QBASIC and how unstructured it was, but I never learned much.

 

I learned a lot more about structure and flow from learning Python. I'm surprised no-one brought up Python in this discussion. I think Python possesses all the beautiful things about BASIC, while improving markedly on its lack of structure. Of course Python is completely unsuitable for 8-bit development (although someone might prove us wrong!).

 

I agree with what came out of this discussion: that BASIC is great for getting up and going with little experience, but it doesn't offer much in the way of learning how to code professionally.

 

For developing 2600 games I prefer machine code. Contrary to the philosophy of BASIC, I think understanding the stuff "under the hood" of a computer isn't that hard. Digital Computer Electionics by Malvino is a great introduction to CPU electronics.

  • Like 2
Link to comment
Share on other sites

I started off with Commodore 64 BASIC, even though the C64 was discontinued in 1994, and I was born in 1991. The Usborne books you could follow along and type in the typed up programs were my first experience of programming, and it was all in BASIC.

 

I completely agree with DZ, you either have two types of people: people who begin with BASIC but move on unharmed, and people who remain ensnared within BASIC metaphors (or put better: its lack of metaphors and structure). I used to love QBASIC and how unstructured it was, but I never learned much.

 

I learned a lot more about structure and flow from learning Python. I'm surprised no-one brought up Python in this discussion. I think Python possesses all the beautiful things about BASIC, while improving markedly on its lack of structure. Of course Python is completely unsuitable for 8-bit development (although someone might prove us wrong!).

 

I agree with what came out of this discussion: that BASIC is great for getting up and going with little experience, but it doesn't offer much in the way of learning how to code professionally.

 

For developing 2600 games I prefer machine code. Contrary to the philosophy of BASIC, I think understanding the stuff "under the hood" of a computer isn't that hard. Digital Computer Electionics by Malvino is a great introduction to CPU electronics.

 

Hi Vidak,

I think your early learning experience with Microsoft BASIC typing in program listings gave you an edge learning other languages.

 

Regarding professional coding consider the larger share of business applications are written in BASIC.

 

Looking forward to seeing your Atari games!

  • Like 1
Link to comment
Share on other sites

I think the key is in what you expect the language to do for you. BASIC was originally intended to show people who had no clue what computers were or worse who were intimidated by the machines that anyone could use a computer. In that sense BASIC is the software equivalent of an electronic breadboard which by the way, also often produces a result that looks like spaghetti.

 

Back when a computer cost nearly a half million dollars, ordinary people using a computer was a radical idea indeed.

 

Because BASIC was not originally intended as a tool for computer experts, I doubt that it will ever be widely used by people who truly understand what the hardware is doing.

 

Over time, BASIC has evolved and I think it will continue to be relevant because, most people do not need to know what the hardware is doing. They are only concerned with the input and the output and very little with the process.

 

Even if what survives is not recognisable as BASIC, I am confident the concept of allowing humans to communicate more naturally with computers will continue.

 

Some day I look forward to telling my computer what I want audibly. For example, I might say, create an arcade game template. Set the screen background to black. Add an asteroid image. Smaller, smaller. Duplicate image ten times at random locations. Move the images in random directions wrapping to opposite side when they hit the edge of the screen...

 

I think you get the idea where this is headed. It all started because of BASIC and in the end, there will be only BASIC.

 

Except someone still has to use a practical language to create the software which does all that for you.

Link to comment
Share on other sites

I started off with Commodore 64 BASIC, even though the C64 was discontinued in 1994, and I was born in 1991. The Usborne books you could follow along and type in the typed up programs were my first experience of programming, and it was all in BASIC.

 

I completely agree with DZ, you either have two types of people: people who begin with BASIC but move on unharmed, and people who remain ensnared within BASIC metaphors (or put better: its lack of metaphors and structure). I used to love QBASIC and how unstructured it was, but I never learned much.

 

I learned a lot more about structure and flow from learning Python. I'm surprised no-one brought up Python in this discussion. I think Python possesses all the beautiful things about BASIC, while improving markedly on its lack of structure. Of course Python is completely unsuitable for 8-bit development (although someone might prove us wrong!).

 

I agree with what came out of this discussion: that BASIC is great for getting up and going with little experience, but it doesn't offer much in the way of learning how to code professionally.

 

For developing 2600 games I prefer machine code. Contrary to the philosophy of BASIC, I think understanding the stuff "under the hood" of a computer isn't that hard. Digital Computer Electionics by Malvino is a great introduction to CPU electronics.

 

I'm too lazy right now to organize my thoughts on this into a flowing glued together post, so I'll just make some bullet points of some of the thoughts that pop up on this subject:

  • Use of line numbers rather than being able to use labels was probably the biggest contributer to BASICs poor code structure; even more so than GOTO was.
  • A teacher could have required students to not use GOTO in assignments.
  • The closer a language's syntax is to every day common human language, the more chance it has of introducing people to any kind of programming at all.
  • The high speed of feedback for the programmer that an interpreter allows should not be under valued for those learning to program.
  • Like vidak, I'm impressed with Python as it adopts much of the good from other languages while leaving behind some of the bad.
  • BASIC is not ideal for professional development. The ones that are best for professional development are modern renditions that are, in a lot of ways not exactly BASIC any more, and are more like C etc. And yet, I think many might argue that if you are going to take on the kind of learning curve that they require, you may as well just use C etc. anyway.
  • Programming to learn programming is a different set of priorities than programming to develop highly functional software.
Edited by fujidude
  • Like 1
Link to comment
Share on other sites

I do love BASIC though. It really captured my imagination as a child. If it wasn't for BASIC I never would have come to understand and love computers as much as I did. I wrote countless games and programs in BASIC.

 

I think that's something old computers really had to their advantage: the fact you had to use BASIC to use them. Computers control us now, but computers used to be useful tools in the household because of BASIC

  • Like 2
Link to comment
Share on other sites

I think that's something old computers really had to their advantage: the fact you had to use BASIC to use them. Computers control us now, but computers used to be useful tools in the household because of BASIC

 

I respectfully disagree. Today's computers and computing devices are many multitudes more useful in the household because of their connectivity. Of course, that connectivity also makes them a greater tool for distraction, but, in any case, if we're being honest, it was a lot more effort to actually do useful things with computers back in our youth. Computers were also more for us back then as well, rather than for everyone like they are today. That in and of itself has pluses and minuses.

  • Like 1
Link to comment
Share on other sites

I do love BASIC though. It really captured my imagination as a child. If it wasn't for BASIC I never would have come to understand and love computers as much as I did. I wrote countless games and programs in BASIC.

 

I think that's something old computers really had to their advantage: the fact you had to use BASIC to use them. Computers control us now, but computers used to be useful tools in the household because of BASIC

 

 

I respectfully disagree. Today's computers and computing devices are many multitudes more useful in the household because of their connectivity. Of course, that connectivity also makes them a greater tool for distraction, but, in any case, if we're being honest, it was a lot more effort to actually do useful things with computers back in our youth. Computers were also more for us back then as well, rather than for everyone like they are today. That in and of itself has pluses and minuses.

 

You were both part of the great BASIC experiment because you learned to program as children; Olympic athletes including even cerebral sports like Chess have to start as children to reach their full potential.

 

 

Except someone still has to use a practical language to create the software which does all that for you.

 

Kids who joined computer clubs and learned early on with exposure to BASIC like the Woz, Gates, Allen and Davidoff went on to write complex practical programming languages, which were also BASIC dialects. None of these individuals learned from "studying compiler design at University", they learned from actually programming and thus were termendously innovative with their new ideas. They cut their classes because they'd already had a superior education; Linus followed the same path.

Link to comment
Share on other sites

Well that's not really true, many of the most famous computer languages were written by people with university degrees. Take C for example. That was done with the enormous resources of Bell Labs

 

Actually most new technologies are discovered and created by amateur scientists and not through academia; BASIC originated at Dartmouth University but was intended for everyone.

 

A better question might be who created Fortran, since BASIC is a dialect of Fortran. Fortran was created by a small team of Chess players at IBM (IBM had recruited engineers who were advanced Chess players for their analytical abilities).

 

We would probably need a lot of resources to come up with the new BASIC or the next most effective way of teaching people about computers

 

There was an interesting article posted about the BASIC examples in high school science and math textbooks not being easy to implement as effective teaching examples in newer languages because the languages are too complicated for simple examples.

 

Computers today are easier to use as Bill pointed out, but there's no emphasis on the user learning to program and control their computer; modern operating systems and programs are designed to insulate you from programming and present the computer as a service kiosk for ordering products and viewing advertisements to control and program the operator.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

The some of the problems with BASIC back in the day for me:

 

#1 Line numbers

#2 Interpreted

#3 Designed around completness instead of performance

 

When I was younger I wanted to make games and BASIC was just too slow. There was the odd interesting languge that was designed for speed but these where not what you got with the machine. Then maybe when ST/Amiga came along you had STOS/AMOS/Blitz which where ok.

 

Compiled basics like IntyBasic and Batari Basic are totally different, they are designed to make games,

designed around the limitations of the hardware. They are BASIC , but are more related to Assembly - just sugar coated.

 

I actaully wish I had learned Assembly back in the 80s, because it was never as hard as I thought it was.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...