Dartmouth BASIC
El Dartmouth BASIC (BASIC de Dartmouth) es la versión original del lenguaje de programación BASIC. Es llamado así porque fue diseñado e implementado en el Dartmouth College. El lenguaje fue diseñado por John Kemeny y Thomas Kurtz como parte del Dartmouth Time Sharing System (DTSS) (Sistema de tiempo compartido de Dartmouth) y fue uno de los primeros lenguajes de programación previstos para ser usado interactívamente.
Durante años, fueron producidas varias versiones en Dartmouth, todas implementadas como compiladores, a diferencia de muchas de las versiones del lenguaje implementadas en otros lados, que eran interpretadores. El primer compilador fue producido antes de que el sistema de tiempo compartido estuviera listo. Conocido como CardBASIC, fue pensado para el sistema basado en el lector de tarjetas estándar basado en el sistema de procesamiento por lotes. Como todas las versiones siguientes, fue implementado por un equipo de programadores no graduados trabajando bajo la dirección de Kemeny y Kurtz. La primera versión interactiva fue puesta a disposición de los usuarios generales en junio de 1964; la segunda en octubre de 1964; la tercera en 1966; la cuarta en 1969; la quinta en 1970; la sexta en 1971; y la séptima en 1979.
Historia del desarrollo
El trabajo sobre el compilador y el sistema operativo fue hecho concurrentemente, y así los primeros programas BASIC corrieron en modo de procesamiento por lotes como parte del proceso de desarrollo durante principios de 1964. Sin embargo, el 1 de mayo de 1964 a las 4 a. m., John Kemeny y John McGeachie corrieron los primeros programas BASIC ejecutados exitosamente en terminales por el sistema de DTSS.[1]
Estos programas corrían, desde 1964 hasta 1967, en dos ordenadores, un GE-235 para ejecutar programas (como los escritos en BASIC) y un GE DN-30 (Datanet-30) para manejar las comunicaciones (hacia y desde los teletipos) y para programar la ejecución de programas en el GE-235. Este ingenioso diseño usando dos equipos fue ideado por Tom Kurtz y John Kemeny.[1]
No está totalmente claro cuáles fueron los primeros programas. Sin embargo, los programas o consistieron en la simple línea:
- PRINT 2 + 2
o eran implementaciones de la criba de Eratóstenes, según una entrevista de 1974 en la cual Kemeny y McGeachie participaron.
La segunda versión del BASIC solamente tuvo cambios mínimos, agregando al operador punto y coma a la sentencia PRINT y el subíndice cero a las matrices.
Para la tercera versión, la sentencia de INPUT fue introducida junto con las poderosas sentencias MAT para la manipulación de matrices y la sentencia del RESTORE para el uso con READ/DATA. El desarrollo continuó con la introducción de la manipulación y variables de texto, también conocidas como variables de string, para la versión 4, y un verdadero manejo de archivos en la versión 5. La versión 6 vio la introducción de procedimientos con parámetros, compilables separadamente; ésta es la versión de la cual la mayoría de los dialectos posteriores del BASIC descienden. En 1976, Steve Garland agregó características de programación estructurada para crear el Dartmouth SBASIC, un precompilador que producía como salida la versión 6 de BASIC (y que formó la base del ANSI BASIC). En 1979 Kemeny y Kurtz lanzaron, un compilador ANSI BASIC, como la séptima y final versión en Dartmouth, antes de salir de la universidad para concentrar el desarrollo posterior del ANSI BASIC bajo la forma de True BASIC.
Las primeras versiones de BASIC fueron usadas y probadas por otros estudiantes de Dartmouth trabajando en los laboratorios de psicología de la universidad a principios de 1964. [citación necesaria] Los departamentos compartieron varias máquinas de tarjeta perforada de IBM que fueron usadas para correr programas de análisis estadístico por lotes.
Los estudiantes trabajando en concesiones del NSF en ambos departamentos vivieron en la misma granja rural de New Hampshire durante el verano de 1964.[cita requerida] Ellos a menudo se reunían para compartir ideas. Una contribución notable de estas sesiones de última hora fue la sentencia GOTO. Las primeras versiones impresas del manual de usuario fueron copiadas con Mimeógrafo (con la impresión típicamente en púrpura de las máquinas Ditto de la era) y una cubierta rosada.
El Dr. Kemeny, inmigrante de Hungría y presidente del departamento de matemáticas en ese entonces, eventualmente fue a servir con gran distinción como presidente de la universidad. Mr. McGeachie, no graduado en ese tiempo, era llamado "Geach" por sus amigos y compañeros de estudio.
El BASIC de Dartmouth es más conocido por dar a la programación de computadoras un rostro humano y hacerla accesible a todo el mundo.
Interfaz de usuario
El DTSS implementó un temprano entorno de desarrollo integrado (IDE): una interfaz de línea de comandos interactiva. No había necesidad de logout. Si los usuarios no respondían, eran loged out después de un corto retardo.
Cualquier línea mecanografiada por el usuario, y que comenzaba por un número de línea, era añadida al programa, reemplazando cualquier línea previamente almacenada en el mismo número; todo lo demás fue asumido que era un comando del DTSS y era ejecutado inmediatamente. Las líneas que solo consistían en un número de línea no eran almacenadas sino que removían cualquier línea previamente almacenada con el mismo número. Este método de editar era necesario debido al uso de los teleimpresoras de teletipo, como las unidades de terminales del Dartmouth timesharing system.
Lista de comandos
HELLO
— log in en el DTSSBASIC
— iniciar el modo BASICNEW
— nombrar y comenzar a escribir un programaOLD
— recuperar un previamente nombrado programa desde el almacenamiento permanenteLIST
— exhibe el programa actualSAVE
— guarda el programa actual en el almacenamiento permanenteUNSAVE
— elimina el programa actual del almacenamiento permanenteCATALOG
— exhibe los nombres de los programas que están en el almacenamiento permanenteSCRATCH
— borra el programa actual sin eliminar su nombreRENAME
— cambia el nombre del programa actual sin borrarloRUN
— ejecuta elprograma actualSTOP
— interrumpe al programa actualmente corriendo
Los usuarios frecuentemente creían que los comandos eran parte del lenguaje BASIC, pero, de hecho, eran parte del sistema de tiempo compartido y también eran usados cuando se preparaban programas en ALGOL o FORTRAN vía los terminales del DTSS.
Palabras clave
La primera versión interactiva implementó los siguientes tipos de sentencias, tomando algunos de sus operadores y palabras clave del FORTRAN II y algunos de ALGOL 60.
Lista de sentencias del BASIC
DEF
— define funciones de una sola líneaDIM
— define el tamaño de los arreglosEND
— define el final del programaSTOP
— detiene un programa antes del finalFOR / TO / STEP
— define los buclesNEXT
— marca el final de los buclesGOSUB
— transfiere control a subrutinas simplesRETURN
— retorna el control desde subrutinas simplesGOTO
— transfiere el control a otra sentenciaIF / THEN
— toma de decisionesLET / =
— asigna los resultados de las fórmulas a una variablePRINT
— salida de resultadosDATA
— almacena datos estáticos dentro del programaREAD
— entrada de datos almacenados en sentencias DATAREM
— comentario
También implementó variables numéricas y aritmética de punto flotante. Los nombres de variables fueron limitados de A a Z, A0 a A9, B0 a B9, ... , Z0 a Z9, dando un máximo de 286 distintas variables posibles. Los nombres de matrices estaban restringidos a solamente de A a Z. Las matrices no necesitaban ser definidas, pero en ausencia de una declaración DIM tenían por defecto 10 elementos, a los que se accedía con un índice desde 1 a 10.
Lista de operadores
Operadores aritméticos | Operadores relacionales/lógicos | ||
- | Negación (op. unario) | = | Igual a |
+ | Adición | <> | No igual a |
- | Sustracción (op. binario) | < | Menor que |
* | Multiplicación | <= | Menor o igual a |
/ | División | > | Mayor que |
^ | Exponenciación | >= | Mayor o igual a |
Operadores de agrupamiento | |||
( ) | Agrupamiento |
Lista de funciones
ABS
-- Valor absolutoINT
-- Parte entera de un número
RND
-- número real al azar entre 0 y 1
SIN
-- Seno (argumento en radianes)COS
-- Coseno (argumento en radianes)TAN
-- Tangente (argumento en radianes)ATN
-- Arco tangente (resultado en radianes)
EXP
-- Exponencial (ex)LOG
-- Logaritmo naturalSQR
-- raíz cuadrada
Referencias
- Dartmouth Time Sharing System (DTSS) timeline (archived 2007)
- Kemeny, John G. (1985). Back to Basic: The History, Corruption and Future of the Language. Addison-Wesley Longman Inc. ISBN 0-201-13433-0.
- BASIC version 2 manual. Dartmouth College Computation center, 1964. (PDF)
- BASIC version 4 manual. Dartmouth College Computation center, 1968. (PDF)
- Kurtz, Thomas E. (Date unknown but probably 1977). BASIC (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).