As BASIC celebrates 50 years, a revival is needed

On the 1st May 1964 BASIC (Beginner’s All-purpose Symbolic Instruction Code) programming language was initiated when at 4 a.m. Professor John G. Kemeny and student programmer Thomas E. Kurtz (who later became a professor) simultaneously typed RUN on neighbouring terminals in the basement hall of Dartmouth College in New Hampshire. When they got back the correct answers to their programs, BASIC was officially born. This innovation implemented the concept of time-sharing on computer systems and set in motion a chain of events which would lead to computers becoming available to all.

At the time, computers were generally used by science and mathematics students, and required custom written software. Data and programs were often stored on punch-cards and paper tape [Footnote 1], with magnetic tape being introduced in 1951. During the 1970s there was rapid growth in different flavours of BASIC, additional functions were added with extra structuring keywords and advanced floating-point operation features.

With the introduction of 8-bit home computing, from the ZX-81, Commodore VIC-20, ZX Spectrum, Commodore 64, BBC Micro & Acorn Electron, Amstrad CPC 464 and other models and makes of the 1980s, versions of BASIC became widespread and were often integrated into the computer’s firmware (ROM chip) along with an interpreter and operating system commands. Cassette tapes were used for data storage and retrieval initially and later floppy disks.

ZX Spectrum BASIC example
ZX Spectrum BASIC example

Upon powering on a home micro an interpreter prompt would be displayed, this enable writing BASIC programs or executing commands built into that hardware platform’s operating system. For example, to load a word processor package (e.g., Tasword) one would type LOAD “” and press Enter. Then play the tape. Friends with attached Interface 1 + Microdrives or floppy disks with the later ZX Spectrum +3 (Amstrad) would be able to load data at a much faster rate than cassette tape.

With the growth of 8-bit home computing, complete source code for computer games and other programs were published in magazines and books. In the UK the BBC embarked upon a Computer Literacy Project using BBC BASIC. Over the years BASIC has continued to develop, notably with Microsoft’s Visual Basic. Some teaching guides such as the AQA A/AS Level Computing books still provide examples in Microsoft Visual Basic, however this version of BASIC is closer in structure to Python or Pascal rather than 8-bit computer BASIC.

ZX Spectrum Keyboard
ZX Spectrum Keyboard

Higher level languages such as Pascal and Python can be confusing to someone who has never seen program code before and absolute beginners could also start with Scratch. While BASIC was not liked by all programmers, I believe that it is still an excellent introductory path in learning how to program. Once one has got to grips with programming in a BASIC language, whether one is using ZX Spectrum, BBC, True or any other flavour of BASIC, the next step would be to move onto Pascal, Python or Microsoft Visual Basic.

There are many Integrated Development Environments (IDEs) available to write programs in, such as Microsoft Visual Studio on Windows, Xcode on Mac OS, or on Linux/BSD (and Windows & Mac) Code::Blocks and Qt Creator.

However if one wants to go retro and get to grips with coding, a ZX Spectrum or BBC Micro emulator could be loaded onto Windows, Mac or Linux/BSD based OS computer. Excellent resources to start with are World Of Spectrum and BBC BASIC. Alternative hardware platforms to desktop & laptop computers are available for learning how to program, notable the Raspberry Pi.

Programming will open a whole world of fun, thinking logically and aid in the learning of algorithms. Problem solving skills will be acquired along the way, and with the growth of coding clubs, opportunities are available to learn in a group.

While the days of the 8-bit home computer hardware with built-in BASIC interpreter have been superseded by more advanced processor technology, and some may believe that technology has progressed beyond BASIC programming,

the age of Basic programming has gone

this need not be the case. With 8-bit emulators (ZX Spectrum, BBC Micro, et al.) available to run on Windows, Mac OS, Linux/BSD operating systems, and RISC OS available for the Raspberry Pi, BASIC programming is available for all to start learning.

Footnotes.

[Footnote 1] 1. Magnetic drums were widely used during the 1950s-1960s for computer memory, which was superseded by magnetic-core memory. Later followed transistor memory, and with the invention of semiconductor circuits the first RAM chips were used during the late 1960s, becoming commercially available in October 1970 with the Intel 1103.

Resources.

BBC BASIC
World of Spectrum
Visual Basic
Code Club
Coding Club
Computing for teachers
Raspberry Pi

Advertisements

WordStar used to write Game of Thrones

