stringtranslate.com

BÁSICO MÍNIMO

Minimal BASIC es un dialecto del lenguaje de programación BASIC desarrollado como estándar internacional . El esfuerzo comenzó en ANSI en enero de 1974 y en septiembre se unió a él un grupo paralelo en ECMA . El primer borrador se publicó para comentarios en enero de 1976 y el estándar final, conocido alternativamente como ANSI X3.60-1978 o ECMA-55 , se publicó en diciembre de 1977. La Oficina de Normas de los Estados Unidos introdujo el conjunto de pruebas NBSIR 77-1420 para garantizar que las implementaciones cumplieran con la definición.

En ese momento, Microsoft BASIC estaba empezando a tomar el control del mercado después de su introducción en los primeros microordenadores en 1975, y especialmente después de la introducción de la "trinidad" de 1977 - el Apple II , Commodore PET y TRS-80 , todos los cuales consolidarían los BASIC de estilo MS como el estándar de facto . La estandarización ISO de Minimal BASIC comenzó como ISO 6373:1984 pero fue abandonada en 1998. Un esfuerzo para producir un dialecto más potente, Full BASIC (también conocido como Standard BASIC), no fue lanzado hasta enero de 1987 y tuvo poco impacto en el mercado.

Historia

Desarrollos previos

El Dartmouth BASIC se introdujo en mayo de 1964 en el Dartmouth College como un lenguaje interactivo mejorado inspirado en FORTRAN . [1] El sistema reunía varios conceptos que eran temas candentes en la industria informática en ese momento, en particular el uso compartido del tiempo para permitir que varios usuarios accedieran a una sola máquina y la interacción directa con la máquina mediante terminales de computadora . General Electric , que suministró la computadora GE-225 en la que funcionaba, comercializó una ligera variación para usuarios comerciales y tuvo una aceptación inmediata. [2] Varias otras empresas pronto introdujeron sus propios sistemas similares, vendiendo tiempo en línea por minuto. A fines de la década de 1960, había una versión de BASIC para casi todas las plataformas de mainframe y servicios en línea . [3] [4]

En 1966, Hewlett-Packard (HP) presentó una nueva minicomputadora , la HP 2100. Pensada para ser utilizada en laboratorios y fábricas, la compañía se sorprendió al descubrir que la mayoría se vendía para procesamiento comercial. [5] Buscando aprovechar esto, en noviembre de 1968 presentaron la HP 2000, un sistema que utilizaba dos CPU HP 2100 que implementaban tiempo compartido para admitir hasta 32 usuarios. El sistema funcionaba de manera similar al modelo Dartmouth, utilizando una máquina para controlar la entrada/salida y otra para ejecutar los programas. A diferencia de las versiones Dartmouth que eran compiladores , HP Time-Shared BASIC era un intérprete . [6]

Los intérpretes se hicieron rápidamente comunes en máquinas más pequeñas y minicomputadoras. Otros fabricantes copiaron rápidamente el dialecto de HP, en particular Data General para su serie Nova , que tuvo mucho éxito a principios de los años 70. Wang Laboratories también tuvo cierto éxito con sus máquinas BASIC dedicadas, la serie Wang 2200. Cada versión tenía sus propias diferencias. Una de las que se resistieron fue Digital Equipment Corporation (DEC), que había estado involucrada con el programa JOSS en el Stanford Research Institute (SRI) e introdujo su lenguaje FOCAL basado en él. A principios de los años 70, el éxito de BASIC obligó a DEC a introducir un BASIC propio con su propio conjunto de modificaciones. [7]

Esfuerzos de normalización

