beanz Magazine

ALGOL

This programming language introduced ideas and solutions we take for granted in today's languages.

The history of programming languages began in the 1950s with the evolution of software from flipping switches on massive machines in the 1940s to computers built and sold by IBM, Burroughs, and others. The new computers had custom software that only worked on the company’s computers. Imagine if Java only worked on Dell computers running Windows. And C++ only worked on Lenovo computers running Linux.

By the mid-1950s, efforts in Europe and the US started to create a universal software programming language. ALGOL — short for ALGOrithmic Language — was specified in 1958 to meet these goals:

  • Similar to mathematical notation and readable with little explanation needed.
  • Usable to describe computing processes in publications.
  • Translate into machine programs mechanically.
  • Work on any computer.

There are three specifications as the result of meetings, ALGOL 58, ALGOL 60, and ALGOL 68. The ALGOL 60 report and specification, however, has had the most impact on the history of programming languages.

What Makes ALGOL Special?

ALGOL 58 and ALGOL 60 arrived at a moment in programming history when programmers, mathematicians, and computer scientists started to make progress understanding how modern software might work and evolve. While ALGOL is designed to be a universal programming language — and never achieved this goal, the process of creating the ALGOL 60 language to describe algorithms provided examples that inspired other languages throughout the 1960s to date.

For example, Americans use a decimal point while Europeans a comma. Such a simple difference posed a problem for software to work on all computers. The solution was to define ALGOL on three levels, reference, hardware, and publication.

Other solutions that inspired future modern programming languages include conditionals, loops, switches, and procedures. While ALGOL 58 captured the latest ideas and solutions for software programming in the 1950s, the ALGOL 60 specification had the most impact.

ALGOL 60’s primary contribution? The Backus Naur Form (BNF), a way to describe programming languages that computers could process and humans read. BNF statements read much like mathematical statements while ALGOL added a way to describe actions upon these statements and interactions between statements. BNF describes the transition point between math and programming.

Today we take these typical programming statements as common and unremarkable:

$i = 0
if ($i < 10) print $i $i++ In 1960, however, there was no common universal way to evaluate a variable $i and then perform a task when a statement evaluates to true (or false). The Backus Naur Form and other details in the ALGOL 60 report were big steps towards many of the programming language details we take for granted today. If you're wondering what the code above does, we set a variable $i equal to 0, evaluate if our variable is less than 10, and, if so, print out the value of our variable then add 1 (the $i++ bit) to the value of our variable. The $ (dollar sign) is one way to tell the programming language that I is a variable. In ALGOL, for example, a ` (back tick) is used to tell the language what follows is a variable. This fake code repeats until $i is less than 10 at which point the statement is false (not true) and stops.

How is ALGOL Used?

The ALGOL 60 language had a few details that limited adoption. For example, ALGOL 60 has no input/output (I/O) so you cannot print or echo statements to a screen or printer. While it’s possible to use compilers handle I/O, compilers at that time were specific to machines and added an extra step. ALGOL 60 also had some quirky details about handling keywords compared to other languages.

While ALGOL made huge contributions to the history of modern programming, the language was not widely used beyond the 1960s. ALGOL 68, defined in the late 1960s, attempted to make ALGOL more usable. oHowever, ther languages from the 1950s — for example, FORTRAN, COBOL, and Lisp — were used more for various reasons. However, these languages and their successors benefited from the research, debates, and solutions defined by ALGOL.

While ALGOL was designed to be universal, work on all computers, and replace many other languages, it’s contribution to software development are universal elements and ideas used in many different software programming languages.

Learn More

On the ALGOL Effort

https://heerdebeer.org/ALGOL/
https://heerdebeer.org/History/Publications/ALGOL_more_than_just_ALGOL.html

ALGOL

https://en.wikipedia.org/wiki/ALGOL_60
http://web.archive.org/web/20111114122103/http://www.eecs.qmul.ac.uk/~ohearn/Algol/intro.html
http://cs.ecs.baylor.edu/~maurer/SieveE/Algol60.htm
http://www.slideshare.net/hidayettakci/algol-ailesi-programlama-dilleri

The History of ALGOL

http://www.softwarepreservation.org/projects/ALGOL/
http://groups.engin.umd.umich.edu/CIS/course.des/cis400/algol/algol.html

Tutorials

https://www.youtube.com/watch?v=qF4qVq2M-Fo

ALGOL Online Emulator

http://www.tutorialspoint.com/execute_algol_online.php
http://kdf9.settle.dtdns.net/EE9/7087140/walgol/run.htm

Backus Naur Form

https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form

Also In The August 2016 Issue

A thoughtful essay to inspire the start of a new school year.

Teacher and librarian Colleen Graves describes her journey with her students learning about invention literacy.

This summer two interesting books appeared, one teaches computer science concepts within a detective story, the other explores how teachers can use design thinking.

Makey Makey projects can teach kids about user interface and design cycles and empathy while having fun.

Forks are used in software development to describe how software projects evolve.

Board and card games organized by grade level, with links to more tools.

Schools and public libraries are perfect places for people to have fun and learn as they make things

Discrete math is an important computer science skill that introduces you to logic and logic circuits.

Creativity is innate in all people. Design thinking is a way to bring out and amplify this natural creativity.

While everybody on the planet has used a web browser, many people don't know about web browser history.

Here's how to tell if you are a beginner programmer or if your programming skills are evolving.

If you are looking for ways to learn a new programming language or framework, here are my 5 suggestions.

Links from the bottom of all the August 2016 articles, collected in one place for you to print, share, or bookmark.

Interesting stories about computer science, software programming, and technology for August 2016.

Computer science unplugged teaches how computers and computer science works, without the use of computers.

Paul describes his daily life as a programmer from Derby in the United Kingdom.