BBC News reported on 14th May that Game of Thrones author, George RR Martin, still uses WordStar 4 on a DOS based computer.

The Game of Thrones author has revealed that he did not want a modern word processor amending his writing as he typed, did not fear a virus (malware) from deleting his work, or have auto-correction spell checker change words not recognised in a fantasy novel.

Mr Martin said:

“I actually like it, it does what I want a word-processing programme to do and it doesn’t do anything else. I don’t want any help, you know?

“I hate some of these modern systems where you type a lower case letter and it becomes a capital. I don’t want a capital. If I’d wanted a capital, I’d have typed a capital. I know how to work the shift key. Stop fixing it.”

Mr Martin further expanded his explanation saying:

“I actually have two computers. I have the computer that I browse the internet with, that I get my email on and I do my taxes on. Then I have my writing computer, which is a DOS machine not connected to the internet. Remember DOS? I use WordStar 4.0 as my word-processing system.”

Prior to Mr Martin talking on the Conan O’Brien show about his use of WordStar 4 on a DOS based computer, he previously revealed in a blog posting in February 2011:

“I am a dinosaur, as all my friends will tell you. A man of the 20th century, not the 21st.”

Why should such revelations produce a mini media storm? Well possibly because many have bought into the idea of upgrade to the latest product and throw out the old. However newer does not always mean better, different, sometimes less complex, but generally more complex. Having used computers since the days of the 8bit home computer, from the ZX Spectrum onwards, it is refreshing to hear what I believe to be a positive IT story.

There is much about data loss, bugs and potential compromise in the news currently, almost on a weekly basis (and sometimes daily) it seems… Orange France, Heartbleed, PayPal and eBay… to mention a few recent stories.

An important issue of connectivity has been overlooked with this micro media storm. The very lack of connectivity and complexity George RR Martin employs for writing, is the very same thing which protects his work from malware, cyber espionage, buggy software and frustrating “features” found in many modern word-processing applications and IT.

However, Mr Martin is no ‘dinosaur’.

Why… George RR Martin’s use of WordStar 4 on a DOS system not internet connected, with no auto-correct or other such features is a sensible precaution for a well known writer and author. Mr Martin also uses a newer internet connected computer for email, internet browsing and other tasks.

Being able to word-process on a computer is a great leap over using a mechanical type writer with an ink ribbon in terms of easily redrafting material, although there is a loss in tactile feedback. In drafting this article I have chopped, changed, added and removed words, sentences and whole paragraphs, and corrected the auto-correct spell checking corrections. Note: this article was drafted using a word processor.

WordPrefect 5.1 DOS based Word Processor
WordPrefect 5.1 DOS based Word Processor

I remember using WordStar at college many moons ago on an Amstrad PC1512 running CPM/PC-DOS, using Pen Pal 1.5 and Final Writer on a Commodore Amiga (16bit home computer), and also using WordPrefect 5.1 on Windows 3.1x from a DOS shell; reveal codes was a very useful feature in WP5.1.

I do have nostalgic moments, more often as I get older and when reading about the latest “security breach” of a company’s servers. It maybe time to look back to older technology to move forwards from the spate of malware which can infect modern operating systems and applications.

A computer that boots into an enhanced command line or shell BASIC (computer language) interface from firmware, which can subsequently load a modern OS from a simplified DOS through to a modern GUI (Graphical User Interface) desktop if required, may not be a bad thing. Beyond nostalgia, booting to a shell running BASIC may also encourage computer users into learning BASIC programming language, like the ZX Spectrum or BBC Micro & Acorn home computers.

BASIC is still a taught computer language and a good place to start learning computer programming. BASIC programming language is popular on Microsoft platform in the form of MS Visual Basic, VB .Net and BASIC interpreters are available for many other platforms too. For an excellent Wiki site containing a vast repository of programming language information, please visit RosettaCode.org.

Turning on a modern mobile phone, tablet, laptop or desktop computer and using one’s WIMP (windows, icons menu, pointer) device or hand gestures to navigate, is all well and good and makes life sort of easier with modern operating systems. Having 24/7 internet connectivity with constant updates from social media sites maybe useful too at times. However…

Modern malware is exploiting complexities of modern operating systems, applications, social networking and other on-line connectivity, leaving many tech users in the dark. So should we be looking back to 8bit or 16bit computing, or a BASIC interpreter interface to be moving forward? We don’t need to throw the rubber duck out with the bath water, but creating a computer system which encourages the learning of how to programme, combined with at least a moderate understanding of how a computer works would not a bad thing.