La divergencia de BASIC generó interés en producir un estándar para intentar unirlos nuevamente. Las primeras reuniones sobre esta posibilidad tuvieron lugar en enero de 1974 en el marco del recién formado grupo de trabajo ANSI X3J2. Esto llevó a que en septiembre de 1974 se creara un grupo correspondiente en Europa en el marco de la ECMA, TC 21. Los dos grupos se mantuvieron en estrecho contacto durante todo el proceso y publicaron sus respectivos estándares al mismo tiempo. El primer borrador fue publicado por ANSI en enero de 1976. La versión final se preparó en junio de 1977 y fue adoptada oficialmente por la ECMA el 14 de diciembre de 1977. [8]

Los primeros años de X3J2 se dedicaron (en retrospectiva, algunos podrían decir que fueron "desperdiciados") a estandarizar lo que equivale al Dartmouth Basic original de 1964... Minimal Basic era más un juguete que un lenguaje real.

Arthur Luehrmann [9]

El BASIC minimalista era esencialmente el BASIC Dartmouth original de 1964 escrito como un estándar formal que utilizaba una forma Backus-Naur extendida con un conjunto de pruebas asociado para garantizar que la implementación cumpliera con la definición. Aclaraba conceptos que antes no estaban definidos, como si GO TOy GOTOeran lo mismo, en este caso afirmando que goto statement = GO space* TO line number, significaba GOTO, GO TOe incluso GO     TOeran idénticos. [10] Cuando existían diferencias entre las implementaciones, como en el manejo de las FORdeclaraciones o si se requerían o no espacios entre palabras clave y valores, el estándar siempre seleccionaba el patrón Dartmouth. [9]

Siempre se entendió que el BASIC Minimal no era realmente útil por sí solo, ya que carecía de muchas características comunes como la manipulación de cadenas . Estas características más avanzadas serían el foco del esfuerzo posterior, Full BASIC , que comenzó a trabajarse seriamente después de la publicación de Minimal. Full BASIC no era simplemente una versión de Minimal con más características, sino que se basaba en los esfuerzos de BASIC Estructurado de Dartmouth y estaba diseñado para ofrecer programación estructurada para respaldar la construcción de programas grandes. A diferencia de Minimal, el BASIC Estándar fue diseñado para actualizar significativamente el BASIC. [11]

Irrelevancia

Mientras se desarrollaba el esfuerzo del BASIC mínimo, se lanzó el primer microordenador ampliamente disponible, el Altair 8800. Poco después, Microsoft lanzó Altair BASIC . En el transcurso del año, se lanzaron docenas de nuevos microordenadores y otras tantas versiones nuevas de BASIC. Para cuando se ratificó el estándar Minimal, ya había decenas de miles de máquinas que ejecutaban alguna variación del lenguaje. El dialecto que seguía cada intérprete en particular generalmente se basaba en las máquinas utilizadas para desarrollarlo; MS BASIC se desarrolló en un PDP-10 [12] y tiene muchas características del BASIC-PLUS de DEC , mientras que Apple BASIC fue escrito por Steve Wozniak basándose en un manual de HP y utiliza el sistema de manejo de cadenas de HP. [13] [a]

El primer borrador del estándar mínimo fue publicado para comentarios en enero de 1976. Se utilizaron numerosos comentarios para actualizar el borrador y su publicación final se preparó en junio de 1977 y fue ratificada formalmente por la ECMA el 14 de diciembre de 1977. [14] La Oficina de Normas de los EE. UU. publicó el conjunto de pruebas NBSIR 77-1420 para permitir que los proveedores probaran el cumplimiento del estándar. [15] Como no había proveedores de microcomputadoras en los grupos de estándares, el sistema se utilizó principalmente en versiones de mainframe, que invariablemente tenían muchas extensiones. Una de las pocas versiones de microcomputadoras que implementaron el estándar fue BASIC-80 de Microsoft para Zilog Z80 , mejor conocido como MBASIC , que obtuvo el cumplimiento del estándar en su versión 5.0. [16]

