La corrupción de BASIC

SPEAKER A, CHIP, and SPEAKER C trace how BASIC was corrupted from its original principles. Adapting to machines with 4 KB of RAM, Bill Gates and Paul Allen's Altair BASIC stripped commands and forced uppercase, saving only 3% memory but spawning incompatible versions like GW-BASIC and Q-BASIC that introduced bad habits and hardware dependencies.
Chapters
Es la primera vez que nos haces un cliffhanger, así que venga, cuéntanos en qué consiste la corrupción de BASIC.
¿Alguien se llevó el dinero del gobierno o alguna universidad?
No, Chip, que no todas las corrupciones tienen que ver con dinero.
¿No? ¿Seguro?
Seguro. En este caso la corrupción tuvo que ver con la degradación de los valores de BASIC.
Entonces vamos a hablar de esos Street BASIC que se salieron del camino.
Esas ovejas descarriadas.
Algo así. He visto que en Wikipedia cada artículo sobre cada BASIC difiere muchísimo. En algunos indican el tipo de BASIC del que derivan y en otros no hay apenas información.
Es lo que tiene la libertad. Todos hacen lo que quieren y como quieren.
Pero no está mal así. En verdad cada BASIC será diferente y por ese motivo no se habrán podido poner de acuerdo en unificar los datos.
¡Bien visto! Pues con los datos que tenemos podemos elaborar una lista.
Las dejamos en la fuente en la descripción.
Vale. Entonces, ¿cuáles son los grupos? Porque en esa hoja no veo la categoría de si son callejeros o no.
En verdad, vamos a basar las categorías en los grupos que se crearon.
¿Todos fueron corruptos salvo BASIC?
No lo parece, porque Visual Basic ya no se considera corrupto.
Vayamos por partes.
Como dijo Jack el Destripador—
¡Chip!
Vale, vale. Por cierto, antes de continuar, si no estás suscrito, aprovecha y dale, que luego se te olvida el nombre del canal y pasa lo que pasa.
Chip. ¿Qué? ¿Qué estás haciendo?
¿Nunca te ha pasado?
¿Qué fue mal? Desde 1964 a 1984, Dartmouth mantuvo su propia versión de BASIC, pero como muchos usuarios comenzaron a usarlo, querían también tener un lenguaje igual de fácil en otros computadores, y esto llevó a los creadores de minicomputadoras en la década de 1970 y 1980 a crear su propia implementación de BASIC.
¿Su propia implementación? ¿No pudieron emplear la misma?
Pues un gran ejemplo es la historia de Bill Gates, sobre cómo implementó junto a Paul Allen su versión de Altair BASIC.
Según la entrevista, casi todo lo implementó Paul, Sí, ciertamente.
El caso es que Bill cuenta en la entrevista que las máquinas tenían tan solo 4K de memoria, ¿Solo 4K?
¡Todo un desafío!
De hecho, Kemeny y Kurtz asumen que ese fue uno de los problemas por los cuales muchos BASICs se separaron del camino.
¡Esos herejes!
Es normal, Chip. Imagina que tienes que introducir el compilador o intérprete y el programa en tan solo 4K. Son 4096 bytes. Son unas 3 páginas impresas de código máquina.
Visto así es muy poco. ¡Poquísimo! ¿Cómo consiguieron introducir ahí un BASIC?
Eliminando muchas características e incumpliendo muchos de los principios de Kemeny y Kurtz.
Aún no lo veo.
Comprimiendo. Si eliminamos algunos de los comandos como LET, como por ejemplo LET A= 1, si eliminamos LET quedaría A= 1. Si no permitimos minúsculas, solo mayúsculas, Podemos comprimir la tabla de caracteres aún más, de modo que queda A mayúscula es igual a 1. Ahora eliminamos los espacios, no hacen falta en verdad, así que queda mucho más compacto.
Pero, ¿en verdad se ahorra mucho espacio de memoria?
No, Kemeny y Kurtz calcularon que se ahorraba tan solo un 3% de memoria.
Mucha complicación para tan poca recompensa.
Esto tuvo un impacto muy significativo en la forma de escribir programas. Al convertir todo en mayúsculas y eliminar espacios, obviamente desaconsejan también los comentarios.
Código minimizado y sin comentarios. ¡Vaya! Parece que fuese esto JavaScript.
La minimización de JavaScript es solo para el navegador, no para que quede como código para las personas.
¡Cierto! Esto es peor.
Ahora imagina que escribimos un bucle con while, pero olvidamos el espacio entre la variable y la palabra clave.
Si quitamos el espacio, quedaría como while a, todo junto, un igual y un 1.
Se ve como si creases la variable while a en lugar de usar un while.
Exacto. Ese es el problema de no respetar el principio de Kemeny y Kurtz. De siempre escribir las líneas con comando y argumentos, si la asignación se declara siempre con let, ese problema no existe.
¿No da ningún aviso o error si una variable se declara comenzando con una palabra clave?
Me temo que no. Ese fue otro gran problema.
¿Los mensajes de error? Hemos visto cómo funciona el BASIC de ZX Spectrum y la verdad es que esos mensajes de error diciendo solo Syntax Error y con suerte indicando el número de línea donde falla no da mucha información de qué sucede realmente. ¿Cómo conseguían entender eso? ¿Pro? ¿Pro?
Ah, pues sí. Era muy complejo.
Vale, pero la memoria comenzó a abaratarse en poco tiempo y de forma rápida. Es más, el ZX Spectrum 128 tenía 128K.
Cierto, sigue siendo poco, pero es 32 veces más que el Altair donde Allen y Gates implementaron BASIC.
Sí, ¿por qué otras versiones posteriores como GW-BASIC seguían incumpliendo los principios?
Microsoft fue muy prolífica a la hora de escribir versiones de su BASIC para todas las plataformas. Había BASIC para Altair, Atari, Commodore, MSX, Apple, TRS-80 y, por supuesto, PC.
Incluso parece que influenció a otros para crear BASIC en otras plataformas como CP/M.
Entonces no pudieron cambiar porque... el mal ya estaba hecho.
Exacto. Una vez se acostumbraron a escribir BASIC de esa forma, ya era muy difícil deshacer esos malos hábitos.
¿Malos hábitos como no usar LET?
Peor, mucho peor. Los malos hábitos. Gates y Allen tuvieron clases con computadoras por el tema de Sputnik.
Bien, Chip, buena memoria.
Soy un alumno aplicado.
En la secundaria tuvieron acceso a los teletipos de su colegio y aprendieron BASIC.
Por ese motivo programaron un BASIC.
De hecho, muchos. Fue un no parar. Mira el listado: Altair BASIC, Small BASIC, Atari BASIC, GW-BASIC, BASICa, QuickBASIC, Q-BASIC...
Sí, nos hacemos una idea.
Es raro que no creasen su sistema operativo en BASIC.
Sí, si los sistemas operativos los hubiesen programado ellos, seguramente. Pero esa es otra historia. Los incumplimientos de BASIC condujeron a muy malos hábitos. Por ejemplo, con el dibujo de gráficos.
Yo lo veo bastante simple.
Vamos a hacer una prueba. Veamos cómo dibujar un triángulo en el BASIC de Kemeny y Kurtz.
¡Venga! Yo escribo.
Primero vamos a configurar la pantalla para pintar X desde -2 a 5 y en Y desde -4 a 4. Escribe. Set window -2,5, -4,4.
Esto se entiende, pero entonces configuramos la pantalla para que si ponemos un punto fuera de este rango no se vea.
Exacto, cualquier cosa dentro de ese rango aparece en pantalla y fuera del mismo no se ve.
Queda claro. Entonces ya tenemos la pantalla configurada. Ahora el triángulo. ¿Qué tal si lo pintamos en rojo?
Fácil. Solo hay que configurar el color. Escribe set color y entre comillas dobles red.
Vaya, esa fue fácil. En inglés, pero fácil.
Va siendo cada vez más fácil, de hecho.
Pues último paso, pintamos los 3 lados del triángulo. Escribe plot lines 2 puntos 0, 0 punto y coma 2, 0 punto y coma 1, 2 punto y coma 0, 0.
Parece como Logo, solo que los puntos son absolutos en lugar de relativos.
¿Absolutos en lugar de relativos?
¡Sí! En Logo tenías que decir cuánto avanzaba o retrocedía la tortuga y cuánto giraba hacia derecha o izquierda. ¡Eso es relativo!
¡Ah, vale! Basic es absoluto porque indicas desde qué punto absoluto te mueves dentro del eje de coordenadas configurado con setWindow. ¡Exacto! Yo te cubro, pro, ya sabes, por lo de las coletillas. ¡Chip!
¡No hace falta!
¡Exacto!
No tenéis solución.
Se nos olvida la parte más importante.
Pero ya tenemos el triángulo.
Para que un programa de BASIC esté completo, debe finalizar. Escribe: END.
Pues sí, ya compila y se ve el triángulo. No ha sido muy difícil.
Sí, pero ¿cuál es el incumplimiento en este sentido? ¿Qué hace mal, por ejemplo, GW-BASIC?
Pues para empezar, los comandos vistos anteriormente no existen de la misma forma.
Bueno, eso sí es un problema.
En principio debemos usar SCREEN, pero para cambiar a un modo gráfico donde poder dibujar, el parámetro numérico va del 0 al 9.
¿Y cuál debemos usar?
Pues depende de si queremos una pantalla de 320 x 200 píxeles, que es el 1, 640 x 200 píxeles, que es el 2, y ambos son CGA, por lo que soportan 16 colores pero en 4 atributos y 2 atributos respectivamente. Después tenemos más modos como el EGA, que permite más colores.
Esto se complica un poco. ¿Por qué debemos conocer esos detalles de la pantalla?
Creo que ahí está el incumplimiento del principio. No se cumple que el usuario deba ser abstraído de los detalles de hardware. Porque para elegir el modo de dibujo parece que necesitamos verlos todos.
Exacto, y eso que no hemos visto los colores aún.
No me digas, ¿también hay que elegirlos con un número?
Viendo la referencia de GW-BASIC parece que sí.
GW-BASIC tiene la ventaja de que agregaron window. Si no, deberíamos hacer el cálculo según el tamaño de la pantalla de donde se dibuja el triángulo. El código sería así, escribe: 10 SCREEN 1.
Con esto cambiamos a una pantalla donde podemos dibujar.
Exacto. Seguimos. 20 CLS.
¿De verdad hacen falta los números de línea?
En GW-BASIC sí, Chip. Si hubiésemos optado por Q-BASIC creo que no.
Cierto. Cambiemos a Q-BASIC.
¿Escribo todo igual?
Sí, pero sin números de línea.
Vale. ¿Así?
Así. Ahora el color.
Eso es fácil. Quitamos el set y lo tenemos. Simplemente color y red entre comillas dobles.
Pues no. Hay que indicar el color con un número.
¿Pero qué número?
Antiguamente teníamos un manual, pero dado que son solo dieciséis podemos ir probando.
Prueba, ensayo, error. Muy científico.
Anda y calla.
Vale, ya solo queda lo último: dibujar líneas.
Un line?
Tres. Hay que ir especificando pares. Pero si el punto de inicio es el anterior, entonces podemos omitirlo.
Pero esto que hace line puede ser tanto absoluto como relativo.
Exacto.
Correcto.
Por eso va en contra de los principios.
Chip, para.
Pero es eso.
Exacto.
Así no se puede.
Escribe. Line entre paréntesis 0,0 guión entre paréntesis 2,0. Siguiente línea, line guión entre paréntesis 1,2. Siguiente línea, line guión y entre paréntesis 0,0. Y si ahora ejecutamos, no se ve nada.
Sí, se ve pero en pequeñito. Dos puntos. ¿No tenemos que agregar window?
En principio ese comando no existía fuera de True Basic, pero Microsoft hizo sus tareas y comenzó a agregar más facilidades para los usuarios. Así que antes de line escribe esto: window entre paréntesis menos dos coma menos cuatro guión y entre paréntesis cinco coma cuatro.
¡Ahora sí!
Oye, ¿y si ponemos los lines en la misma línea?
Demasiados incumplimientos por hoy.
Vale, pues parece que funciona.
Un momento, aquí falta algo.
¡Exacto! ¡Hasta Chips se ha dado cuenta!
¡Cierto! Falta el end, pero aún así funciona.
Porque incumple la norma.
Pero, ¿qué más da si termina con end o no?
¡Pues mucho! En aquellos tiempos, si la carga de un programa no se procesaba completamente, No lo sabías si no había un AND.
Una medida de control de que el programa estaba completo.
Vale, así se entiende, pero hoy en día no es tan necesario. No hay tantos problemas en la transmisión. Por cierto, ¿qué transmisión? No había internet en las décadas de 1960 y 1970.
BASIC en las ondas.
¿Una radio para compartir programas BASIC?
No solo eso, BASIC Code fue un programa de radio neerlandés que transmitía código en un formato de BASIC creado para ser único y que todos pudiesen grabar el programa de radio y reproducirlo para ser cargado en sus computadoras con casete.
¿Qué es una casete?
Es donde se grababa antiguamente la música para escucharla.
Oye, que no hace tanto tiempo.
Un poco sí. ¿Cuántos años hace que no usas una casete? Lo siento, pro, Pero es un dispositivo muy antiguo ya, no se usa hoy en día.
Vale, bueno, muchos de los programas en BASIC se cargaban desde cintas de casete. Se reproducía un sonido a través de frecuencias, como en los módems, y ese sonido se convertía en unos y ceros. De ahí podía obtenerse el código BASIC.
Entonces, ¿una radio neerlandesa se dedicaba a reproducir sonidos electrónicos de forma continua?
¡Exacto! ¿Emocionante, no?
¡Ahí va! Conclusiones.
Vaya, con los ejemplos de código no hemos podido avanzar mucho.
Pero ha quedado claro en qué consistió la corrupción de BASIC.
Sí, no tenemos tiempo para más, pero dejamos algunas preguntas para quien haya llegado hasta aquí y quiera dejarnos sus respuestas. Ya sabéis, ahí abajo, en los comentarios.
Creo que ya lo saben, Chip.
Por si acaso.
¿Has usado algún BASIC basado en Microsoft? Quizás otro más pequeño como el Casio Pocket PC BASIC.
¿Ese es el de las calculadoras? Pues, ¿qué hay de TurboBASIC? No todo era GW-BASIC y Q-BASIC, ¿no?
¿Conocías el impacto inicial de Microsoft y su fijación con hacer diferentes versiones de BASIC?
Déjanos tu comentario. Se me olvidó comentar el artículo de Dystra sobre lo peligroso que es usar GOTO y que por ese motivo se comenzó a usar más el BASIC estructurado.
¿No lo comentamos en un vídeo anterior?
Creo que no.
Por cierto, Pro, te estás haciendo de rogar. ¿Qué pasa con el curso de programación?
Ah, pues ya está la página para que los interesados que quieran saber más se suscriban a nuestro boletín.
¿Y eso dónde?
Lo ponemos en la comunidad de YouTube.
Y aún nos queda Visual Basic, Dark Basic, Gambas... ¿Vamos a hablar de BASIC y la década de los 90?
Continuará.
More from Manuel

Historia de los Lenguajes de Programación: años 1960-1969 #basic #apl #simula #lisp #logo

¿Compilador o intérprete? La historia de una rivalidad que comenzó en los años 40