How do I become a computer programmer?

With news stories earlier last year following the Raspberry Pi foundation‘s mission to get computing science taught in schools, a lack of programming skills amongst British citizens have been highlighted. For the past 15 years (± 5 years) schools have taught ICT (Information Computer Technology) skills, which are useful, but have left a whole generation of children and young adults without valuable coding skills within the early 21st century information age. A small number of schools teach computer science, however this has not been the norm due to the National Curriculum’s ICT policy; this maybe about to change.

One may ask why should this matter? Well within the 21st century it matters because of our dependence on computing and information technology for so many aspects of our lives. During the first golden age of home computing in the UK and many other countries around the world, the Sinclair ZX-81 and ZX Spectrum, Commodore VIC-20 and 64, Acorn Atom, Acorn BBC Micro (Proton) and the Acorn Electron brought the ability not only to play computer games, but also enabled children and adults to use these micro computers to learn programming and how they worked.

BASIC was the primary programming language one would learn, aided by computing magazines and TV programmes of the era. Instructions with computer code could be programmed into a home micro and saved to cassette or disk. I can recall spending many hours coding into my ZX Spectrum a program which would allow one to land a lunar module onto the surface of the moon. It was these experiences that enthused and engaged my passion for computing.

So how do I enter into the world of computer programming?

It is never too late to enter into the world of computer programming, for young and older alike. While learning to program may not be everyone’s idea of fun, learning rudimentary programming skills and having a reasonably competent understanding of how computers and communication devices work is an essential skill for the 21st century. However if you would like to know more than just the basics, what can one do?

A previous route would be to study computer science at school level, arguably a route that has not been available to many, following a beginners GCSE guide through to A Level computer science, then moving onto an undergraduate computer science degree. Fast forward to 2012, if you are at schooling age, programming tools such as ALICE, Scratch or Kids Ruby maybe a good place to start. There is a good article written by Emma Mulqueeny called “How to teach code” which provides further information.

However if you are no longer at schooling age and want a doorway in, then I would recommend a general computer science book for beginners. There are many books available, finding the right book for your learning needs will aid your learning. A quick web search for “beginners computer science” or “computer science A Level” should provide a list of book resources.

If you already have a good basic understanding of computers, for example grew-up in the world of ZX Spectrum, BBC Micro (Acorn Computers), Commodore 64, Atari ST, Commodore Amiga, or the early Disk Operating System (DOS) versions of CPM, DR-DOS, PC-DOS or MS-DOS then you will most likely have been introduced to BASIC (Beginner’s All-purpose Symbolic Instruction Code) programming and possibly also the world of machine code.

For all of those who still recall the golden age of computing under the ZX Spectrum, check out Dave Foreman’s unofficial “Sinclair User” website. In particular you might like to start reading articles on “Machine Code“.

If you want to jump the basic introduction to computer science or have a good enough background knowledge, the next stage is to look at books for high-level coding, such as with Pascal or ‘C’ family programming languages. A quick web search for “beginners programming” should provide a list of book resources. There are also many on-line resources and learning-apps available. A free resource worth mentioning is codeyear.com, which aims to provide learning materials on a weekly basis for a year to educate one on becoming a programmer.

Many applications that run on Windows, *NIX (UNIX/Linux) and Macintosh Operating System (OS) are generally compiled using a form of the ‘C’ programming language. If you are committed to becoming a programmer, then one should delve into the ‘C’ language family, with a comprehensive book that takes you from starter to advanced. A small caveat: regardless of age if you would like to see quick results, there are many other high level languages to start with, such as BASIC, which is still a favourite of mine.

The ‘C’ programming language family main flavours consist of: ‘C’, ‘C#’, ‘C++’ and ‘Object-C’; there are also subsidiary languages such as Java (programming language). Generally speaking, the ‘C’ language family has differences in the form of syntax used; this is similar to the grammar rules of a language. Writing code can be done with text editors. However to make coding tasks easier, all modern operating systems (Windows, *NIX and OS X) have Integrated Development Environment (IDE) tools to aid a programmer. In general all modern operating systems can compile the ‘C’ programming language, the root ‘C’ language, using a compiler such as gcc.

