stringtranslate.com

Dartmouth BÁSICO

Dartmouth BASIC es la versión original del lenguaje de programación BASIC . Fue diseñado por dos profesores del Dartmouth College , John G. Kemeny y Thomas E. Kurtz . Con el Dartmouth Time Sharing System (DTSS) subyacente, ofrecía un entorno de programación interactivo para todos los estudiantes universitarios, así como para la comunidad universitaria en general.

Se produjeron varias versiones en Dartmouth, implementadas por estudiantes universitarios y funcionando como un sistema de compilación y funcionamiento . La primera versión se publicó el 1 de mayo de 1964 y se abrió a los usuarios generales en junio. Siguieron actualizaciones que culminaron con la séptima y última versión en 1979. Dartmouth también introdujo una versión dramáticamente actualizada conocida como Structured BASIC (o SBASIC ) en 1975, que agregó varios conceptos de programación estructurada . SBASIC formó la base de los esfuerzos del estándar ANSI Standard BASIC a principios de la década de 1980.

La mayoría de los dialectos de BASIC remontan su historia a la Cuarta Edición (que agregó, por ejemplo, variables de cadena, que la mayoría de los usuarios de BASIC dan por sentado, aunque el original podía imprimir cadenas), pero generalmente omiten características más esotéricas como las matemáticas matriciales. A diferencia de los compiladores de Dartmouth, la mayoría de los demás BASIC se escribieron como intérpretes . Esta decisión les permitió ejecutarse en la memoria principal limitada de las primeras microcomputadoras . Microsoft BASIC es un ejemplo, diseñado para ejecutarse en sólo 4 KB de memoria. A principios de la década de 1980, decenas de millones de ordenadores domésticos ejecutaban alguna variante del intérprete de MS. Se convirtió en el estándar de facto para BASIC, lo que llevó al abandono de los esfuerzos de ANSI SBASIC. Kemeny y Kurtz formaron más tarde una empresa para desarrollar y promover una versión de SBASIC conocida como True BASIC .

Muchos de los primeros juegos de mainframe tienen su historia en Dartmouth BASIC y el sistema DTSS. Una selección de estos se recopiló, en versiones HP Time-Shared BASIC , en el libro de People's Computer Company What to Do After You Hit Return . [1] Muchas de las listas de fuentes originales en BASIC Computer Games y trabajos relacionados también remontan su historia a Dartmouth BASIC.

Historia del desarrollo

Trabajo anterior

John G. Kemeny se unió al departamento de matemáticas de Dartmouth College en 1953 y más tarde se convirtió en su presidente de departamento. En 1956 obtuvo acceso a un IBM 704 a través de los esfuerzos del Centro Regional de Computación de Nueva Inglaterra del MIT . Ese año escribió el lenguaje DARSIMCO , una versión de ensamblador que simplificaba la programación de operaciones matemáticas. Lo ayudó Thomas E. Kurtz , quien se unió al departamento ese año. [2]

DARSIMCO quedó olvidado cuando se instaló el primer compilador de FORTRAN en la máquina en 1957. La llegada de FORTRAN dejó una lección importante. Kurtz, después de haber sido adoctrinado en que FORTRAN era lento, pasó varios meses escribiendo un programa en ensamblador 704 que había requerido aproximadamente una hora de tiempo de CPU para depurarlo y todavía no se estaba ejecutando. Dándose por vencido, lo reescribió en FORTRAN y lo puso en funcionamiento en cinco minutos. La lección fue que los lenguajes de alto nivel podían ahorrar tiempo, independientemente de su desempeño medido. [2]

En 1959, la escuela recibió su primera computadora, la LGP-30 con batería . Un estudiante escribió un lenguaje inspirado en FORTRAN llamado DART para la máquina. Esto llevó a un esfuerzo por producir un compilador ALGOL 58, pasando a ALGOL 60 cuando se finalizó esa definición. Escribir el compilador fue difícil debido al tamaño muy pequeño de la memoria, 32 KB en términos modernos, y era extremadamente lento, basándose en la velocidad del tambor de 3600 rpm. Sin embargo, pudieron producir una versión funcional reducida conocida como ALGOL 30 . [3] Un mayor desarrollo produjo SCALP, el "Procesador Algol autónomo", un compilador de un solo paso que estaba listo para ejecutar el programa compilado tan pronto como la cinta perforada terminara de leer en la fuente. Inmediatamente aparecerían los resultados del programa o cualquier mensaje de error. Este estilo de operación de compilar y listo sería utilizado más tarde por BASIC. [3] [4]

En 1962, Kemeny y el estudiante de secundaria Sidney Marshall [5] comenzaron a experimentar con un nuevo lenguaje, DOPE (Dartmouth Oversimplified Programming Experiment) . Este usaba líneas numeradas para representar instrucciones, por ejemplo, para sumar dos números, DOPE usó:

5 + ABC

Lo que significaba "en la línea 5, realizar una suma de los valores de las variables A y B y poner el resultado en C". Aunque su diseño es algo críptico, se puede ver la base del futuro lenguaje BASIC. [6] Además de las operaciones matemáticas básicas, el lenguaje incluía SQR, EXP, LOG, SIN y una construcción de ramificación simple. [7]

Computación en artes liberales

Kemeny y Kurtz coincidieron en la necesidad de alfabetizar en programación entre los estudiantes fuera de los campos tradicionales STEM ; Sólo el 25% de los estudiantes de Dartmouth tomaron cursos relacionados con STEM, pero se utilizó algún nivel de matemáticas en casi todos los campos. Además, a medida que las computadoras adquirieron mayor importancia en la sociedad, se preguntaron: "¿Cómo pueden tomar decisiones sensatas sobre la informática y su uso personas esencialmente ignorantes de ella?" [7]

Kemeny señaló más tarde que "nuestra visión era que todos los estudiantes del campus tuvieran acceso a una computadora, y que cualquier miembro del cuerpo docente debería poder usar una computadora en el aula cuando fuera apropiado. Era tan simple como eso". [8] Pero hacerlo sería en gran medida imposible dado con qué tenían que trabajar; el tiempo de respuesta en una ejecución típica de SCALP fue de aproximadamente 15 minutos, y los lenguajes eran demasiado difíciles de usar para tareas básicas para usuarios que no eran usuarios de STEM. [7]

El problema no era simplemente la complejidad, sino todo el concepto del procesamiento por lotes . Los estudiantes prepararían sus programas en tarjetas perforadas o cinta de papel, los enviarían a los operadores de computadora y luego, en algún momento futuro, recibirían su resultado. Esto a menudo revelaría un error que requería repetir todo el proceso. Como dijeron más tarde: "Si se necesita alrededor de 1 día para un intento, el estudiante perderá el interés o olvidará cuáles fueron los problemas. En el mejor de los casos, perderá el tiempo esperando a que aparezcan los resultados del día. " [9] [un]

En 1959, debido en gran parte a la reputación de Kemeny como innovador en la enseñanza de matemáticas, el departamento ganó un premio de la Fundación Alfred P. Sloan por 500.000 dólares para construir un nuevo edificio del departamento. [10]

Desarrollando el concepto

Durante una visita al MIT en 1961, conocieron el PDP-1 y su sistema operativo experimental de tiempo compartido recientemente completado . John McCarthy preguntó a Kurtz por qué no compartían el tiempo en sus esfuerzos por llevar la informática a las masas. Kurtz regresó a Dartmouth y le dijo a Kemeny "deberíamos compartir el tiempo", a lo que Kemeny respondió inmediatamente "OK". [11]

