Demos Explained; What are Demos? What is a Demo?
by: aancsiid - Vincent Scheib

What:
Executable programs which produce, in real time, engaging computer graphics and music. Programming, Art, and music Composition skills are stressed. Demos are similar in some ways (but are not equivalent) to music videos or short films.

Where:
Demos are created at, and submitted to, competitions called Demo Parties mostly in western Europe. Leading countries are Finland, the Netherlands, France, Sweden, and Germany. There have been a handful of 'Demo Parties' in North America at Berkeley, UC San Diego, and Canada.

When:
Demos appeared in the `80s. Intros were the first form of Demos. They became more popular in the early `90s. People continuously argue about demos 'fading away' -- however this has yet to happen.

How:
Initially, demos were coded exclusively  in assembly, for the Amiga and DOS. Gradually demos started using C, and finally C++ as well as running in Windows and using hardware accelerated graphics cards. The music for demos uses special formats similar in concept to MIDI files (but containing their own instrument and vocal audio samples)

Why:
Demos are about passion. They are about getting a computer to do the coolest thing you've ever seen a computer do. They are about great music, great art, and great programming (All biased to what the 'scene' has grown to respect). 
 

For more information:

A clean and accurate description of the scene:
Introduction to the Demoscene - hugi

A 1999 report on demos, lots of screen shots and examples:
Computer Demos - The Story So Far

Mid 1990's web page explaining demos:
PC Demos Explained: A Guide to the PC Demo Scene

Formal paper discussing:
The Hacker Demo Scene and it's Cultural Artifacts

Actual Demos: A collection of the best:
http://www.scene.org/tips.php 

A demo that explains what demos are:
ftp://ftp.takeover.nl/pub/takeover2000/demo/orion-this_is.zip
 

Terms:

executable programs
 
A program is a set of instructions which control a computer. This text was written on a web page, to view it you use a Browser such as Internet Explorer or Netscape Navigator. Those are programs, which allow you to browse the internet. Computer games are programs as well. 
 
A program is different than just an animation. An animation is simply a pre-recorded set of images played back for you. A program must do things (such as evaluate math equations) to be able to draw computer graphics.
 
real time
 
A program is technically said to be running in real time if it produces results at a reliable speed. The common use of the phrase 'real time' implies that the work is being done fast enough that you need not wait for it. Real time animation means that the animation is being drawn for you while you watch. A game is real time -- because you can control it and it responds to you immediately. A movie is not realtime because the work was done previously, you are just watching it be played back for you.
 
demo parties
 
A demo party is usually held for a few days (3 or so) and usually on a weekend. A large space is found, such as an auditorium. Most everyone brings their computers and stereos and cool toys. Loud music is played all the time. People do not sleep (well, some do, but not many and not often). A large projection screen is found in a room with a good sound system for viewing of demos. Games are played as well, but many people also work on demos, intros, music, digital art, videos, et cetera. 
 
A competition is held during this, where at some time all work must be submitted and then everyone watches / listens to it. Prizes are also common. 
 
assembly, C, C++
 
A computer executes machine code. Assembly code is an easier way to write machine code (a program takes the assembly and translates it into machine code). C and C++ are easier ways to write assembly.
 
Machine code is just a large chunk of numbers that are interpreted by a computer as instructions. The computer blindly performs whatever the machine code says.
 
for example: 05031 could be a program. 
 
If the computer were designed to interpret it as "read a character. If it is '0' get the next character and remember it as a number. If it is '1' add the numbers you've remembered and show the result." My example of 05031 would print out 8 as the answer (5+3 = 8). 
 
020407107050210101011 would print 13  14  4
 
Assembly makes it easier to write machine code. A computer program translates the assembly into the machine code.
 
for example:
get 5
get 3
add
 
One assembler (program that assembles) might turn every 'get' into a 0, every number as just a number, and every 'add' into a 1. If you run this assembly on the above example you would get 05031 -- the program from the previous example. 
 
get 2
get 4
get 7
add
get 7
get 5
get 2
add
get 1
get 1
get 1
add
This would be assembled into 020407107050210101011
 
Assemblers do many other things to help make it easier to write machine code.
 
C and C++ are programming languages that make it easier to write assembly. 
 
for example:
print (2+4+7)
This is similar to how C or C++ would do it. You just write out what you'd like to do. They allow you to write things such as 
a = (b+2)/(3*(3+7)-(4-3+6))*(2-(5+6)) 
much easier than it would be to do it in assembly. 
 
MIDI
 
Musical Instrument Digital Interface. Designed to allow electronic instruments to talk with each other -- and control one another. MIDI files can contain musical score, and be played back on computers (as well as electronic pianos or other instruments). MIDI playback on computers is generally not of very high quality (or hasn't been in the past) because it was designed to be played back on expensive electronic instruments. To play back a piano song on a computer the computer must know how to make piano sounds. Most computers in the 1980s and 1990s did not contain very realistic piano sounds.