Después del lanzamiento de Minimal, los grupos de normalización dirigieron su atención al BASIC completo, pero esto se prolongó durante años. El esfuerzo se realizó tan lentamente que los participantes de Dartmouth se fueron y lanzaron su propia versión del estándar aún emergente como True Basic en 1984. Esta versión estaba plagada de errores y era confusa, lo que llevó a Jerry Pournelle a ridiculizarla como una "locura" [17] y a John Dvorak a descartarla como "triste" y "condenada al fracaso". [18] Los planes para trasladar el BASIC mínimo a la Organización Internacional de Normalización (ISO) fueron abandonados, [19] y el grupo ANSI se disolvió dejando los estándares originales inactivos. [20]

Descripción

El BASIC minimalista se basa en gran medida en las primeras versiones del BASIC Dartmouth y sigue sus convenciones. El estándar aclara principalmente ciertas limitaciones en un esfuerzo por producir un estándar que pueda ejecutarse en casi cualquier máquina. La siguiente descripción supone un conocimiento básico de los BASIC comunes y destaca las diferencias en el Minimal.

Código de programa

Al igual que la mayoría de las implementaciones de BASIC, Minimal se basa en la edición del código fuente subyacente mediante un editor de líneas y, por lo tanto, cada línea de código en Minimal debe tener un número de línea . El estándar permite números de línea entre 0 y 9999. A diferencia de algunos intérpretes, Minimal requiere un espacio antes de cada palabra clave y un espacio o final de línea después de esta. [21]

Las palabras clave incluyen REM, DIM, OPTION, DEF, LET, PRINT, INPUT, READ, DATA, RESTORE, IF...THEN, FOR...TO...STEP...NEXT, GO TO, GO SUB...RETURNy , ON...GO TOy . [ 22 ]ON...GO SUB...RANDOMIZESTOPEND

Los programas deben tener un ENDcomo su última línea. [23] INPUT puede tener una cadena de solicitud opcional, pero eso depende de la implementación, no es parte del estándar. [24] RESTORE no permitía un número de línea, una opción vista en la mayoría de los intérpretes de la época. FOR...NEXTLos bucles son probados al máximo y no ejecutarán su cuerpo si la prueba falla en la primera iteración. [25]

Los nombres de las variables pueden constar de una sola letra o de una letra y un solo dígito. No se permiten nombres de variables de dos letras. [26] Los números están limitados al rango 1E-38 a 1E38. [21] Las variables de cadena pueden tener un máximo de 18 caracteres. [27] Las matrices pueden ser unidimensionales o bidimensionales utilizando DIM, pero solo se admiten matrices numéricas. A todas las variables se les asigna normalmente espacio en una matriz unidimensional asociada sin utilizar DIM, se les da espacio para 11 elementos, índices 0 a 10. El límite inferior de las matrices es normalmente 0, pero utilizando OPTION BASE 1puede cambiar el índice a 1. [28]

Hay 11 funciones definidas; ABS, ATN, COS, EXP, INT, LOG, RND, SGN, SIN, SQRy TAN. [29] Los operadores incluyen =, <=, >=, <>. Las cadenas solo se podían comparar para determinar si eran iguales o no, no se admitían comparaciones más grandes o más pequeñas. Tenga en cuenta que los operadores lógicos, AND, ORy NOT, no se suministran. [10]

Se admitían funciones definidas por el usuario DEF FN, pero solo para números. No había funciones integradas ni de usuario disponibles para cadenas. [30]

Ejemplo

Este código implementa la Criba de Eratóstenes : [31]