En un experimento para probar si el concepto era viable, los estudiantes se dividieron en grupos de cinco y se les dio turnos en el LGP-30 usando SCALP. [4] El tiempo de computadora se dividió en sesiones de 15 minutos y a cada grupo de cinco se le dio una sesión y luego se la entregó al siguiente grupo. Se descubrió que los estudiantes generalmente podían completar sus programas en dos o tres "turnovers" durante una sola sesión. Esto sugería claramente que un sistema interactivo permitiría a cientos de usuarios utilizar con éxito una sola máquina. [12]

La llegada del teleimpresor Teletype Modelo 33 que utilizaba el recién introducido ASCII a través de líneas telefónicas resolvió el problema de acceso; Los programadores ya no tendrían que enviar los programas en tarjetas o cintas de papel, ahora usarían el Modelo 33 para escribir directamente en la computadora. Todo lo que se necesitaba era una nueva máquina que fuera lo suficientemente rápida para albergar un sistema de tiempo compartido y un lenguaje sencillo para que lo usaran los programadores. [13]

Cuando el tema del lenguaje simple comenzó a considerarse seriamente, Kemeny inmediatamente sugirió escribir uno nuevo. Kurtz estaba más interesado en una versión reducida de FORTRAN o ALGOL. [14] Pero estos lenguajes tenían tantas idiosincrasias que Kurtz llegó a estar de acuerdo con Kemeny:

Si hubiéramos corregido las feas características de FORTRAN, ya no tendríamos FORTRAN. De mala gana tuve que estar de acuerdo con John en que sí, se necesitaba un nuevo lenguaje. [15]

Con el tiempo, surgieron cuatro elementos clave; el sistema utilizaría el tiempo compartido, se necesitaría un nuevo lenguaje, para que los usuarios ingresaran al sistema, nuevos cursos introducirían la programación como complemento de otras materias y, finalmente, las terminales estarían abiertas a todos los usuarios. [dieciséis]

Versión inicial

El proyecto comenzó oficialmente en septiembre de 1963. El objetivo era desarrollar el lenguaje y el sistema operativo en una computadora disponible en el mercado. [17] A principios de 1964, se acercaron a la Fundación Nacional de Ciencias (NSF) en busca de financiación. La NSF envió las propuestas, una para el sistema de tiempo compartido y otra para el idioma, para revisión por pares. Las revisiones sugirieron invariablemente que no entendían la dificultad de lo que estaban intentando. A pesar de estos comentarios negativos, la NSF siguió adelante con ambas subvenciones. Los descuentos educativos disponibles de General Electric llevaron a la compra de una computadora GE-225 , en una era en la que no "convertirse en IBM" todavía estaba lleno de peligros. [18]

El GE-225 se combinó con la máquina DATANET-30 (DN-30), mucho más simple, y un disco duro conectado a ambas máquinas para compartir programas. [19] El DN-30 carecía de documentación de programación en ese momento, ya que nunca estuvo previsto que saliera de fábrica sin un programa ya instalado. [18] Incluía una característica clave, el acceso directo a memoria (DMA) a las máquinas GE más grandes. Esto significaba que pequeños mensajes podían pasarse rápidamente entre las máquinas, permitiendo que los comandos escritos por el usuario fueran ejecutados inmediatamente por el 225. [20]

El sistema funcionaría haciendo que el DN-30 ejecutara los terminales y guardara el trabajo del usuario en el disco. Cuando el usuario escribía RUN, el DN-30 usaría DMA para enviar ese comando al GE-225. El 225 leería ese archivo, lo compilaría, lo ejecutaría y devolvería los resultados al DN-30, que imprimiría la salida en el terminal. [21]

En el verano de 1963, a la espera de la compra de la computadora, GE proporcionó acceso a uno de sus GE-225. Kemeny comenzó a trabajar en un compilador prototipo. Los estudiantes Michael Busch y John McGeachie comenzaron a trabajar en el diseño del sistema operativo ese otoño. Tanto el lenguaje como el sistema operativo se modificaron ampliamente durante este período, aunque los objetivos básicos siguieron siendo los mismos y se publicaron en forma de borrador en noviembre. [19]

La máquina de la escuela llegó la última semana de febrero de 1964, [22] estaba operativa a mediados de marzo, [23] y se entregó oficialmente el 1 de abril. En ese momento, el diseño del sistema operativo ya estaba bien desarrollado. La mayoría de los estudiantes de programación que trabajaban en el sistema operativo lo hacían 50 horas a la semana, además de su carga académica normal. [22] El lenguaje se desarrolló en paralelo con tiempo prestado en otra máquina 225. [24] El sistema operativo se completó en abril y todo el sistema que se ejecuta en tres terminales Modelo 33 estuvo listo a finales de mes. John Kemeny y John McGeachie ejecutaron el primer programa BASIC el 1 de mayo de 1964 a las 4 am ET . [23]

No está del todo claro cuáles fueron los primeros programas. Muchas fuentes, incluido Dartmouth, afirman que se trataba de este sencillo programa: [25]

IMPRIMIR 2 + 2

Una historia posterior del lenguaje afirma que se teclearon dos programas al mismo tiempo, uno por Kemeny y otro por otro programador anónimo. Escribieron sus programas, escribieron RUNal mismo tiempo y recibieron los resultados correctos. [26] Kurtz era un madrugador y ya se había ido a casa y "se perdió toda la diversión". [27]

Durante el mes siguiente, el sistema fue probado mediante programas de prueba de clase de análisis numérico en el sistema. Durante este período, la máquina permaneció funcionando correctamente durante un promedio de cinco minutos. [28] Los problemas se resolvieron rápidamente y en junio se decidió aumentar el número de terminales a once. Fue por esta época cuando un GE-235 más rápido reemplazó al 225. Para el otoño, 20 terminales estaban en uso. [19]

GE comenzó a referirse a la combinación de GE-235 y DN-30 como GE-265, [29] sumando sus números de modelo. GE construyó alrededor de 75 ejemplares adicionales del GE-265, [30] muchos de ellos para su negocio de oficina de servicios . GE se refirió a estos como sus sistemas de tiempo compartido Mark I. [31]

Nuevo sistema

Uno de los objetivos originales del programa era integrar la programación en otros cursos. Esto fue un éxito, pero ejerció una presión considerable sobre el sistema y quedó claro que no tenía espacio para crecimiento futuro. [32]

En 1965, el equipo se acercó a GE en busca de apoyo para el desarrollo continuo. En septiembre, el vicepresidente Louis Rader ofreció el nuevo GE-635 , que funcionaba aproximadamente 10 veces más rápido e incluía dos CPU. Además, se añadiría un segundo DN-30 para atender más líneas, suficiente para 150 usuarios simultáneos. [32] Para albergarlo, se necesitarían instalaciones más grandes que el sótano de College Hall donde funcionaba el 265. Peter Kiewit, promoción del 22, junto con el apoyo adicional de la NSF, llevaron a la construcción del Centro de Computación Kiewit, que se inauguró en diciembre de 1966. [32]

Mientras se esperaba que llegara esta máquina, en el verano y otoño de 1966 se utilizó un GE-635 en el Centro de Desarrollo Aéreo de Roma para desarrollar MOLDS, el "Sistema de depuración en línea para múltiples usuarios". El GE-635 estaba operativo a principios de 1967 y, utilizando MOLDS, el nuevo sistema operativo estaba completamente funcional en septiembre, momento en el que se vendió el GE-265. [33]

GE proporcionó la máquina de forma gratuita durante tres años como parte de un acuerdo más amplio según el cual Dartmouth desarrollaría nuevas versiones de BASIC mientras GE la usaba para desarrollar una nueva versión de su sistema operativo. [33] Esta colaboración resultó ser un éxito; GE comenzó a implementar estas máquinas como sus sistemas de tiempo compartido Mark II, [34] y al final de la década eran uno de los proveedores de tiempo compartido más grandes del mundo. [32]