If you use Visual Studio on Windows OS and associated ASP.NET, you would most likely use ‘C#’ language; however you could also use a ‘C++” compiler and language. For Macintosh OS X and iOS the choice of language is ‘Object-C’ with IDE Xcode. For Unix/Linux OS flavours you could use ‘C’, Object-C and ‘C++’ languages. Java programming language can be coded on all popular OS platforms.

Once you become competent programming in ‘C’, you should expand your language coding abilities to include scripting languages such as Python, Pearl and PHP; also learning Java would be advantageous. Then further expand your programming skills to include HTML and XML languages.

Another area to learn about is databases. There are many different flavours of database, the more popular Relational Database Management Systems (RDBMS) are SQL language based, for example: Microsoft SQL, MySQL, PostgreSQL and Oracle SQL. Many applications including web-based applications will store information within databases.

While mastering a scripting language, HTML and databases, it would also be advantageous to consider learning more hard-core computing skills such as machine code in the form of Assembler language, computer hardware functionality, networking and disk storage systems. This will help to improve your overall understanding of computer science.

However learning how to code is not enough in itself. Learning how to draw goes hand-in-hand with learning how to code. Learning both programming and drawing skills together will be advantageous for working in the video gaming and visual effects industries; in short, skills working towards becoming a polymath. If you are a musician or have music theory training, you already have an advantage.

Once you have mastered a ‘C’ language, scripting languages, SQL, assembler, drawing… you may also consider expanding your programming skills by learning new computer programming languages, such as Fortran as well as other scripting languages. This will be dependant upon the field of work you wish to follow, or maybe for fun, or just to seek new knowledge.

Family computers can be expensive and complicated machines. Most families would be cautious about allowing a family member to install development tools for coding. Netbooks and low-cost PC laptops can be used with Windows OS to install IDE applications. An alternative is to install a Unix OS like PC-BSD or a Linux OS like Ubuntu with IDE tools. For those who understand a little more about computers, there is also the Google Chromebook which can be modified to install a copy of Ubuntu and IDE tools. Windows, UNIX and Linux OS can also be installed into a virtual machine environment on your existing computer using VirtualBox or other virtualisation technology. Also a USB flash drive or SDHC card could be configured to boot a *NIX OS with IDE tools installed if one has supporting hardware.

A more simpler solution is about to become available with a new inexpensive computing alternative provided by the Raspberry Pi foundation. The Raspberry Pi computer will come in 2 models, A and B. Model B will have in addition to model A, ethernet networking and more memory stacked on the processor. Model A is set to retail for $25 (£16) and model B for $35 (£22). The early releases during the first quarter of 2012 will not come with a case, they will be exposed computer broads, however cases will be available later for both models. A keyboard and mouse will be required as well as a TV with coaxial or HMDI input; the Raspberry Pi is capable of full 1080p video output. A power adaptor or batteries will also be required; a standard phone charger will work with the Raspberry Pi. The Raspberry Pi’s computing function is based on an ARM1176JZF-S 700-megahertz (MHz) processor that will be capable of running Linux or RISC OS. Fedora, Debian and ArchLinux will run from SDHC cards and external USB devices such as HDDs (Hard disk Drives) can be attached.

Raspberry Pi is the successor to the BBC Micro and follows on from the first golden age of computing in the UK during the 1980s-1990s.

I have provided below a small selection of recommended books, programming tools and an inexpensive hardware platform to work from. Although there are many resources available, these recommendations are useful as a guide if you don’t know where to start.

Book recommendations

  • Drawing For Dummies, A Reference for the rest of Us!, Brenda Hoddinott, 2003, Wiley Publishing Inc, ISBN 978-0-7645-5476-6. This edition has been superseded with a new 2011 edition.

Tools for programming

  • Macintosh OS X: Xcode, Code::Blocks, QT Creator, GCC.
  • Windows OS: Visual Studio/Visual Studio Express, Borderland C++, Code::Blocks, QT Creator, wxDev-C++, GCC, LLVM (Clang + MingGW).
  • Unix/Linux OS: Code::Blocks, QT Creator, GCC, wxDev-C++, LLVM (Clang + MingGW) and many more.

Tools for Drawing

  • Paper, eraser, pencils, ruler sets, etc.
  • SketchBook, Paint, Paintbrush, GIMP, Blender.

Hardware platforms

For hardware please take a look at the Raspberry Pi.

Emulation

Fuse (ZX Spectrum) for Windows, Macintosh and Unix/Linux.

Resurrection of the BBC Micro

