Durante mis comienzos, me topé gracias al Shareware, con una grata sorpresa. Se trataba del lenguaje de programación FAST. Un lenguaje que jamás llegué a conocer a nadie que lo conociera, pero que en aquellos días de Turbo BASIC, me parecía increíble.

FAST Compiler, generaba archivos .COM para DOS extremadamente pequeños, y ofrecía una velocidad de ejecución, lejos del resto de compiladores. Además, sus rapidísimas rutinas de escritura en la pantalla de texto, hacía que pareciera más rápido de lo que aún era.

FAST, empezó a escribirse en 1986, de la mano de Peter Campbell Software, y que acabaría falleciendo en 2007, sin demasiada fama informática, a pesar de haber estado detrás de FastBase.

FAST, era un nuevo lenguaje, que se inspiraba en las sintaxis de BASIC, Pascal, C y ensamblador, algo que luego veríamos en el mucho más conocido Sphinx C–. Estaba programado en ensamblador, y aunque no era tan capaz como los lenguajes de propósico general más habituales, era impresionante.



La primera versión de FAST, se publicó en 1988, con mucha actividad hasta 1990 con la versión 2.67. A partir de ahí, seguiría actualizándose, aunque a menor ritmo, y con todavía menor popularidad, hasta llegar a 1997 con la versión 2.91 / 2.92, con soporte de 32 bits, y que estaba prevista para 1995.

El mismo Peter Campbell, creó también SOFA (Super Optimsed Fast Assembler), entre 1988 y 1994. Un ensamblador escrito en ensamblador, y que sería utilizado por FAST.

Campbell, cedió ambos trabajos al dominio público (Public Domain), y gracias al esfuerzo de Bruce M. Axtens, ahora podemos recordarlo, y hacer que perdure, tanto en forma de ejecutables, como de código fuente, dentro del repositorio de FreeDOS.

Entre los ejemplos de su distribución, contamos, como no, con una implementación de Sieve, que se compilan a unos meros 620 bytes, y que puedes descargar aquí (2Kb. en formato ZIP).

#short
const max=8191
print bios "Sieve - 25 iterations... ";
t1=timer
flags ? max
 
repeat 25
{
	count=0
	fill max/2 from flags with -1
	for i=0 to max
	{
		if peekb (flags+i) then
		{
			prime = i*2+3
			;print prime;"   ";
			k =i+prime
			while k<=max
			{
				pokeb flags+k,0
				k+=prime
			}
			count++
		}
		next i
	}
}
t2=(timer-t1)*100/182
print bios count" primes in "; t2/10; "."; t2 mod 10; " seconds."