Cuando este sistema "Fase I" entró en funcionamiento, el equipo de Dartmouth comenzó a desarrollar la "Fase II", el sistema operativo ideal. Este se instaló en marzo de 1969 y poco después cambió su nombre a Dartmouth Time Sharing System . Cuando terminó el período de tres años, GE regaló la máquina a la universidad. Aunque los dos equipos permanecieron en contacto y se hicieron varios intentos de buena fe para continuar la relación, se produjo poca colaboración y la asociación terminó oficialmente el 20 de septiembre de 1972. [33]

Base de usuarios en expansión

Una revisión realizada en 1968 señaló que el 80% de los estudiantes y el 70% del profesorado hacían algún uso del sistema. Cientos de terminales estaban repartidas por todo el campus, desde el hospital hasta la escuela de negocios. El 57% del tiempo de CPU se utilizó para trabajos de curso, el 16% para investigación y el 27% restante para "uso recreativo"; Dartmouth animó activamente a los usuarios a jugar como una forma de practicar el uso y superar el miedo a la computadora. [35]

A partir de otra subvención de la NSF, en 1967 Dartmouth también comenzó a colocar terminales en ubicaciones fuera del campus, incluidas las escuelas secundarias de la zona. En términos de número de usuarios, estos terminales albergaron el 69% del total de usuarios, aunque utilizaron menos tiempo de ordenador. [35] En 1971 había 79 terminales remotas, tan lejos como Nueva Jersey y Bangor, Maine . Estos estaban respaldados por sistemas multiplexores que permitían soportar hasta 12 terminales a través de una única línea telefónica de calidad de voz. Además, varias de estas líneas estaban disponibles para uso telefónico con un módem . [36]

Influencia

El tiempo compartido fue un área importante de investigación en la década de 1960, y muchos en la industria informática predijeron que la potencia informática sería barata y generalizada. John McCarthy afirmó esto de manera muy famosa: "algún día la informática podrá organizarse como un servicio público, del mismo modo que el sistema telefónico es un servicio público". [37]

Si bien otros idiomas estaban disponibles en DTSS, en 1972 el 98% de sus programas estaban escritos en BÁSICO. [38] Con BASIC, los servicios informáticos se volvieron mucho más accesibles para los usuarios finales cuyas tareas tardarían demasiado en codificarse para que fueran adecuadas para resolverlas en una computadora. Esto llevó a que varios fabricantes introdujeran ordenadores diseñados específicamente para este mercado de usuarios que querían resolver tareas de pequeña o mediana escala y no estaban tan preocupados por el rendimiento absoluto. En particular, dos máquinas destinadas directamente a este mercado se convirtieron en "los pequeños sistemas de tiempo compartido más utilizados jamás desarrollados". [34]

El HP 2000 ejecutaba HP Time-Shared BASIC , una combinación de BASIC y sistema operativo de tiempo compartido casi idéntica a la configuración DTSS. El sistema admitía hasta 32 usuarios simultáneos, utilizando una CPU HP 2100 de gama baja para ejecutar los terminales de la misma manera que el Datanet-30 de la configuración GE-265 original, mientras que los programas se ejecutaban en un modelo de gama alta del misma máquina, que normalmente se diferenciaba en que tenía más memoria central . BASIC de HP utilizó un formato tokenizado semicompilado para almacenar programas, lo que mejoró los tiempos de carga y significó que las "compilaciones" fueran en tiempo cero. [39]

Digital Equipment Corporation adoptó un enfoque diferente, utilizando una oferta de máquina única basada en su línea PDP-11 existente con el nuevo sistema operativo RSTS/E y BASIC-PLUS . BASIC-PLUS siguió más de cerca la Quinta Edición, incluidos los MATcomandos, pero se implementó como un intérprete puro a diferencia del compilador Dartmouth o el formato tokenizado de HP. También incluía una serie de estructuras de control siguiendo el modelo JOSS , como . [40] Tymshare SUPER BASIC también admitía estructuras de estilo JOSS y matemáticas matriciales, pero conservaba la operación original de compilación y listo.PRINT I IF I > 10

Prácticamente todos los proveedores de la época ofrecieron alguna solución a este mismo problema, aunque es posible que no fueran tan similares al original. Cuando Kurtz comenzó a considerar la formación de un estándar ANSI para BASIC en 1973, descubrió que la cantidad de oficinas de servicios de tiempo compartido con BASIC disponibles era mayor que cualquier otro idioma. Desafortunadamente, este éxito también fue un problema; En ese momento, había tantas variaciones que un estándar parecía imposible. [34]

Juegos en BÁSICO

Kemeny fomentó activamente los juegos en la plataforma DTSS y lo consideró una de las principales razones del éxito del sistema DTSS. [38] Probablemente fue el autor de uno de los primeros juegos para mainframe . Aunque Kemeny no se atribuyó el mérito, más tarde se refirió a FTBALL afirmando que "fue escrito el domingo después de cierto partido entre Dartmouth y Princeton en 1965, cuando Dartmouth ganó el trofeo Lambert . Es una especie de programa conmemorativo". El juego fue una sorpresa para Princeton, el gran favorito. [41] [b]

A medida que el sistema se expandió, especialmente después de agregar el manejo de cadenas en BASIC, el sistema DTSS se convirtió en una plataforma importante para el desarrollo de muchos juegos basados ​​en texto . A principios de la década de 1970, People's Computer Company comenzó a publicarlos en su revista, generalmente convertida al HP BASIC, más disponible. Muchas de estas listas se recopilaron en su libro de 1975, Qué hacer después de presionar regresar . Aunque se publican en formato HP BASIC, la mayoría de ellos tienen su historia en DTSS o en el Lawrence Hall of Science de California, donde se instaló una máquina similar, conocida como DECISION. [43]

Una colección más famosa es BASIC Computer Games de 1978, donde aproximadamente la mitad de los programas del libro fueron escritos en Dartmouth, incluido otro por Kemeny, Batnum o, más comúnmente, una de las muchas escuelas secundarias que estuvieron conectadas a ella después de 1968. Una escuela secundaria particularmente prolífica fue la Lexington High School en Massachusetts , pero también aparecen muchas otras escuelas. Varios de los programas no enumeran sus ubicaciones originales, pero provienen de autores que probablemente estaban conectados al sistema a través de una escuela o proyectos públicos como Project SOLO. [44]

Los videojuegos multijugador se hicieron posibles en BASIC cuando Stephen Garland y John McGeachie desarrollaron la interfaz de terminal en línea múltiple MOTIF para DTSS. Para iniciar un juego, un usuario escribía ENLACE seguido del nombre de una sesión en lugar de EJECUTAR, lo que permitía a otros usuarios conectarse al juego escribiendo UNIRSE seguido del nombre de la sesión. Luego, MOTIF multiplexó la entrada y salida para el programa BASIC, anteponiendo un identificador de cadena al comienzo de cada línea de entrada y salida. Los primeros programas desarrollados con esta interfaz fueron una versión de FTBALL para dos personas y un juego de póquer para cinco personas. Más serio fue un juego de gestión que permitía a hasta diez estudiantes de la Escuela de Administración de Empresas Amos Tuck competir en la producción y comercialización de un solo producto. [45]

Versiones

Primera edición

La versión original, conocida retroactivamente como versión uno, admitía los comandos LET, PRINT, END, FOR...NEXT, GOTO, GOSUB...RETURN, IF...THEN, DEF, READ, y DATA. Incluía instrucciones matemáticas básicas, , y , así como la flecha hacia arriba para los exponentes "... ya que en una máquina de escribir teletipo es imposible imprimir superíndices". [46] En las variedades modernas, la flecha hacia arriba normalmente se reemplaza por el carácter "sombrero" . Los exponentes tomaban el valor absoluto del número antes del cálculo, por lo que para calcular había que utilizar . Hubo otro problema en la función exponente que trataba en contraposición al orden correcto de las operaciones , que no se corrigió hasta la tercera versión. [46] La función siempre se trunca hacia cero. [47]DIMREM+-*/^-X^3X*X*X-X^2(-X)^2 -(X^2)INT()