Will a descendent of the BBC Micro usher in a new golden age of home computing?

With the Raspberry Pi about to be released, a new golden age of home computing is set to grip enthusiasts who grew up during the BBC Micro, ZX Spectrum and Commodore 64 home computer era. The first golden age of home computing ran for about a 10 year period between 1982 – 1992; it should be noted that the first 8 bit home computers appeared in 1977, with the Commodore Pet, Tandy TRS-80 and Apple II in USA, although the price of these machines were out of reach for many people.

Although the BBC Micro ran to about 1994 with the Commodore 64, these 8 bit micro computers were superseded by 16 bit home computers in the guise of the Commodore Amiga and Atari ST. The popularity of 16 bit home computers followed on from the demise of the 8 bit micro in 1995 and ran for approximately 8 years for the Atari ST and up to the mid 90’s for the Commodore Amiga in the guise of A1200 and A4000 models.

While I was sad to see the demise of the 8 bit and subsequently 16 bit home computer, their ghosts live on strongly in emulation software such as Fuse. Over the past 16 years, home computing was taken over by the power of the Personal Computer (PC). Personal Computers come in many flavours these days, from desktops, laptops and net-books running a variety of operating systems. The main power houses in the noughties are arguably Microsoft, Apple and a variety of *NIX (UNIX and Linux) Operating Systems (OSes) ranging from FreeBSD, Solaris, Red-hat, SUSE, Fedora, Ubuntu, to name a few flavours and distributions.

Exciting times lie ahead for those of us who remember the home computing revolution. While I remember the ZX Spectrum as being king amongst the 8 bit micro home computer revolution of the 1980s, followed by the 16 bit home computer Commodore Amiga in the 1990s, the Raspberry Pi foundation is set to ignite a whole new revolution in home computing. Beyond home computing and computing hobbyists, our very culture could be about to have a radical dynamic shift in better education opportunities.

Arguably for the past 15 years, most schools in the UK have taught Information Computer Technology (ICT) skills. While these skills are important in a modern office environment, they do not empower school, college or university leavers with the raw computer science skills that are required for a modern 21st Century information age. This is where the Raspberry Pi foundation has stepped in, with an attempt to provide a low cost home computer for children to learn more than just ICT skills at school and home. I would also add that the Raspberry Pi palm sized ARM microprocessor will also enable those who have lost out on a computing revolution to gain some traction into learning fundamental computer science skills.

The Raspberry Pi computer will come in 2 models, A and B. Model B will have in addition to model A, ethernet networking and more memory stacked on the processor. Model A is set to retail for $25 (£16) and model B for $35 (£22). The early releases during the first quarter of 2012 will not come with a case, they will be exposed computer broads, however cases will be available later for both models. A keyboard and mouse will be required as well as a TV with coaxial or HMDI input; the Raspberry Pi is capable of full 1080p video output. A power adaptor or batteries will also be required; a standard phone charger will work with the Raspberry Pi. The Raspberry Pi’s computing function is based on an ARM1176JZF-S 700-megahertz (MHz) processor that will be capable of running Linux or RISC OS. Fedora, Debian and ArchLinux will run from SDHC cards and external USB devices such as HDDs (Hard disk Drives) can be attached. Ubuntu ARM OS should be available in the future.

Raspberry Pi foundation is composed of the following members: David Braben co-creator of Elite and founder of Frontier Developments, Jack Lang, Pete Lomas, Robert Mullins, Alan Mycroft and Eben Upton (Broadcom) who is director. Other voices that have lent their support to the Raspberry Pi project include Ian Livingstone, Square Enix (Eidos) president.

In February this year (2011), a report by NESTA published by Ian Livingstone and Alex Hope highlighted skills required by the UK’s video games and visual effects industries and how they could be met. Since the review was published in February, leading figures within the games and visual effects industries have been lobbying the UK government in an attempt to take onboard the report’s recommendations. During Summer 2011, Google’s CEO Eric Schmidt lent his support to the cause. In early December, the UK’s education secretary has acknowledged that computer science has a place in UK secondary education.

I can see lots of different uses this pocket sized computer can be put to. Maybe the Raspberry Pi’s innovation into home and school computing should be dubbed the Phoenix Pi; from the buckminsterfullerene ashes of the 8 bit home micro computer rises a successor running a 32 bit ARM processor capable of running full 1080p video and empowering students and knowledge seekers of any age to acquire new skills within a rapidly expanding information age.