1000 REM TAMIZ DE ERATOSTENES 1010 REM MODIFICADO DE LA DEMOSTRACIÓN RÁPIDA DEL PROYECTO DE MATEMÁTICA BÁSICA 1020 REM 2010 REM L ES EL LÍMITE DE LA TAMIZ 2020 REM ENCONTRAREMOS TODOS LOS NÚMEROS PRIMOS HASTA L 2030 SEA L = 1000 2040 REM N ES LA TAMIZ EN SÍ 2050 DIM N ( 1000 ) 2060 REM LLENAR LA TAMIZ CON TODOS LOS NÚMEROS HASTA L 2070 PARA I = 1 A L 2080 SEA N ( I ) = I 2090 SIGUIENTE I 2100 REM COMENZAR CON EL PRIMER NÚMERO PRIMO: 2 2110 SEA P = 2 2120 IMPRIMIR P , 2130 REM "CRUZAR OUT" MULTIPLOS DE P 2140 PARA I = P A L PASO P 2150 SEA N ( I ) = 0 2160 SIGUIENTE I 2170 REM ENCONTRAR EL SIGUIENTE NÚMERO NO TACHADO 2180 SEA P = P + 1 2190 SI P = L ENTONCES 2220 2200 SI N ( P ) <> 0 ENTONCES 2120 2210 IR A 2180 2220 IMPRIMIR 2230 FIN                                                                       

Notas

  1. ^ Wozniak lamentó más tarde que el mercado abandonara el manejo de cadenas de HP y utilizara el estilo DEC/MS, al que ridiculizó como "abismal". [13]

Referencias

Citas

  1. ^ Kurtz 1981, pág. 532.
  2. ^ Kurtz 1981, págs. 532, 534.
  3. ^ McCracken 2014.
  4. ^ "IBM VS the World: Así es como es". Computerworld . 5 de diciembre de 1973. Archivado desde el original el 28 de enero de 2022 . Consultado el 26 de abril de 2022 .
  5. ^ Leibson, Steve (2017). «HP: The Accidentally, On-Purpose Computer Company» (HP: la empresa informática que creó accidentalmente y a propósito). HP9825.COM . Archivado desde el original el 21 de octubre de 2019. Consultado el 26 de abril de 2022 .
  6. ^ "Descripción del procesador Hewlett-Packard 2100, 1972" (PDF) . Archivado (PDF) del original el 2021-04-12 . Consultado el 2020-08-18 .
  7. ^ Savetz, Kevin (abril de 2013). "Dave Ahl y Betsy Ah" (Entrevista). Archivado desde el original el 2022-03-31 . Consultado el 2022-04-26 .
  8. ^ ECMA 1978, pág. iii.
  9. ^ desde Luehrmann 1984, pág. 173.
  10. ^ desde ECMA 1978, pág. 15.
  11. ^ Luehrmann 1984, pág. 171.
  12. ^ Fridson 1999, pág. 116.
  13. ^Por Wozniak 2014.
  14. ^ ECMA 1978, pág. i.
  15. ^ Gilsinn y Sheppard 1978.
  16. ^ BASIC-80 Reference Manual. Microsoft. 1981. Archivado desde el original el 21 de mayo de 2022. Consultado el 26 de abril de 2022 .
  17. ^ Pournelle 1985, pág. 366.
  18. ^ Dvorák 1984, pág. 88.
  19. ^ "ISO 6373:1984". Archivado desde el original el 3 de marzo de 2021. Consultado el 26 de abril de 2022 .
  20. ^ "ECMA-55 Minimal BASIC". ECMA International . Archivado desde el original el 2022-04-03 . Consultado el 2022-04-26 .
  21. ^ desde ECMA 1978, pág. 6.
  22. ^ Asociación Europea de Maestros de Matemáticas 1978.
  23. ^ ECMA 1978, pág. 5.
  24. ^ ECMA 1978, pág. 22.
  25. ^ ECMA 1978, pág. 17.
  26. ^ ECMA 1978, pág. 8.
  27. ^ ECMA 1978, pág. 9.
  28. ^ ECMA 1978, pág. 25.
  29. ^ ECMA 1978, pág. 11.
  30. ^ ECMA 1978, pág. 13.
  31. ^ Ham, John Gatewood (15 de mayo de 2015). "ERATOSTHENESE.BAS". Sourceforge . Archivado desde el original el 2022-04-26 . Consultado el 2022-04-26 .

Bibliografía

Lectura adicional

Enlaces externos

Implementaciones de código abierto mantenidas actualmente