El idioma tenía una serie de idiosincrasias propias. A diferencia de versiones posteriores, el LETcomando era requerido en todas las declaraciones que carecían de otro comando, por lo que no era válido en esta versión. [47] La ​​declaración utilizó la coma al imprimir múltiples variables, avanzando a la siguiente de cinco "zonas". La coma no era necesaria en el caso de que se imprimiera un valor único y rápido, por lo que era válida. Una característica un tanto oculta era que todas las variables eran capaces de representar matrices (vectores) de hasta diez elementos (subíndices del 1 al 10, cambiados del 0 al 9 en la segunda edición) sin ser declarados de esa manera usando . solo era necesario si se requería un tamaño de vector diferente. [48] ​​[c]10 A=5*5PRINTPRINT "value of A is "ADIMDIM

Los nombres de las variables se limitaron a una sola letra o una letra seguida de un dígito (286 nombres de variables posibles). Las funciones de usuario solo pueden tener una sola letra, por lo tanto FNAa través de FNZ. Todas las operaciones se realizaron en punto flotante . En el GE-225 y GE-235, esto produjo una precisión de aproximadamente 30 bits (aproximadamente diez dígitos) con un rango de exponente de base 2 de -256 a +255. [49]

Además, debido a que el tamaño de palabra del GE-235 es de 20 bits y utiliza un código de caracteres de seis bits , el lenguaje consagró el uso de nombres de funciones de tres letras porque eso permitía el almacenamiento de tres caracteres de seis bits en un código de 20 bits. palabra (usando 18 bits). Es por esto que las funciones BASIC son tres letras, como INTo SQR, algo que permaneció en las muchas variedades del lenguaje mucho después de que abandonaran el GE-235. [47]

Segunda edición, CARDBASIC

La Segunda Edición de BASIC (aunque no se la mencionaba como tal en ese momento) solo realizó cambios mínimos. Lanzado en octubre de 1964, podía iniciar matrices en el subíndice 0 en lugar de 1 (útil para representar polinomios ) y agregaba el punto y coma, a la declaración. [50] A diferencia de implementaciones posteriores donde esto dejaba espacio entre elementos, el punto y coma avanzaba la impresión al siguiente múltiplo de tres caracteres, lo que era útil para "empaquetar" más números en una línea de salida que el separador de coma existente. [51] El tamaño de tres caracteres fue un efecto secundario del tamaño de palabra de 20 bits del GE-235 , que almacenaba tres caracteres de seis bits. Saltar a la siguiente columna de tres caracteres se lograba simplemente pasando a la siguiente palabra en la memoria. [52];PRINT

La versión de octubre también incluyó una definición separada para CARDBASIC, que era simplemente una versión de BASIC para usar en flujos de trabajo basados ​​en tarjetas. CARDBASIC era casi idéntico a la versión interactiva, con la excepción de que no incluía matrices de base cero. Más importante para el futuro del lenguaje, CARDBASIC agregó los MATcomandos que funcionaban con matrices numéricas. CARDBASIC no se desarrolló más, ya que toda la idea de BASIC era ser interactivo. [50]

Tercera edicion

La Tercera Edición, lanzada en 1966 y la primera en utilizar el nombre "edición", fue la primera diseñada específicamente con la intención de ejecutarse en la nueva computadora GE-635 que llegaría en breve. Esta versión incluye las MATfunciones de CARDBASIC y ahora pueden usar 0 como subíndice. [53]

La nueva SGNfunción dio el signo de su argumento (¿positivo?0 y negativo?1), mientras que RESTOREse agregó para "rebobinar" la posición de READ/DATA. El problema de exponenciación se solucionó, por lo que -X^2se interpretaría como -(X^2). [53] Además, la INTfunción se cambió para que fuera un piso verdadero, en lugar de recortar hacia cero, lo que permitió implementar el redondeo con INT(X+0.5). [47]

El cambio principal en esta versión fue la nueva INPUTdeclaración, que analizaba valores numéricos, haciendo que el lenguaje fuera verdaderamente interactivo durante la ejecución por primera vez; Anteriormente, el único control que se tenía durante la ejecución era escribir STOPen el monitor. Además, el sistema ahora permitía y fomentaba la sangría de los bucles, una característica que no se veía en la mayoría de las otras versiones de BASIC. [54]

Cuarta edición

La Tercera Edición permaneció en uso durante toda la vida útil del GE-235 hasta el otoño de 1967. Sin embargo, cuando se hicieron planes para recibir el GE-635, se creó una versión experimental en el 635 en la primavera de 1967. Esta versión fue una asociación entre GE y Dartmouth, con GE contribuyendo con un nuevo sistema operativo, así como una serie de características de BASIC de sus propios esfuerzos Mark 1 BASIC. [54]

Esta versión, publicada inicialmente como suplemento de la tercera edición, agregó el RANDOMIZEcomando para "iniciar" la RNDfunción y el ON...GOTO"goto calculado" que coincidía estrechamente con una característica similar en FORTRAN. Esta versión también lo permitía ON...THEN, argumentando que IF...THENno lo requería, GOTOentonces no sería requerido aquí. La nueva TABfunción movió la impresión a una columna determinada, de 0 a 74. [54] Otro cambio interno fue cambiar nuevamente la función MATpara que esté basada en 1; se podría usar el índice 0, pero normalmente los distintos comandos lo ignorarían. [55]

La principal adición para esta versión fueron las variables de cadena, junto con cambios en las READ/DATAdeclaraciones que podían almacenar cadenas en ellas y la INPUTdeclaración para leerlas de forma interactiva. Una característica del sistema de cadenas era que los espacios finales se ignoraban deliberadamente en las comparaciones, de modo que "SÍ" y "SÍ" se consideraban iguales. [56] Más tarde se comprendió que esto era un grave error. [55] Las variables de cadena se indicaban con el signo de dólar, por ejemplo A$, simplemente porque se estaban quedando sin caracteres que se podían encontrar en la mayoría de los teclados. Alguien señaló que el $ se parecía a la S de "String", y eso fue todo. [57]

La manipulación de cadenas se manejó mediante el nuevo CHANGEcomando. Esto convirtió el valor de cadena en una variable al conjunto equivalente de valores ASCII. Luego, la matriz numérica podría manipularse y convertirse nuevamente en una cadena. Por ejemplo, este código produce "es" en la consola:

100 LET S$ = "Ahora es el momento" 110 CAMBIAR S$ A S 120 LET T ( 1 ) = S ( 5 ) 130 LET T ( 2 ) = S ( 6 ) 140 LET T ( 0 ) = 2 150 CAMBIAR T A T$ 160 IMPRIMIR T$                         

La línea 140 establece la longitud de la cadena en 2, que debe ser administrada por el usuario. El primer carácter está en T(1). Si bien este sistema es flexible, de ninguna manera fue cómodo de usar. Las versiones posteriores abordarían esto con nuevas funciones. [58]

Los cambios menores en esta versión cambiaron el punto y coma en PRINTlas declaraciones para hacer un "empaquetado cerrado" de la salida sin espacios, [52] [59] y el uso del apóstrofo como forma abreviada REM. [60] [d]

La cuarta edición oficial no apareció hasta 1968, que añadió varias características nuevas además de las anteriores. Esto incluía la capacidad de definir funciones de varias líneas con el DEFcomando y la poderosa CHANGEdeclaración que trataba las cadenas como matrices de códigos tipo ASCII para que se pudieran operar con caracteres individuales sin recorrer toda la cadena. [55] Esta era también la única función de manipulación de cadenas; para extraer un solo carácter o subcadena, había que usar CHANGEpara convertirlo en una matriz de números, manipular esa matriz y luego convertirla nuevamente. Ésta fue la razón por la que MAT volvió a estar basado en 1; la longitud de la cadena se colocó en la ubicación cero y era necesario ignorarla normalmente. [61]

