Claro. Antes de que sucedieran las cosas Altair / MITS / SWTPC / Kim / Sinclair / Pet / RadioScrap / OSI / Apple, había una pequeña máquina encantadora conocida como IBM 5100 . Tenía BASIC en ROM , una unidad de cinta de cassette grande (o dos), 8 KB de memoria. una pantalla de 24 líneas y una impresora, todo por un mísero USD 10.000, un orden de magnitud más barato que su mini típico. Originalmente construido para científicos ( APL en ROM también era una opción), pero luego algunos tipos de contabilidad lo descubrieron , y comenzó una locura: cada pequeña empresa quería una. Con software personalizado, por supuesto. El 5110 siguió con eso, con las unidades de cinta reemplazadas por disquetes de 8 ".
¿Algún software comercial? Galoons .
¿Puede decir el libro mayor, la nómina, las cuentas por pagar, las cuentas por cobrar, el control de inventario y la facturación? He estado allí, hecho eso - en BASIC. ¿Facturas de servicios públicos, inventario de autos nuevos y usados, recolección de camiones de basura y programación de entrega de bebidas? Sí - BÁSICO. Quiere rastrear mineral de hierro desde minas hasta trenes y barcos ... BÁSICO. Todo lo que no se planteó el piso fue hecho en BASIC. Comercialmente, quiero decir. (Porque RPG II no cuenta ;-).
¿Cómo se resolvieron las limitaciones?
Bueno, lo primero que hizo fue enviar al cliente de vuelta a IBM para obtener más memoria, porque ¿quién podría escribir algo serio en 8 KB? Simplemente tenía tener 16. Y dos unidades de cinta, si es posible, porque aparte de la teoría de los autómatas, la clasificación combinada en una sola cinta es, bueno, un poco lento.
Lo siento, te refieres a las limitaciones de BASIC.
Bueno, tenía que administrar sus recursos con mucho cuidado, cosas como números de línea , porque no quería quedarse sin esos; dolor real en la parte posterior para tener que volver a numerar una sección completa y volver a escribirla, sin perder accidentalmente una o dos líneas de código.
No, sólo estoy bromeando. En realidad no tuvimos ese problema hasta que aparecieron las computadoras domésticas, con un intérprete BÁSICO que no podía volver a numerar por sí solo.
También usamos la modularidad, donde llamó a un nuevo programa, lo ejecutó hasta que se cerró y regresó al programa de llamada. Un gosub sobre esteroides (porque tiene más memoria para usar), pero mucho más lento (porque la máquina tardó un rato en encontrar el programa en la cinta, cargarlo, luego rebobinar y encontrar el programa original y cargarlo). atrás...). Se parece mucho a un fork y un exec, pero sin el fork, solo mejor porque se compartió todo el espacio de la memoria.
El uso riguroso de las convenciones también ayudó: ya sabes, como "siempre DEBES apuntar a un GOSUB a una línea de comentarios que diga lo que hace esta rutina, y DEBES hacer lo mismo para un GOTO cuando sea posible. Cosas como esas. Oh y programación estructurada , un poco más tarde: "por convención" nuevamente.
Algunos incluso llegaron un poco al extremo: OAOO , YAGNI , TSTTCPW , emparejando refactor sin piedad, ese tipo de cosas. No por esos nombres, por supuesto. (Ver también: Eclesiastés ;-)
Los días de gloria.