¿Por qué no se estructuraba el lenguaje de programación BASIC cuando se vendieron las primeras computadoras personales a fines de los años 70?

En realidad, he trabajado con varios dialectos BÁSICOS en los años 70 y principios de los 80 y todos eran lenguajes de estructuras. El problema era que muchos programadores “nuevos” no estaban acostumbrados a la programación estructurada.
La programación estructurada es principalmente una cuestión de agregar claridad al código agregando bucles, condiciones y subrutinas. BASIC apoyó todo esto muy bien. También admitía comentarios, pero en general su código fuente se cargaría en la memoria mientras la computadora lo procesaba, por lo que los comentarios consumieron memoria. No es práctico si la memoria es escasa.
Por lo tanto, el comando IF era bien conocido, aunque no todos los dialectos admitían una estructura if-then-else. El bucle FOR también era estándar y algunos dialectos también admitían un bucle WHILE. Para las subrutinas, el comando GOSUB se usó para saltar a una línea específica desde donde el código continuaría ejecutándose hasta encontrar un comando RETURN.
El problema con BASIC era que también permitía la programación no estructurada mediante el uso del comando GOTO o restricciones extrañas con las condiciones. El llamado código Spaghetti era bastante común en aquellos primeros días.
Por otra parte, GOTO puede hacer que cualquier lenguaje no esté estructurado si se usa de manera inapropiada, y siempre que la sintaxis del idioma lo permita. La programación estructurada es básicamente una disciplina del programador, no una característica de un lenguaje de programación.

Creo que depende de lo que quieras decir con “estructurado”. Las formas más comunes de BASIC en las computadoras domésticas utilizan números de línea para definir el orden de ejecución. Volver a ingresar un número de línea con un nuevo código reemplazó el código original que llevaba ese número de línea.

En esos días, se aconsejaba a los programadores que primero planificaran sus programas con diagramas de flujo. Solo después de mapear cómo un programa iba a manejar los datos, uno comenzó a escribir cualquier código.

La mayoría de los textos de esa época sugerían Números de línea de 10, 20, 30, etc., de modo que las líneas posteriores (digamos, 25) podrían insertarse entre las líneas existentes durante la edición y la depuración. Algunas versiones incluían esa capacidad de RENUMBER líneas automáticamente, de modo que si la codificación se volvía difícil, podría redistribuirse al formato 10,10. A veces, esto era una molestia porque un programa puede haber sido planificado en bloques, cada uno comenzando en 100, 200, etc., y un RENUMBER también afectaría esos bloques al plegarlos.

Más tarde llegaron las versiones básicas donde el código no requería Números de línea y el código podía editarse como texto “normal”. Para GOTO o GOSUB, uno tenía que insertar números de línea opcionales u otras etiquetas.

Si voy a criticar cualquier lenguaje de codificación por falta de estructura, tendrían que ser modernos “Lenguajes Orientados a Objetos”. Al grabar un MACRO en Word, el código generado tiene la forma de Visual Basic, que aplica su propia estructura, enumera parámetros que nunca se abordan y utiliza nombres de funciones ridículamente largos cuando los escritores competentes están felices de separar los argumentos de una manera simple. lista con comas.

Prefiero un lenguaje lineal sobre un lenguaje de objetos cualquier día.

Porque tenía que encajar en sistemas de memoria tan pequeños: el editor BASIC + intérprete / tiempo de ejecución (incluyendo E / S de disco / archivo) + algo de espacio para el programa.

Creo que 8K RAM fueron los más pequeños en los que pudieron correr.

Eso no deja mucho espacio para nombres de variables de más de 1 y 2 caracteres, algunos operadores simples y algunas estructuras de control simples.

BASIC fue un lenguaje de programación estructurado durante la década de 1970. De hecho, la primera versión estructurada de BASIC fue diseñada a fines de la década de 1960.

La pregunta que realmente debería preguntarse es “¿Por qué los fabricantes de computadoras proporcionaron una versión de BASIC de principios de la década de 1960 cuando las primeras computadoras personales se vendieron a fines de la década de 1970?”. La razón tiene mucho más que ver con los costos de desarrollo de software y el alto costo de la memoria en las primeras microcomputadoras que con BASIC.

El 8080 BASIC inicial de Gates no estaba estructurado. ¿Por qué? Probablemente porque aún no se le había ocurrido el concepto. ¿Qué escribieron Kemeny y Kurtz en 1964? No sé, todavía no estaba escribiendo código. (Estaba trabajando, pero no como programador, nadie lo estaba, excepto en Big Iron).