Quinta edición

La Quinta Edición, de finales de 1970, comenzó nuevamente como dos suplementos de la Cuarta Edición, de febrero y abril de 1969. [55]

El cambio más importante fue la introducción del manejo de archivos. Anteriormente, cualquier dato predefinido que tuviera que usarse en el programa debía colocarse en las líneas de DATOS y luego leerse uno a la vez usando el comando READ . Esta función podría usarse para leer archivos de manera similar. El comando INPUT ahora podía leer un solo elemento de un archivo e PRINT podía escribir uno. [62]

Los archivos se abrieron mediante la nueva FILESpalabra clave, seguida de una lista de constantes de cadena que describen los nombres de los archivos. Como se trataba de constantes, cambiar el nombre del archivo exigía cambiar el código para que coincidiera. A los nombres se les asignaron números, el primer nombre se convirtió en el archivo n.° 1, y así sucesivamente. Se admitieron dos formatos de archivo, acceso aleatorio y lineal. Un archivo lineal se trataba como lo sería un archivo de texto hoy en día: se podía LINPUT #1: A$leer una línea de texto en una variable de cadena y luego PRINT A$enviarla al terminal. [62] Las versiones posteriores agregaron FILE $1,name$para permitir que los archivos se especifiquen mediante cadenas, aunque durante un tiempo esto requirió un FILES *cerca de la parte superior del programa para indicar que estaba usando este formato. [63]

Para los archivos de acceso aleatorio, el nombre tenía que especificar el tipo de datos que contenía; %indicó que contenía datos binarios, mientras que $numindicó que debía leerse como cadenas con una longitud máxima de num. [62] LEER y ESCRIBIR se podían colocar en cualquier lugar de un archivo de acceso aleatorio con el comando RESET , mientras que la función LOC devolvía la ubicación actual y la longitud del archivo LOF . Durante las lecturas secuenciales, también se puede probar si estaba al final del archivo usando . [64]IF END THEN...

Otro cambio importante fue la capacidad de un programa BÁSICO de llamar a otro usando el comando CHAIN ​​y pasarle variables usando la lista COMÚN . Más tarde se descubrió que este concepto básico tenía varios problemas, pero aun así se utilizó para escribir algunos programas grandes. [64]

El manejo de cadenas recibió una actualización importante. El nuevo SEG$comando devolvió una nueva cadena recortada de otra. En el ejemplo anterior, la cadena "is" se extrae de una cadena más grande. Usando el nuevo comando, esto se puede reducir a , que funciona de manera similar a la función que se encuentra en la mayoría de los dialectos ( ). SEG$ utiliza el primer y último índice; MID$ utiliza el primer índice y la longitud. devolvía la longitud de una cadena, que ahora se manejaba internamente y no requería cálculo en la mayoría de los casos, y devolvía la posición de una cadena dentro de otra, que en la mayoría de los dialectos era manejada por . El signo comercial , se introdujo para la concatenación de cadenas . [58]LET T$ = SEG$(S$,5,6)MID$MID$(S$,5,2)LENPOSSUBSTR&

También se agregaron muchos cambios menores más. Entre ellos se encontraban matrices de cadenas bidimensionales, a diferencia de las unidimensionales de la versión anterior, así como la capacidad de usar DEF para definir funciones basadas en cadenas y matemáticas. Las nuevas funciones orientadas al sistema incluían CLK$ , DAT$ para trabajar con horas y fechas, TIM que devolvía el tiempo transcurrido y USR$ que devolvía el número de usuario, lo que hoy sería el nombre de usuario. Las nuevas funciones de cadena incluyen STR$ , VAL , ASC , que son comunes en los dialectos BASIC modernos. La forma abreviada de REM también apareció en esta versión. [64]'

Sexta edición

El trabajo en la sexta edición comenzó en el otoño de 1969 antes de que se finalizara la quinta edición. Se redactó de antemano una especificación completa para la nueva versión. Esto contrasta con versiones anteriores donde los documentos de especificación se basaban en los cambios en el compilador. Kemeny y Kurtz trabajaron en esta versión, así como varios ex alumnos que regresaron como profesores: Stephen Garland, John McGeachie y Robert Hargraves. Se le dio un tiempo considerable para madurar, con una versión beta funcionando durante tres meses durante el verano de 1971, antes de que finalmente fuera lanzado el 21 de septiembre de 1971. Como resultado de esta madurez, Kurtz lo describió como "probablemente el mejor diseñado y El sistema de software más estable que Dartmouth jamás haya escrito". [sesenta y cinco]

Uno de los mayores cambios fue la sustitución del CHAINconcepto anterior por uno mucho mejor definido CALLque funcionaba de forma similar a GOSUB, pero se refería a un nombre de función en lugar de un número de línea. Las funciones se definieron usando SUB...SUBENDy tomaron parámetros arbitrarios en la llamada en lugar de usar variables globales a través de COMMONdeclaraciones. Otro cambio importante fue el uso de identificadores de archivos (números) creados con el FILEcomando que es similar al OPENque se encuentra en la mayoría de los BASIC modernos. PRINT USINGproporcionó salida formateada de una manera algo similar a FORTRAN, [66] mientras que LINPUTaceptó entrada sin interpretación, permitiendo escribir comas, punto y coma e incluso código BÁSICO. [67]

La Sexta Edición fue esencialmente la última versión del concepto BASIC original. Se mantuvo sin cambios durante muchos años. Las versiones posteriores eran idiomas significativamente diferentes. [sesenta y cinco]

SBASICO

En 1976, Stephen Garland recopiló una serie de adiciones de programación estructurada para crear Dartmouth Structured BASIC o SBASIC. [68] El objetivo principal era reemplazar las estructuras de control basadas en IF...THENy GOTOcon una variedad de estructuras orientadas a bloques. Lo hizo utilizando un precompilador que tomó el código fuente de SBASIC, lo convirtió a la sexta edición de BASIC y luego lo compiló y ejecutó normalmente. SBASIC también agregó una serie de funciones gráficas, basadas en el PLOTcomando que habían agregado otros programadores. [69]

Las estructuras de bloques terminaban mediante declaraciones coincidentes como era el caso en ALGOL 68 , a diferencia de las estructuras de bloques genéricas que se encuentran en lenguajes como Pascal o C. Por ejemplo, DO WHILE...abarcó varias líneas hasta que terminó con un LOOP. [70] También se puede salir del DObucle desde abajo quitando WHILEo UNTILy colocando el condicional en la parte inferior de LOOP. Se admitieron bucles infinitos usando DO FOREVERo LOOP FOREVER. [71]

El Dartmouth BASIC "original" no permitía declaraciones después de un THEN, solo un número de línea al que pasar. SBASIC permitía cualquier declaración, por ejemplo . [72] Esta expansión básica del , iniciada en 1972 con BASIC-PLUS , [73] ya era ampliamente compatible con la mayoría de los BASIC en ese momento, incluidas las versiones para microcomputadoras que se estaban lanzando en ese momento. Además de esto, SBASIC agregó orientación a bloques colocando en una línea separada y luego terminando el bloque con . [74] Además de esto, SBASIC agregó el mecanismo que sobrevive hasta el día de hoy en Visual Basic .NET . [75]IF X < 5 THEN X=X+1IF...THENIFTHENCONTINUESELECT CASE

SBASIC también agregó una serie de comandos gráficos destinados a ser utilizados con trazadores . Esto requirió que PLOTTER "plottername"dirigiera los comandos posteriores a un dispositivo seleccionado y que WINDOW...configurara sus parámetros. A partir de entonces, PLOT X,Yproduciría puntos en el trazador seleccionado, mientras que agregar el punto y coma al final de la declaración, como se usa en PRINT, dejaría el lápiz sobre el papel y produciría una línea, por ejemplo PLOT 10,10;20,20. [76] [77]

