Muchos de nosotros, incluyéndome a mí, comenzamos su vida de programación con programas escritos en computadoras hogareñas , algo así como
10 PRINT "ENTER RADIUS"
20 INPUT R
30 PRINT "CIRCUMFERENCE="; 2 * R * PI
40 PRINT "AGAIN?"
50 INPUT A$
60 IF A$="Y" THEN GOTO 10
70 END
Por supuesto, el BASIC basado en el número de línea era propenso a crear código spagetti, también porque la mayoría de los dialectos BASIC omitían declaraciones estructurales como WHILE
, hacer todo menos el FOR
bucle con IF
, GOTO
y GOSUB
. Estoy hablando de dialectos BASIC antes de 1991, cuando aparecieron QBASIC y Visual Basic .
Si bien los dialectos BÁSICOS pueden haber promovido el mal estilo entre los aspirantes a programadores, ¿se crearon proyectos comerciales más grandes en un dialecto BÁSICO? Si es así, ¿cómo lograron vivir y solucionar las deficiencias obvias?
Por "serio", quiero decir:
Were those BASIC dialects only used to teach aspiring programmes bad style
Hm ... Es un mal estilo ahora, pero no en aquel entonces.I'm seriously pissed off that this question was closed during the "History" contest.
Je, perdiste una gran oportunidad de obtener algunas vistas adicionales para la pregunta al mencionarla en Meta.Respuestas:
Seguro. Antes de que sucedieran las cosas de 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 gran unidad de cinta de cassette (o dos), 8 KB de memoria. una pantalla de 24 líneas y una impresora, todo por unos miserables 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 comenzaron una locura: cada pequeña empresa quería uno. Con software personalizado, por supuesto. El 5110 siguió eso, con las unidades de cinta reemplazadas por disquetes de 8 ".
¿Algún software comercial? Galoons .
¿Puede decir libro mayor, nómina, cuentas por pagar, cuentas por cobrar, control de inventario y facturación? He estado allí, hecho eso, en BASIC. ¿Facturas de servicios públicos, inventario de automóviles nuevos y usados, recogida de camiones de basura y programación de entrega de bebidas? Sí, básico. Quiere rastrear mineral de hierro desde minas hasta trenes en barcos ... BÁSICO. Todo lo que no era un piso elevado probablemente se hiciera 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 regreso a IBM para obtener más memoria, porque ¿quién podría escribir algo serio en 8 KB? Simplemente tenía que tener 16. Y dos unidades de cinta, si es posible, porque, aparte de la teoría de autómatas, la clasificación por fusión en una sola cinta es, bueno, un poco lenta.
Oh, 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; Es realmente difícil tener que renumerar una sección completa y volver a escribirla, sin perder accidentalmente una o dos líneas de código.
No, solo bromeo. En realidad, no tuvimos ese problema hasta que aparecieron las computadoras domésticas, con un intérprete BASIC que no podía renumerar por sí solo.
También utilizamos la modularidad, donde llamó a un nuevo programa, lo ejecutó hasta que se cerró y regresó al programa de llamadas. Un gosub con esteroides (porque tienes más memoria para usar), pero mucho más lento (porque le tomó un tiempo a la máquina encontrar el programa en la cinta, cargarlo, y luego rebobinar y encontrar el programa original y cargarlo espalda...). Muy parecido a una bifurcación y un ejecutivo, pero sin la bifurcación, solo mejor porque se compartió todo el espacio de memoria.
El uso riguroso de las convenciones también ayudó: ya sabes, como "siempre DEBES apuntar a un GOSUB en una línea de comentarios que diga lo que hace esta rutina, y DEBERÍAS hacer lo mismo para un GOTO cuando sea posible. Cosas así. Ah, y estructurado programación , un poco más tarde, "por convención" nuevamente.
Algunos incluso fueron un poco al extremo: OAOO , YAGNI , TSTTCPW , emparejamiento, refactorización sin piedad, ese tipo de cosas. No con esos nombres, por supuesto. (Ver también: Eclesiastés ;-)
Los días de gloria.
fuente
El primer software en el que trabajé fue un programa GW-BASIC de 8k líneas que la compañía escribió en los años 80 para usar el cálculo de transferencia de calor para dimensionar y fijar el precio del equipo de caldera. Si bien el código era completamente incomprensible, logró funcionar tan bien que lo habían usado durante más de 20 años.
Esta fue la fortaleza de BASIC de que un ingeniero mecánico con un manual de referencia podría realmente escribir software utilizable de calidad (en ese momento). Antes de BASIC y la prevalencia de la PC, tal cosa habría sido desconocida. Tendría que contratar un equipo de ingenieros informáticos y posiblemente operadores de computadoras para programar y trabajar desde un mainframe compartido. Todo esto habría sido demasiado complejo para que el ingeniero mecánico típico lo captara en poco tiempo.
Así que ciertamente BASIC fue muy útil más allá de los entusiastas de las computadoras hogareñas, esta fue la primera introducción de muchas empresas en el ámbito de la escritura interna de software personalizado a un precio asequible sin equipos de expertos.
fuente
Sí, hubo numerosos productos comerciales y otros desarrollos "serios" realizados en BASIC. Para entender por qué, debe comprender el contexto de los años setenta y ochenta, cuando BASIC creció en mini y microcomputadoras.
En aquel entonces, la maquinaria era positivamente flaca según los estándares actuales. Las CPU se registraron a unos pocos MHz (a menudo mucho menos para las microcomputadoras) y tenían menos memoria de la que ocuparía el HTML que se necesita para representar esta página. Si iba a implementar un producto, tenía que usar las herramientas que estaban disponibles, que eran ensamblaje desnudo o, en microcomputadoras, el intérprete BASIC que se enviaba en ROM (a menudo 16K en un espacio de direcciones de 64K) con el sistema . Había otros idiomas disponibles, pero muchos no tenían todas las características estructuradas que damos por sentado. Esto tenía mucho que ver con el hecho de que la memoria era escasa, * nada de eso era virtual excepto en sistemas de muy alta gama y, por lo general, no había suficiente para tener un compilador para un lenguaje más sofisticado. Con recursos tan limitados, "graves"
Su argumento de que los fabricantes de las primeras computadoras domésticas deberían haber sabido mejor y haber proporcionado un lenguaje estructurado simplemente no funciona en ese contexto. Simplemente no iba a suceder con la tecnología disponible a un precio que la gente podría soportar.
La forma en que solucionamos las deficiencias del lenguaje fue simple: no las vimos de esa manera y hicimos el trabajo con lo que estaba disponible. ANSI Minimal BASIC está estructurado de manera muy similar al lenguaje ensamblador en el sentido de que obtienes la mayoría de los mismos sabores de llamadas simples de ramificación y subrutina, pero depende de ti asegurarte de que las estrellas estén correctamente alineadas. La única excepción es la
FOR..NEXT
construcción utilizada para proporcionar bucles. Esencialmente, si desea desarrollar algo en BASIC y hacer un buen trabajo, debe planificar y comprender la estructura de sus programas con el mismo cuidado que si los estuviera escribiendo en conjunto. Las herramientas de depuración disponibles eran muy primitivas, por lo que, en esencia, tenía que actuar juntos si quería que sus programas funcionaran y fueran mantenibles.Sí, había muchos espaguetis en aquel entonces, pero aún no he visto un idioma en el que sea imposible escribir un código incorrecto.
* La memoria funcionó alrededor de US $ 750-1,000 por MB a principios de la década de 1980. Ajustado por la inflación, eso es de US $ 1,600-2,200 en dólares de 2010. Ese mismo año, el costo por megabyte fue de aproximadamente US $ 0.03.
fuente
Mi primer trabajo de programación al 100%, en la década de 1980, estaba trabajando en un paquete de contabilidad de mercado vertical que se escribió originalmente en GW-BASIC . Había sido portado a QuickBASIC 3.0, pero conservaba casi todas las fallas asociadas con los primeros dialectos BASIC. Había toneladas de GOTO y mucha estructura pobre. Había alrededor de una docena de módulos (inventario, libro mayor, etc.) y el programa se vendió por alrededor de US $ 1000 - US $ 2500 por módulo más contratos de soporte anual. Los ingresos de la compañía estuvieron en el rango de US $ 15 - US $ 25 millones al año.
En cuanto a cómo vivir con deficiencias, se utilizaron muchas limitaciones mediante el uso de lenguaje de máquina o MASM . Era común usar los comandos PEEK y POKE para insertar lenguaje de máquina en programas BASIC. Escribí programas MASM (y luego C) para extender el programa para agregar cosas como soporte de base de datos rudimentario, comunicaciones y "gráficos" de texto.
fuente
En las computadoras domésticas más antiguas como el C64 o sus predecesoras, existían muchos programas BASIC y también algunos comerciales. Pero "grande" rara vez era posible, ya que con <64kB de RAM escribir programas BASIC "grandes" no es realmente fácil. Si deseaba conocer las limitaciones de la máquina, normalmente tenía que abandonar el terreno de BASIC, el "lenguaje de alto nivel", y usar el ensamblador.
Entonces, la respuesta a su pregunta es "probablemente no muchas", pero no por las razones que tiene en mente (como "demasiado propenso a errores / desestructurado", etc.).
Por cierto: AFAIK, el famoso compilador PETSpeed BASIC fue escrito en BASIC (compilado consigo mismo, por supuesto).
fuente
Toda la línea de contabilidad de Peachtree Software (cuentas por cobrar, por pagar, etc.) estaba escrita (y aún puede ser, por lo que sé) en BASIC. Cuando se lanzó por primera vez la PC de IBM, pasé muchas largas noches depurando y arreglando su código para los clientes que compraron una Computadora personal IBM y los paquetes de Peachtree para hacer los libros para su pequeña empresa.
fuente
Mi primer trabajo fue en 1981 programando Apple IIs en Basic en una oficina de Price Waterhouse (Pre Coopers) en su consultoría de gestión en Belfast, Irlanda del Norte. Un equipo de dos / tres de nosotros desarrollamos e instalamos sistemas en clientes que incluyen una librería y un matadero. Era un sistema de modelado financiero, efectivamente una hoja de cálculo Visicalc muy compleja (50 hojas, 3,000 variables) convertida en un gran programa básico. Se necesitaron dos días en un sistema Apple II con 4 unidades de disco para procesar el rendimiento de una semana en el matadero. Un poco más rápido que su sistema manual que había tomado dos semanas de trabajo por semana.
Luego pasamos a las máquinas Act Sirius, nuevamente programando en Basic (Microsoft 8KB Basic) que se instalaron en los clientes.
El Basic tenía números de línea pero había un juego de herramientas que podía renumerar los programas. Como recién había salido de Uni, donde había aprendido a Pascal, traté de escribir con el estilo más estructurado posible (tanto como sea posible en Básico), pero, por supuesto, se utilizaron Gotos y Gosubs.
Más tarde programé en 1983 en Dec Rainbow que usaba CBasic, un básico torpe compilado.
fuente
Había mucho software comercial escrito usando BASIC-PLUS en los sistemas PDP-11 . Recuerdo haber visto paquetes de análisis estadístico y contabilidad, además de una buena cantidad de material de automatización de laboratorio de alta gama (no estoy seguro de qué tan "comerciales" eran. Tenían a incluirse como parte de un paquete de instrumentos, así que no sé si se vendieran por separado). ISTR BASIC fue también uno de los idiomas principales para el desarrollo de aplicaciones HP 2000 , y fue el idioma principal (posiblemente el único) admitido para sus estaciones de trabajo HP 9800 series tempranas .
fuente
Los primeros productos de base de datos DOS de Alpha Software (alrededor de 1985) "Database Manager I", "Database Manager II" (DMB2) y "Alpha Three" se escribieron en BASIC y se compilaron con el compilador IBM BASIC. Trabajé en "Alpha Three". Toda la interfaz de usuario estaba en BASIC pero tenía un componente TSR (terminar y permanecer residente) escrito en C y ASM con el que BASIC se comunicaba mediante interrupciones. Los números de línea y los saltos de línea ocupaban un valioso espacio de segmento, por lo que el código estaba terriblemente aplastado e ilegible. Utilizamos variables compartidas y módulos intercambiados constantemente. Fue difícil hacer el trabajo. Sin embargo, todavía tratamos de ser lógicos con respecto a la organización, por lo que nuestra biblioteca de cadenas tenía todos los números de línea bajos de 60000. Una operación común como recortar una cadena se vería así:
$ S = $ INS; GOSUB 60210; $ INS = $ S;
Convertimos a todo C poco después del lanzamiento de "Alpha Three".
fuente
A principios de la década de 1980, la Fuerza Aérea de los EE. UU. Compró un montón de computadoras Cromemco S100 para su uso por escuadrones voladores como herramienta de planificación de vuelo.
El software de planificación de vuelo fue desarrollado utilizando BASIC por pilotos y navegadores de la Fuerza Aérea en el Tactical Air Warfare Center, ubicado en Eglin AFB, Florida .
En cuanto a trabajar en torno a "las deficiencias obvias" de BASIC, realmente no sabíamos nada mejor. Simplemente dar acceso físico a una computadora a una tripulación aérea parecía un salto increíble de tecnología en ese momento.
fuente
Creo que el Ultima original en Apple] [fue escrito en Applesoft Basic.
DEC utilizó su versión de BASIC para gran parte de RSTS y otros sistemas operativos que desarrolló.
fuente
El único temor que tuve, como programador de QuickBasic, hace 20 años, fue el mensaje "Sin memoria". ¡Pero esto solo me hizo un mejor programador! Aprendí a escribir código compacto y serio.
Solía usar QuickBasic para la programación industrial. En el mundo real (fábricas) no puedes decirle a tu jefe que "tomará medio año estar escrito en C"; solo puedes decir: "sí, jefe, estará listo la próxima semana". Sí, BASIC fue la solución práctica y rápida en el mundo real. No C o Pascal.
Uno de los programas que escribí en QuickBasic 4.5, una base de datos única, se vendió a pocas compañías y en realidad reemplazó la base de datos comercial que ya tenían (que probablemente estaba escrita en C o Pascal). Esta base de datos está en uso hasta hoy.
Un tema que quiero mencionar:
Todos pensamos que los nuevos métodos de programación son muy útiles . Pero en la vida real (industria), la mayoría de las máquinas, en estos días, son operadas por PLC modernos. Los programas generalmente se escriben en programación en escalera, que es millones de veces más primitiva que GW-BASIC. Como programador para PLC, puedo decir claramente: me encantaría reemplazar esta programación de escalera primitiva con lenguaje de alto nivel como GW-BASIC o incluso QuickBasic. (MEGA-BASIC es un dialecto que se usó para este propósito en el pasado).
Después de todo, ¿qué están haciendo la mayoría de las máquinas? interpretación de entradas y configuración de salidas. No necesita C / Assembly para eso, y no necesita Java. Simplemente necesita QuickBASIC para crear un código mantenible.
fuente
Absolutamente sí.
Hace mucho, mucho tiempo, trabajé para una empresa que vendía muchos millones de dólares en sistemas, principalmente a la industria de los concesionarios de automóviles. Estos sistemas ejecutaban el software BASIC en derivados de minicomputadora HP 21MX de 16 bits personalizados (antes de la era de los exitosos microprocesadores de 16 bits). Esta era una empresa mediana con docenas de programadores básicos. Utilizaron un dialecto BASIC antiguo que requería números de línea y solo permitía 286 nombres de variables posibles, y sin embargo, las soluciones proporcionaban toda la contabilidad e inventario de negocios (etc.) para empresas medianas. El grupo de I + D también escribió ensambladores, compiladores e incluso emuladores de hardware en Basic para ayudar a desarrollar su hardware de próxima generación.
Al intentar explicar lo que pensé que eran los beneficios de una programación más moderna y metodologías de diseño de hardware para un temporizador antiguo, me dijo que los buenos diseñadores particionaron, modularizaron y estructuraron adecuadamente las soluciones a sus problemas, incluso si no se construía una expresión directa de los mismos. en el lenguaje o las herramientas, mientras que, señaló, los malos diseñadores pueden producir basura no depurable sin importar el paradigma de desarrollo de moda "elegante" en el que trabajen.
fuente
El hecho es que la mayoría de los nuevos concesionarios de automóviles en los EE. UU. Usan programas BASIC para cotizar sus opciones de financiamiento y crear esas largas declaraciones de liquidación que obtiene cuando compra un automóvil. Los programas están escritos en versiones arcaicas de minicomputadoras de BASIC que se ejecutan bajo emulación en hardware moderno. Hay interfaces de usuario web injertadas, pero es BÁSICO hablar con un tty debajo.
Alrededor de 1980, el seguro de vida universal se convirtió en una moda instantánea en el negocio de seguros de vida. Todas las empresas querían venderlo de inmediato, y exigían que los valores de las cuentas se calcularan para cada póliza cada mes utilizando una combinación muy complicada de intereses y jumbo-jumbo actuarial. Como los grandes proyectos en los departamentos de procesamiento de datos tomarían alrededor de un año en ese entonces, muchas compañías entraron en producción con la mayor cantidad de Manzanas, PC y / o Tandy TRS-80 que necesitaban, haciendo la versión más complicada de lo que había estado en mainframes durante aproximadamente 20 años. Prácticamente todos estos fueron programados en BASIC. En su mayoría, el BASIC utilizaba coma flotante de precisión corta, por lo que millones de centavos de clientes se perdieron en el redondeo.
JPL tenía una versión de BASIC que también usó ampliamente hace unos 35 años. Se llamaba MBASIC, con la M que significa gestión, pero se usaba, entre otras cosas, para programar naves espaciales.
fuente
El muy popular sistema de punto de venta minorista 4680/4690 de IBM fue escrito en un dialecto llamado IBM 4680 BASIC . Trabajé en este sistema desde 1998-2002 para un importante minorista del Reino Unido.
Este sistema era muy popular, de acuerdo con el artículo de la wiki, todavía tenía el 12% de la cuota de mercado en 2005. El sistema todavía se está fortaleciendo hoy, las probabilidades de que la mayoría de las personas en el mundo occidental hayan utilizado indirectamente este sistema BASIC en las últimas semana.
fuente
Mire PICK o cualquiera de las otras bases de datos MultiValue. Todos confían en DataBasic como su idioma principal o único y tienen un uso significativo en el mercado vertical. Todavía ejecutamos un sistema que escribí para la evaluación comparativa de adquisiciones hace más de 20 años. Se ejecuta a aproximadamente 50k líneas de código.
fuente
Había una compañía llamada Softek en India en los años 80 que creó sus propias versiones de Wordstar, dBase y Lotus 1-2-3. Otro de sus productos fue un compilador BÁSICO.
Usando su propio CBASIC, crearon un paquete de contabilidad de doble entrada muy completo llamado SIMS-FA (Softek Financial Accounting).
fuente
¿Alguna? Si. ¿Muchos? No. Software educativo y mantenimiento de registros.
La era BÁSICA: ~ 1970-1990
Hasta aproximadamente 1990, las limitaciones excedieron las expectativas y evolucionaron con las necesidades de la industria. En su mayor parte, las necesidades de las empresas más grandes fueron analizadas por consultores y se reunieron con cualquier lenguaje que satisficiera la necesidad.
Al igual que hoy, donde las empresas tienen una idea más o menos desarrollada de lo que necesitan y se construye algún tipo de solución con VBA, y luego aprenden lo suficiente como para descubrir soluciones cliente-servidor más competentes, aplicaciones web e interfaces optimizadas con preparación de datos .
En la década de 1970, si una empresa normal pudiera equilibrar cuentas o registrar cifras de producción en la computadora sin el presupuesto de una corporación, sería un gran paso adelante de llevar libros, y si pudiera obtener un diagrama, sería fantástico.
En la década de 1980, si pudiera migrar algunos dibujos de productos a la computadora para hacerlos editables, eso también sería fantástico.
Ambos se podrían hacer con un lenguaje basado en intérpretes. Como las computadoras podían contener más datos, la complejidad requería compiladores, porque las CPU se quedaron atrás de la ley de Moore en cuanto al rendimiento de mezcla de datos sin procesar desde alrededor de 1977 hasta alrededor de 1987.
Pero hasta fines de la década de 1980, cuando las expectativas exigían más, los idiomas establecidos en la década de 1970 (complementados en casos excepcionales por Assembler y / o hardware personalizado como las placas FPU) hicieron todo el trabajo serio y comercial en las empresas con pocas excepciones. Cobol y Fortran seguían siendo el boleto en los mainframes. Solo las corporaciones podían permitirse tales, y las compañías serias hicieron el trabajo serio que pudieron con los programas internos de BASIC, y por un tiempo fue suficiente.
Los paquetes de software independientes para uso general, como procesadores de texto o diagramas de diagramas, aparecieron aproximadamente en este momento, cuando los sistemas operativos habían madurado en computadoras asequibles como objetivos para los compiladores, y surgió un almacenamiento que podía contener documentos y datos de "tamaño de empresa".
Pascal fue un gran contendiente aquí. Anteriormente, casi todo eso había sido escrito en Assembler. Finalmente, C vino de Unix y comenzó a usarse en PC.
fuente
En los días del Commmodore 64, parte del juego Gunship fue escrito en BASIC. Incluso podría editar el código, por lo que su helicóptero podría estar equipado cada vez que aterrice.
fuente
BBC BASIC se originó en BBC Micro , lanzado en el Reino Unido en 1981. Cuando llegó a la versión cinco, implementado en las computadoras RISC OS basadas en ARM de Acorn, se lo consideraba el BASIC más rápido del mundo. Su sintaxis fue avanzada para su época, incluyendo palabras clave estructurales como CASE y WHILE y funciones y procedimientos. (Incluso incluyó un ensamblador, originalmente para 6502 , y luego para ARM en las versiones RISC OS ).
Muchas aplicaciones de escritorio comerciales se escribieron usándolo, tal vez en gran parte porque proporcionaba un acceso conveniente a las llamadas SWI que utilizaba el sistema cooperativo WIMP. Fue lo suficientemente rápido como para que incluso se escribieran algunos juegos de arcade: Nevryon , un clon de tipo R, es uno de los que recuerdo especialmente cuando miré la fuente.
fuente
Los antiguos lenguajes de secuencias de comandos de la base de datos xBase (como en dBase II , dBase III + , Clipper, etc.) estaban bastante relacionados con los diversos BASIC no estándar de la época.
No se usa BASIC exactamente para trabajo comercial, pero tal vez lo suficientemente cerca.
fuente
sub
(una función / procedimiento con parámetros y variables locales) y más, y los números de línea eran opcionales. Borland Turbo Basic en 1985 tenía la mayoría de las características básicas estándar IIRC. Utilicé GFA Basic en el Atari ST bastante - también estructurado, de procedimiento, sin números de línea. Hubo un montón de conceptos básicos estructurados y de procedimiento en los años 80.La mayoría de los micros solo tenían herramientas básicas (ROM) o de desarrollo de ensamblador. Para los programas que no son críticos para la velocidad, BASIC se utilizó para muchas aplicaciones comerciales, así como para la mayoría de los proyectos internos de la empresa. Incluso cuando apareció CP / M , las únicas mejoras reales fueron la capacidad de manejar proyectos más grandes y usar el compilador básico de Microsoft (BASCOM). Mi propia experiencia con el microdesarrollo temprano fue la siguiente:
~ 1980 - Microsoft ROM básico en un Nascom 2 con un pequeño ensamblador. El desarrollo de aplicaciones comerciales incluyó un programa de devolución del IVA (impuesto sobre las ventas) y un programa de control de procesos (ambos en BASIC).
198? - Todavía uso BASIC, pero ahora también tenía Pascal (BLS - precursor de Borland Pascal ).
Mediados de la década de 1980: las PC comienzan a dominar y aparecen los primeros compiladores de C ( Hisoft y Mix). BASIC entra en declive (revivido más tarde en forma de zombie, por supuesto, por MS con Visual Basic ). GW-BASIC fue muy popular como herramienta de desarrollo interna. Numerosos paquetes comerciales (contabilidad, control de existencias, etc.) todavía se escribieron en BASIC.
Finales de la década de 1980: C se convierte en el principal lenguaje de desarrollo (¿después del lanzamiento de MSC 5 en 1986?). Microsoft y Borland dominan durante los próximos años ...
fuente