Hablemos del NACIMIENTO DE BASIC

John Kemeny and Thomas Kurtz created BASIC at Dartmouth to teach beginners real-time programming after Sputnik sparked U.S. science funding. Their eight-point manifesto demanded simplicity and interactivity, but later "Street BASIC" variants abandoned those principles with proprietary extensions and no type system.
Chapters
¿Te has dado cuenta en las conversaciones de codeadores de cuántos comenzaron a programar usando BASIC?
No es de extrañar, la mayoría de computadoras de los 70 y 80 venían con un BASIC preinstalado y era la mejor forma de adentrarse en la programación.
¿Tú comenzaste con BASIC?
ZX Spectrum 128, 128K de memoria.
Espera, ¿solo 128K de memoria?
Un procesador Zilog 80. De 8 bits.
¿8 bits?
A la increíble velocidad de 4 megahercios.
¿Megahercios? ¿No gigahercios?
Estamos hablando de un computador de los años 80, pero pudo haber sido peor.
¿Peor que no tener ni medio megabyte de memoria a una velocidad de 4 megahercios? Lo dudo.
Imagina los computadores de los años 60.
Te has ido muy atrás, ¿no?
No, está justo donde debemos estar, porque fue en esa época cuando John Kemeny y Thomas Kurtz decidieron que había que crear un lenguaje de programación.
Suena interesante.
¡Se viene historia!
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?
Adiós a las tarjetas perforadas. Hay que posicionarse históricamente. El presidente Eisenhower emite una carta sobre la importancia de impulsar la ciencia y la tecnología.
¿Por qué ese interés?
En la década de 1960 Estados Unidos y la URSS estaban envueltos en una guerra fría.
La guerra fría. No creo que hubiese otra con el mismo nombre. Y habría que aclarar que la URSS es la Unión de Repúblicas Socialistas Soviéticas.
Exacto. Todo el bloque de países del este que se había unido bajo la bandera roja del comunismo e intentaban transmitir al mundo que su modelo de país era el ideal a seguir.
Bueno, bueno, el contexto ya está ahí. No nos desviemos más, que quiero que hablemos de Basic.
Aún no, queda algo muy importante.
Cierto, no has mencionado el porqué Eisenhower emite esa carta.
Me lo imagino, fue porque los rusos se adelantaron lanzando el Sputnik.
Vaya chip. A veces sorprende que sepas esas cosas.
¿gracias?
Chip dio en el punto clave. La carrera espacial estaba siendo ganada por la URSS y los Estados Unidos querían demostrar que podían hacerlo más rápido y mejor, pero necesitaban expertos.
No sería muy difícil viendo la cantidad de físicos, matemáticos y otros científicos que emigraron antes y durante la Segunda Guerra Mundial a Estados Unidos. Personajes como John von Neumann.
Pues con ese enfoque puesto en la educación científica y tecnológica, se comenzaron a dar subvenciones y ayudas a todos los programas universitarios que potenciasen de algún modo estos avances.
Surgirían muchas iniciativas. Hay muy buenas universidades en Estados Unidos.
No creo que todo fuese fructífero.
En principio parece que fue bastante bien. Algunos proyectos como el lenguaje LOGO, PILOT o BASIC surgieron gracias a esta iniciativa. Pero vamos a hacer la historia más dinámica.
¿Qué quieres decir con más dinámica?
Os presento a Violeta Kemeny y Chip Kurtz.
¿Vamos de cosplay?
Esto no está pagado.
He echado un vistazo a vuestros diálogos.
Kemeny, he estado hablando con mi amigo McCarthy. Un momento, ¿conozco a John McCarthy?
Sí, recuerda que tanto McCarthy como Kemeny y Kurtz trabajaron en Darth Maul.
¿Qué te ha propuesto McCarthy?
Eso no está en el guión.
Estoy improvisando ya que mi compañero de escena no sabe actuar.
Venga, chicos, sigamos por donde lo dejó Chip.
Me ha mencionado que lo ideal sería hacer un sistema en tiempo real.
Esa idea nos ahorraría tener que entregar tarjetas perforadas y esperar un día completo a que nuestro programa se ejecutase para después recoger los resultados en un papel.
Podemos usar Fortran para hacer esa tarea.
Pero necesitaría muchos ajustes para acomodarse a nuestra idea del lenguaje perfecto.
Es mejor partir de un lenguaje ya creado. Si son pocos cambios no importará mucho.
Pero ya no sería Fortran. ¿Tiene sentido que digas que usamos Fortran si hemos modificado tanto Fortran?
Tienes razón, no sería Fortran.
Entonces, ¿no sería mejor implementar nuestro lenguaje tal y como nosotros queremos que sea? ¡Perfecto!
Eso, lo habéis hecho muy bien. En ese momento ya tanto Kemeny como Kurtz tienen la visión de hacer un sistema de tiempo real para su lenguaje de programación.
Un momento, ¿no estábamos hablando de un lenguaje de programación? ¿Qué tiene que ver con un sistema operativo?
Computadores sin sistemas operativos. En la década de 1960 surgieron los primeros sistemas operativos, pero había pocos proyectos que fuesen sistemas operativos para diferentes máquinas. Y había muchas máquinas muy diferentes en el mercado.
¿Cada fabricante tenía su propia arquitectura y su propio sistema operativo?
No, había computadoras que no tenían sistema operativo, ejecutaban los programas directamente, y otras computadoras que sí tenían algo parecido a un sistema operativo no era compatible con otras máquinas de la misma empresa porque sus arquitecturas eran diferentes.
¡Vaya! Parece que eso de la compatibilidad era una tarea pendiente.
Esta fue la década en la que se comenzó a hacer Multics, según vimos en el capítulo donde hablamos del lenguaje C. Exacto.
Multics fue una iniciativa de varios fabricantes para intentar mantener una base de código y compiladores en común, y eso mismo fue algo que se plantearon hacer Gemini y Kurtz.
¿Un sistema operativo para adaptar a varias arquitecturas y su lenguaje como interfaz entre el usuario y la máquina?
¡Exacto!
Pro, dicen en los comentarios que dices demasiado exacto.
También dicen que vosotros decís demasiado mi nombre.
¿Intentamos controlar las coletillas entonces?
¡No!
Pues como decía, Kemeny y Kutz elaboraron un... ¿Manifiesto? Podríamos llamarlo así, sí. Son directrices que deben cumplirse para mantener Basic conforme a sus ideales.
Vale, pues háblanos de ese manifiesto de BASIC.
Pues estos 8 principios son los siguientes: el primero, ser fácil de usar para los principiantes.
¿Un lenguaje fácil de usar como Go?
Aún más fácil.
Lo dudo.
Entonces, ¿cualquier cosa más compleja no podría hacerse en este lenguaje?
Os he preparado vuestros guiones para esta parte. A ver, Kemeny y Kurtz, escena 2.
El diseño del lenguaje era muy simple: cada línea debe tener una instrucción.
Y cada instrucción debe comenzar con un comando.
Los 14 comandos iniciales son suficientes para todos.
¡Uy! Eso me recuerda a la famosa frase de Bill Gates: 640K de memoria son suficientes para todos. Y en los portátiles ya vamos por unos cuantos gigabytes de memoria.
Bueno, de hecho los 14 comandos están indicados en el libro Back to BASIC, pero en el primer manual de Dartmouth de octubre de 1964 se mencionan en el apéndice un sumario con 15 mandatos de BASIC.
¡Vaya! Ya va faltando a su palabra nada más comenzar.
Es difícil mantener esa promesa.
El segundo principio puede ayudar a entender los cambios: BASIC debe ser un lenguaje de propósito general Permitiendo escribir cualquier programa.
¿Por qué ayuda a entender la varianza de mandatos?
Eso es fácil. Si aparecen nuevas tecnologías como las pantallas gráficas, deberán proveer nuevos comandos para poder realizar dibujos.
Exacto. De hecho, ese fue uno de los cambios que provocó un incremento de comandos. Otro fue agregar la gestión de ficheros.
¡Atento, Chip! Que cuando pensaron en el lenguaje y el sistema operativo no pensaron en los ficheros. Eso vino después.
¡Qué cosas!
Y así llegamos al tercer principio para el diseño y crecimiento del lenguaje que nos dice: cada característica avanzada que deba ser agregada, si tiene un coste, debe ser pagado por el experto y no por el novato.
Esto parece un croquis. ¿A qué se refiere con el coste de la característica?
Creo que dice que si una nueva característica debe agregar nuevos comandos o cambiar el lenguaje, aún así debe mantener el lenguaje simple para el novato. Y debe complicarse solo para quien quiera utilizar el lenguaje de una forma más avanzada.
¡Exacto! Es una forma de seguir asegurando una curva de aprendizaje muy baja para que todos puedan programar en BASIC. El cuarto principio indica que el lenguaje debe ser interactivo en todos los casos.
¿Interactivo? Eso es porque BASIC es un intérprete de comandos, ¿no?
No. Y abro bloque.
Pero que aún no hemos acabado con este.
BASIC no es un intérprete.
Vale, ya lo dejaste claro, ahí, en grande. Pero la mayoría de BASIC de los computadores de las décadas de 1970 y 1980 son intérpretes.
Los Street BASIC no son True BASIC.
¿Street BASIC? ¿True BASIC? ¿A qué te refieres, pro?
La popularidad de BASIC creció y se expandió de forma incontrolada en la década de 1970 y muchos de los computadores que decidieron introducir un lenguaje BASIC no lo hacían basándose en los principios de BASIC.
¿Esos principios que aún no hemos acabado de mencionar?
Chip, esto es importante. Tómalo como un receso.
Vale.
Las versiones de Street Basic se hacían complejas para los usuarios noveles. No eran lenguajes de propósito general en su amplia mayoría y no eran interactivos sino interpretados.
Pero, ¿qué diferencia hay?
Los usuarios escribían su programa que en algunas ocasiones consistía de una única línea, un único comando, y otras veces una serie de comandos. Al compilarse todo el conjunto se traduce en una sola pasada a código máquina y después se ejecuta.
Entonces, desde el punto de vista del usuario, si ejecuta comandos uno a uno de forma interactiva, aunque se compile antes, obtiene algo similar a lo que hace un intérprete.
Sí, en BASIC de 1964 si se ejecuta un comando sin número de líneas no forma parte de un programa y por tanto se ejecuta directamente obteniendo un resultado, pero si se especifica un número de líneas entonces se está definiendo un programa y se compila cuando se ejecuta un comando como RUN.
¡A correr!
Queda claro. ¿Volvemos a los principios?
Manifiesto de BASIC.
Parte 2.
El quinto principio es lo que esperaríamos de cualquier lenguaje de programación: ¿Que haga lo que se le pide? Además, es dar mensajes de error comprensibles por el usuario.
He visto algún código de error de BASIC y no me ha parecido comprensible ni fácil.
¡Ahí! Un BASIC de la calle.
A ti sí que te falta calle.
Exacto, me falta calle.
No, que es un strict BASIC seguramente. El sexto principio es que dé una respuesta rápida a programas pequeños.
Supongo que está ligado con dar una respuesta rápida de error en caso de fallo y que este fallo sea comprensible si lo ligamos al principio anterior.
Correcto. Yo te cubro para que no te repitas, pro.
Gracias, supongo. El séptimo principio es que el programador no tiene por qué tener conocimiento del hardware.
¿No hace falta que sepa lo que es un disco duro o un periférico?
No, Chip. Se refiere a que no tengas que saber de código máquina o la arquitectura específica del computador donde se ejecuta el programa.
Incluso más específico. Leed los guiones.
A ver... Es una decisión arriesgada, pero viendo los cursos de programación que primero introducen el hardware a sus alumnos y después el lenguaje, no parece buena idea tener el hardware presente.
Sí, sobre todo viendo el abandono de estos cursos por parte de los alumnos de artes liberales.
¿De artes liberales? ¿Eso qué es?
No te salgas del papel.
Por ese motivo, aunque Fortran tiene dos tipos de números, entero y coma flotante, en BASIC un número es un número.
¿No hay tipos?
No hay tipos estrictamente hablando porque incluso las cadenas de texto pueden actuar como números en ciertos casos.
Yo ahí solo veo caos y destrucción.
Acabamos con el octavo principio: el usuario debe ser abstraído del sistema operativo.
Básicamente, dar al usuario los comandos necesarios para gestionar de forma abstracta el sistema operativo subyacente.
Pero, ¿no dijimos que BASIC tenía su propio sistema operativo?
En Dartmouth sí, pero si el lenguaje es portado a otra máquina y sistema operativo debe poder funcionar igual, con los mismos comandos.
Vale, queda claro. Una pregunta que aún no nos hemos hecho porque parece fácil, pero... ¿De dónde viene el nombre?
Pues es curioso porque se pensó en BASIC como nombre para dar la idea de su facilidad, pero al mismo tiempo constituye un acrónimo.
¿Eso es un acrónimo? ¿5 palabras?
¿Quieres jugar a adivinar?
No, mejor dilo directamente.
Es por Beginners All-Purpose Symbolic Instruction Code, o dicho en español, código de instrucciones simbólicas multiusos para principiantes.
Parece que intenta representar los principios más importantes como novato o propósito general.
Queda claro. Pues, ¿qué pasó con BASIC?
¿A qué te refieres?
Se ve que BASIC parecía el lenguaje ideal para aprender. Estuvo presente en la mayoría de computadoras de la década de 1970 y 1980, e incluso Microsoft se hizo eco e hizo Visual Basic.
En verdad, en Microsoft se hicieron muchos BASIC.
Pues más aún, si a día de hoy ya no se usa tanto. ¿Qué pasó con BASIC?
Hemos comentado los street BASIC.
Los BASIC callejeros, sí.
Pues el String Basic y el ANSI BASIC fueron el principio de una corrupción del lenguaje, pero eso tendremos que dejarlo para la semana que viene.
¿La semana que viene?
Conclusiones.
Cada vez se me hacen los capítulos más cortos.
Ha sido largo, sobre todo porque hemos tenido que disfrazarnos.
BASIC tuvo sus orígenes marcados en una orientación a las personas que quieren utilizar un computador. En la década de 1960 no había programas al uso y la única forma de hacer algo Era mediante programación y, por tanto, debía ser muy simple para no ahuyentar a personas de otras ramas de estudio.
Sí, ya, como los de artes liberales.
¡Ey! Que venía así en el libro.
Hemos hablado de los orígenes del lenguaje y cómo sus creadores asentaron su cimiento y comenzamos a ver sus ramificaciones no tan puras. ¿Qué veremos en el siguiente capítulo?
Veremos la corrupción de BASIC.
¡Esos BASIC callejeros!
Parece que echaremos un rato revisando el árbol genealógico de BASIC, pero queremos saber qué opinas. ¿Has utilizado el auténtico BASIC?
¿Quizá Visual Basic?
Déjanos tus comentarios.
Vaya, vaya, pro. Así que tú aprendiste con un BASIC callejero.
¿Tú aprendiste directamente Python?
Sí, ¿por qué?
Por eso te falta tanta calle.
Vale, pero oye, pro, si aprendiste con BASIC... ¿Por qué hacer un curso con Pascal?
¿Quién dijo solo Pascal? 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