SBASIC finalmente formó la base del Estándar ANSI X3.113-1987 de 1987 para Básico Completo , que amplió el Estándar ANSI X3.60-1978 anterior de 1978 para Básico Mínimo. El largo retraso en producir ese estándar, junto con la falta de consideración entre los científicos informáticos por el Básico no estructurado, llevó al comité del College Board que desarrolló el Curso de Colocación Avanzada en Ciencias de la Computación , que presidía Garland, a optar por exigir Pascal y no permitir el Básico como estándar. idioma para el curso. [78] [79]

Garland usó SBASIC para impartir el curso de introducción a la informática en Dartmouth, [80] [81] pero reescribió su libro de texto para el curso en Pascal [82] para que pudiera usarse para impartir el curso AP.

Séptima edición

SBASIC de Garland era un precompilador escrito en el propio código fuente de SBASIC. El sistema leería la fuente SBASIC, escribiría el código correspondiente de la sexta edición y luego compilaría esa salida. La séptima edición, lanzada en 1980, era una versión de SBASIC que era un compilador independiente. Agregó una serie de adiciones propias. La mayoría de los cambios fueron elaboraciones adicionales sobre el sistema para llamar a programas externos y "superposiciones" que podrían usarse para dividir un programa en partes. En esta versión, SUBlos usuarios que comparten un solo archivo comparten efectivamente datos entre ellos. Esto proporcionó un mínimo de datos ocultos dentro del grupo de rutinas. Esta separación hoy se conocería como módulo. [83]

Además, esta edición agregó manejo de errores estructurado y matemáticas matriciales arbitrarias en LETlas declaraciones, por lo que se podría LET A = M*4decir que M era una variable de matriz y la declaración generaría otra matriz en A con todos los elementos en M escalados en 4. Finalmente, otra actualización importante Fue el uso de registros de activación para subrutinas lo que hizo posible la recursividad . [83]

ANSI BÁSICO, octava edición

A principios de la década de 1970, el número de implementaciones de BASIC había aumentado a docenas, y todas ellas tenían sus propios cambios al concepto básico introducido en la versión original. La mayoría de ellos se basaron en la quinta edición, aunque a menudo carecían de instrucciones MAT y de la capacidad de sangrar el código. GE fue una de estas empresas; lanzaron sus sistemas Mark II con la quinta edición en lugar de esperar a que llegara la sexta unos meses después. [84] BASIC-PLUS en la plataforma DEC fue quizás la implementación más cercana, incluidos los comandos MAT, por ejemplo, pero luego agregó una serie de cambios que no eran compatibles con versiones anteriores. [40]

Después del lanzamiento de la sexta edición, Kurtz se involucró en un esfuerzo por definir un BASIC estándar. En enero de 1974 se formó un grupo de trabajo del Instituto Nacional Estadounidense de Estándares (ANSI), X3J2, y en septiembre de ese año se formó el correspondiente grupo de la Asociación Europea de Fabricantes de Computadoras (ECMA), TC21. El objetivo en aquel momento era producir dos normas relacionadas. El BASIC mínimo sería similar a la Segunda Edición, pero agregando cadenas, un estándar al que prácticamente todos los BASIC ya podrían ajustarse. El BASIC estándar agregaría más funcionalidades para producir algo más acorde con las variedades BASIC reales que se ven en el mercado. [84]

El proceso fue lento y el primer borrador de Minimal BASIC no se publicó hasta enero de 1976, lo que llevó a que fuera adoptado oficialmente en diciembre de 1977 por ECMA y en 1979 por ANSI como X3.60-1978. Minimal BASIC era similar a la tercera edición, incluidas variables de cadena, pero carecía de MAT y otras funciones avanzadas. [85] Por el contrario, el BASIC estándar tenía muchas características nuevas que no existían en otros BASIC, y muchas de ellas fueron mal consideradas y fueron objeto de algunas críticas. Por ejemplo, el estándar incluía un carácter de continuación de línea, pero eligió el signo comercial, que también se usaba para la concatenación de cadenas. Usarlos en una sola línea podría generar un código muy confuso. [86]&

Para entonces, el lanzamiento de los primeros sistemas de microcomputadoras en 1975 había llevado rápidamente a la introducción de Altair BASIC , la primera versión de lo que pronto se conocería como Microsoft BASIC . MS BASIC se basó en BASIC-PLUS y, por lo tanto, en última instancia, en la quinta edición, pero carecía de sangría, MAT y otras características. También agregó las funciones LEFT$y RIGHT$, rompiendo la convención de tres letras. A medida que el número de microcomputadoras creció y se convirtió en el mercado de computadoras domésticas a fines de la década de 1970, MS BASIC se convirtió en el estándar de facto . [84]

Con este rápido cambio en el mercado, el esfuerzo del Estándar BASIC se desaceleró aún más y no fue ratificado formalmente hasta 1987 como X3.113-1987. En ese momento, los estándares no tenían ningún propósito real; MS BASIC no sólo estaba en todas partes, sino que a mediados de la década de 1980 el uso de BASIC estaba disminuyendo a medida que el software de envoltura retráctil reemplazaba a los programas de escritura. Finalmente ambas normas fueron retiradas. [84]

A pesar del eventual fracaso de los esfuerzos de ANSI, el borrador del Estándar BASIC se implementó en Dartmouth como octava edición en 1982. [83]

Interfaz DTSS

DTSS implementó uno de los primeros entornos de desarrollo integrado (IDE): una interfaz de línea de comandos interactiva . Esto proporcionó una serie de comandos de control de trabajo y de usuario. Por ejemplo, un terminal inactivo podría conectarse a una cuenta de usuario escribiendo HELLOy cerrar sesión nuevamente con BYE. [mi]

Cualquier línea ingresada por el usuario y que comenzara con un número de línea se agregaba al programa, reemplazando cualquier línea previamente almacenada con el mismo número; se asumió que cualquier otra cosa era un comando DTSS y se ejecutó inmediatamente. Las líneas que consistían únicamente en un número de línea no se almacenaban, pero se eliminaban cualquier línea previamente almacenada con el mismo número. Este método de edición fue necesario debido al uso de teleimpresores como unidades terminales.

Cada cuenta de usuario podría tener cualquier cantidad de programas BASIC almacenados sin conexión, mientras que las cuentas de administrador también podrían dejar programas en almacenamiento permanente. Cualquiera de estos estaba activo en un momento determinado para una cuenta de usuario determinada y, si no se había cargado ningún programa, se suponía que había un programa nuevo. Se accedía a los programas almacenados mediante comandos que hoy en día son más conocidos como partes del propio lenguaje BASIC; por ejemplo, el LISTcomando indicó a DTSS que imprimiera el programa actualmente activo.

Lista de comandos

HELLO
iniciar sesión en DTSS
BYE
cerrar sesión en DTSS
BASIC
iniciar el modo BÁSICO
NEW
nombrar y comenzar a escribir un programa
OLD
recuperar un programa previamente nombrado del almacenamiento permanente
LIST
mostrar el programa actual
RUN
ejecutar el programa actual
STOP
interrumpir el programa actualmente en ejecución
TEST
utilizar un programa proporcionado por el instructor para probar el programa actual
LINK
ejecutar el programa actual en modo de múltiples terminales
JOIN
unirse a un programa que se ejecuta en modo de múltiples terminales
SAVE
guardar el programa actual en almacenamiento permanente
UNSAVE
borrar el programa actual del almacenamiento permanente
REPLACE
guardar el programa actual usando un nombre que ya esté en uso para otro archivo
CATALOG
mostrar los nombres de los programas en el almacenamiento permanente
SCRATCH
borrar el programa actual sin borrar su nombre
RENAME
cambiar el nombre del programa actual sin borrarlo
FRI
habilitar el modo Friden para teletipos con saltos de línea mecánicos
NFR
desactivar el modo Friden
EXP
explique (ayuda) EXP EXP para obtener una lista de comandos que el sistema puede explicar

Los usuarios a menudo creían que los comandos eran parte del lenguaje BASIC, pero, de hecho, eran parte del sistema de tiempo compartido y también se usaban al preparar programas ALGOL o FORTRAN a través de terminales DTSS.

Sistema de ENSEÑANZA/Prueba

Alrededor del 80% de todos los estudiantes de Dartmouth a finales de la década de 1960 tomaron dos cursos de matemáticas y aprendieron Básico en el segundo curso, ya sea en cálculo o en matemáticas finitas. Recibieron dos conferencias de una hora sobre Básico cerca del comienzo de estos cursos y luego tuvieron que escribir cuatro programas en Básico, desde programas para aproximar π o encontrar una raíz de un polinomio quíntico hasta programas para resolver una ecuación diferencial o encontrar (por simulación) la probabilidad límite en una cadena de Markov. El sistema TEACH/Test ayudó a los estudiantes a completar estas tareas. Cuando pensaron que tenían un programa funcional, escribieron el comando PRUEBA y un programa escrito por un instructor aprobó lo que habían escrito o les proporcionó una pista sobre dónde podrían haberse equivocado. Los estudiantes debían entregar una lista de cada programa, un RUN de muestra y una aprobación del sistema TEACH/Test. El sistema no calificaba las tareas ni mantenía un registro de cuántas veces un estudiante tecleaba TEST; simplemente ayudó a los estudiantes y sus instructores. [87] [88]

lenguaje BÁSICO

La primera versión implementó los siguientes tipos de declaraciones, tomando algunos de sus operadores y palabras clave de FORTRAN II y algunos de ALGOL 60 . En general, el lenguaje sigue más de cerca el modelo FORTRAN, [46] en el sentido de que generalmente tiene una declaración por línea de código, carece de los "bloques" de ALGOL para agrupar el código (estas construcciones de programación estructuradas fueron una razón principal para el desarrollo de ALGOL) y el uso de GOTO para controlar el flujo del programa.

De ALGOL se tomaron los FOR...TO...STEPbucles de estilo que reemplazaron las declaraciones difíciles de manejar de FORTRAN DO...CONTINUE. [47] BASIC también simplificó la IF...THENconstrucción para permitir comparaciones simples como , a diferencia de FORTRAN . [47] El estilo "SI calculado" de FORTRAN se reintrodujo con el comando en versiones posteriores.IF X>5 THEN GOTO 20IF (X-5) 20,20,30ON...GOTO

Los nombres de las variables se limitaron a A a Z, A0 a A9, B0 a B9, ..., Z0 a Z9, dando un máximo de 286 posibles variables distintas. Se eliminó el extraño sistema de FORTRAN para configurar las variables I a N como números enteros y el resto como punto flotante, y se supuso que todas las variables eran punto flotante y dimensionadas con hasta 10 elementos. El DIMcomando sólo era necesario si la matriz contenía más de diez elementos. [47] Los nombres de las matrices se restringieron únicamente de la A a la Z.

Lista de declaraciones BÁSICAS

DEF
definir funciones de una sola línea
DIM
(abreviatura de dimensión ) define el tamaño de las matrices
END
definir el final del programa
STOP
detener un programa antes del final del texto
FOR / TO / STEP
definir bucles
NEXT
marcar el final de los bucles
GOSUB
transferir el control a subrutinas simples
RETURN
control de retorno desde subrutinas simples
GOTO
transferir el control a otra declaración
IF / THEN
Toma de decisiones
LET / =
asignar resultados de fórmula a una variable
PRINT
resultados de salida
DATA
almacenar datos estáticos dentro del programa
READ
datos de entrada almacenados en declaraciones de DATOS
REM
comentario ("REMarca")

También implementó variables numéricas y aritméticas de punto flotante.

Lista de operadores

Lista de funciones

ABS
Valor absoluto
ATN
Valor arcangente (resultado en radianes )
COS
Valor del coseno (argumento en radianes )
EXP
Valor exponencial
INT
Valor entero
LOG
Valor logarítmico natural
RND
Valor aleatorio
SIN
Valor del seno (argumento en radianes )
SQR
Valor de raíz cuadrada
TAN
Valor tangente (argumento en radianes )

Ejemplos

Las primeras versiones de BASIC no tenían la capacidad de leer ni escribir archivos externos. Para representar listas de datos que normalmente se leerían de un archivo, BASIC incluía la DATApalabra clave, que podía ir seguida de una lista arbitrariamente larga de elementos, terminando sólo en el límite de la longitud de la línea. El DATAno era ejecutable y se omitió si se encontraba. READLos comandos consumirían los datos uno por uno, manteniendo un registro de su ubicación dentro de la colección completa de DATAelementos en un puntero interno. En la versión 3, RESTOREse agregó un comando para restablecer el puntero al primer DATAcomando de un programa.

En este ejemplo, "los primeros tres valores de datos se leen en X, Y y Z respectivamente. El valor -1 se lee en N. Los siguientes 11 valores, de 0,1 a 0,3, se leen en los 11 elementos de la matriz B ". [89]

15 LEER X , Y , Z 20 LEER N 24 PARA I = 0 A 10 25 LEER B ( I ) 26 SIGUIENTE I 40 DATOS 4.2 , 7.5 , 25.1 , -1 , .1 , .01 , .001 , .0001 45 DATOS .2 , .02 , .002 , .0002 , .015 , .025 , .3 , .03 , .003                                 

A diferencia de la mayoría de los BASIC posteriores, Dartmouth BASIC, desde la tercera edición en adelante, tenía una palabra clave de matriz, MATque podía anteponer una serie de otros comandos para operar en conjuntos completos de datos con un solo comando. En este ejemplo, del manual de 1968, se utiliza [90] MAT INPUT V para ingresar una serie de variables. Cuando el usuario no ingresa nada en una línea, este proceso finaliza y se accede al número total de elementos en la NUMpseudovariable. [f] Luego, el código suma todos los elementos individuales de la matriz y calcula el promedio. La tercera edición también añadió sangría, que se utiliza aquí para aclarar la estructura del bucle.

5 DEJE S = 0 10 ENTRADA MAT V 20 DEJE N = NUM ​​30 SI N = 0 ENTONCES 99 40 PARA I = 1 A N 45 DEJE S = S + V ( I ) 50 SIGUIENTE I 60 IMPRIMIR S / N 70 IR A 5 99 FINAL                                              

Notas

  1. ^ Tenga en cuenta el uso del término "suyo", que en este caso era la única posibilidad ya que Dartmouth no admitió mujeres hasta algún tiempo después.
  2. ^ David Ahl dijo que Kemeny lo había escrito al describir el juego en BASIC Computer Games. [42]
  3. ^ Esta característica se encontró en la mayoría de los BASIC basados ​​​​en Dartmouth, pero era poco común en aquellos que se crearon de forma independiente.
  4. ^ No está claro si el apóstrofe se utilizó en versiones anteriores; el manual de la Revisión 4 es el primero en mencionarlo explícitamente.
  5. ^ No era necesario cerrar sesión; si los usuarios no respondían, se desconectaban después de un breve retraso.
  6. ^ Por qué NUMno se implementó como una función como LEN(), es un misterio.

Referencias

Citas

  1. ^ Qué hacer después de presionar Volver. Compañía de Computación del Pueblo. 1975.
  2. ^ ab Kurtz 1981, pag. 516.
  3. ^ ab Kurtz 1981, págs. 516–516.
  4. ^ ab Kemeny y Kurtz 1985, pág. 7.
  5. ^ Kemeny y Kurtz 1985, pág. 8.
  6. ^ Kurtz 1981, pag. 517.
  7. ^ abc Kurtz 1981, pag. 518.
  8. ^ Hora 2014.
  9. ^ Kemeny y Kurtz 1968, pág. 3.
  10. ^ "Matemáticas secundarias en Hannover". Tiempo . 23 de febrero de 1959.
  11. ^ Kemeny y Kurtz 1985, pág. 3.
  12. ^ Kemeny y Kurtz 1985, pág. 4.
  13. ^ Kurtz 1981, pag. 519.
  14. ^ Kemeny y Kurtz 1985, pág. 6.
  15. ^ Kemeny y Kurtz 1985, pág. 9.
  16. ^ Kurtz 1981, págs. 519–520.
  17. ^ Kievit 1971, pág. 9.
  18. ^ ab Kemeny y Kurtz 1985, pág. 5.
  19. ^ abc Kurtz 1981, pag. 520.
  20. ^ Computadoras General Electric (1965). Manual de referencia de programación DATANET-30 (PDF) .
  21. ^ Sistema de tiempo compartido de Dartmouth (DTSS). Marzo de 1995. Consultado el 27 de mayo de 2016.
  22. ^ ab Kemeny y Kurtz 1968, pág. 224.
  23. ^ ab Kiewit 1971, pág. 10.
  24. ^ Kemeny y Kurtz 1968, pág. 225.
  25. ^ "La década de 1960". Dartmouth SU .
  26. ^ Kemeny y Kurtz 1985, págs.16, 22.
  27. ^ Kemeny y Kurtz 1985, pág. dieciséis.
  28. ^ Kemeny y Kurtz 1968, pág. 226.
  29. ^ Kemeny y Kurtz 1985, pág. 21.
  30. ^ Kemeny y Kurtz 1985, pág. 22.
  31. ^ Kurtz 1981, págs.532, 534.
  32. ^ abcd Kiewit 1971, pag. 11.
  33. ^ abc Kurtz 1981, pag. 533.
  34. ^ abc Kurtz 1981, pag. 534.
  35. ^ ab Kiewit 1971, pág. 17.
  36. ^ Kievit 1971, pág. 18.
  37. ^ Garfinkel, Simson (1999). Abelson, Hal (ed.). Arquitectos de la Sociedad de la Información, Treinta y cinco años del Laboratorio de Ciencias de la Computación del MIT. Cambridge: Prensa del MIT. pag. 1.ISBN 978-0-262-07196-3.
  38. ^ ab Kemeny, John G. (1972). El hombre y la computadora. Nueva York: Hijos de Charles Scribner. págs. 32–37, 41–42. ISBN 9780684130095. LCCN  72-1176.
  39. ^ Una guía para el tiempo compartido BÁSICO (PDF) . Hewlett Packard. Agosto de 1969.
  40. ^ ab Manual BASIC-PLUS (PDF) . DIC. 1972.
  41. ^ "El abuelo de BASIC FTBALL de John Kemeny y Tecmo". 17 de octubre de 2017. Archivado desde el original el 25 de julio de 2018 . Consultado el 25 de julio de 2018 .
  42. ^ Ahl 1978, pág. 64.
  43. ^ Qué hacer después de presionar regresar. Compañía de Computación del Pueblo. 1975.
  44. ^ Ahl 1978.
  45. ^ John S. McGeachie, "Múltiples terminales bajo el control del programa de usuario en un entorno de tiempo compartido", Communications of the ACM 16:10, octubre de 1973, páginas 587 y 590.
  46. ^ abc Kurtz 1981, pag. 523.
  47. ^ abcdefg Kurtz 1981, pag. 524.
  48. ^ Kurtz 1981, pag. 525.
  49. ^ Kurtz, Thomas. "Comandos BÁSICOS: La versión original-original".
  50. ^ ab Kurtz 1981, pag. 526.
  51. ^ Hombre4.
  52. ^ ab Kemeny y Kurtz 1985, pág. 24.
  53. ^ ab Kurtz 1981, pag. 527.
  54. ^ abc Kurtz 1981, pag. 528.
  55. ^ abcd Kurtz 1981, pag. 529.
  56. ^ Hombre4, pag. 66.
  57. ^ Kemeny y Kurtz 1985, pág. 28.
  58. ^ ab Kemeny y Kurtz 1985, pág. 29.
  59. ^ Hombre4, pag. 64.
  60. ^ Hombre4, pag. 52.
  61. ^ Hombre4, pag. 67.
  62. ^ abc Kemeny y Kurtz 1985, pág. 31.
  63. ^ Kemeny y Kurtz 1985, pág. 32.
  64. ^ abc Kurtz 1981, pag. 530.
  65. ^ ab Kurtz 1981, pag. 531.
  66. ^ Elliott 1988, pag. 134.
  67. ^ Kemeny y Kurtz 1985, pág. 26.
  68. ^ Guirnalda 1976.
  69. ^ Guirnalda 1976, pag. 1.
  70. ^ Guirnalda 1976, pag. 4.
  71. ^ Guirnalda 1976, pag. 5.
  72. ^ Guirnalda 1976, pag. 6.
  73. ^ Manual de idiomas BASIC-PLUS (PDF). Maynard, Massachusetts: Corporación de equipos digitales. 1972, págs. 3-13.
  74. ^ Guirnalda 1976, pag. 7.
  75. ^ Guirnalda 1976, pag. 10.
  76. ^ Guirnalda 1976, pag. 21.
  77. ^ Stephen J. Garland y Arthur W. Luehrmann, "Gráficos en lenguaje BASIC", Computer Graphics (informe trimestral de SIGGRAPH-ACM) 8:3, páginas 1 a 8, 1974.
  78. ^ Mace, Scott (6 de septiembre de 1982). "College Board desarrolla un curso AP basado en Pascal". InfoMundo . pag. 29.
  79. ^ Stephen J. Garland, "Advanced Placement Computer Science", Computers in Mathematics Education , Viggo P. Hansen y Marilyn J. Zweng (editores), páginas 194-201. Anuario del Consejo Nacional de Profesores de Matemáticas, 1984.
  80. ^ Stephen J. Garland, Introducción a la informática y la programación básica , Programa de Ciencias de la Información y la Computación, Dartmouth College, 1982.
  81. ^ Stephen J. Garland, "Idiomas para primeros cursos de informática: básico", Abacus 1:4, páginas 39–49, verano de 1984.
  82. ^ Stephen J. Garland, Introducción a la informática con aplicaciones en Pascal , Addison-Wesley, Reading, MA, 1986.
  83. ^ abc Elliott 1988, pag. 135.
  84. ^ abcd Marconi.
  85. ^ BÁSICO mínimo (PDF) . ECMA. Enero de 1978.
  86. ^ Guntheroth, Kurt (julio de 1983). "El Nuevo Estándar ANSI BASIC". Avisos ACM SIGPLAN . 18 (7): 50–59. doi :10.1145/988216.988221. S2CID  31236801.
  87. ^ John G. Kemeny y Thomas E. Kurtz, "Dartmouth Time-Sharing", Science 162, 11 de octubre de 1968, páginas 223-228.
  88. ^ John G. Kemeny y Thomas E. Kurtz, The Dartmouth Time-Sharing Computing System, Informe final de la subvención de la Fundación Nacional de Ciencias NSF-GE-3864, junio de 1967, páginas 9 a 10 y Apéndice III.
  89. ^ Manual de referencia del lenguaje BÁSICO . Interdatos. Enero de 1975. págs. 3-24.
  90. ^ BÁSICO, 4ª edición, 1968, página 53

Bibliografía

enlaces externos