Muitos de nós, inclusive eu, iniciamos a vida de programação com programas escritos em computadores domésticos , algo 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
Obviamente, o BASIC baseado em número de linha era propenso à criação de código spagetti, também porque a maioria dos dialetos do BASIC perdia declarações estruturais como WHILE
, fazer tudo, menos o FOR
loop com IF
, GOTO
e GOSUB
. Estou falando de dialetos do BASIC antes de 1991, quando o QBASIC e o Visual Basic apareceram.
Embora os dialetos do BASIC possam ter promovido o mau estilo entre os aspirantes a programadores, houve projetos comerciais maiores criados em um dialeto do BASIC? Se sim, como eles conseguiram conviver e contornar as deficiências óbvias?
Por "sério", quero dizer:
Were those BASIC dialects only used to teach aspiring programmes bad style
Hum ... É um estilo ruim agora, mas não era naquela época.I'm seriously pissed off that this question was closed during the "History" contest.
Você perdeu uma grande oportunidade de obter algumas visualizações extras para a pergunta, trazendo-a para o Meta.Respostas:
Certo. Antes do acontecimento do Altair / MITS / SWTPC / Kim / Sinclair / Pet / RadioScrap / OSI / Apple, havia uma pequena e deliciosa máquina conhecida como IBM 5100 . Tinha BASIC em ROM , uma grande unidade de fita cassete (ou duas), 8 KB de memória. uma tela de 24 linhas e uma impressora, por apenas US $ 10.000 - uma ordem de magnitude mais barata que o seu mini típico. Originalmente construído para cientistas (o APL na ROM também era uma opção), mas alguns tipos de contabilidade o descobriram e começaram uma mania: toda pequena empresa queria um. Com software personalizado, é claro. O 5110 seguiu isso, com as unidades de fita substituídas por disquetes de 8 ".
Algum software comercial? Galoons .
Você pode dizer contabilidade, folha de pagamento, contas a pagar, contas a receber, controle de estoque e faturamento? Eu estive lá, fiz isso - no BASIC. Contas de serviços públicos, estoque de carros novos e usados, coleta de caminhões de lixo e agendamento de entrega de bebidas? Sim - BÁSICO. Deseja rastrear minério de ferro de minas em trens para navios ... BASIC. Tudo o que não foi elevado provavelmente estava sendo feito no BASIC. Comercialmente, quero dizer. (Porque o RPG II não conta ;-).
Como se resolveu as limitações?
Bem, a primeira coisa que você fez foi enviar o cliente de volta à IBM para obter mais memória, porque quem poderia escrever algo sério em 8 KB? Você simplesmente tinha que ter 16. E duas unidades de fita, se possível, porque, à parte a teoria dos autômatos, a classificação por mesclagem em uma única fita é bem lenta.
Oh, desculpe - você quis dizer as limitações do BASIC.
Bem, você tinha que gerenciar seus recursos com muito cuidado - coisas como números de linha - porque não queria ficar sem esses; É uma verdadeira dor de cabeça ter que renumerar uma seção inteira e digitar tudo de volta, sem perder acidentalmente uma ou duas linhas de código.
Nah - só brincando. Na verdade, não tivemos esse problema até aparecerem computadores domésticos, com um intérprete BASIC que não podia renumerar sozinho.
Também usamos a modularidade - onde você chamava um novo programa, o executava até o encerramento e voltava ao programa de chamada. Um gosub com esteróides (porque você tem mais memória para usar), mas bem mais lento (porque demorou um tempo para a máquina encontrar o programa na fita e carregá-lo, depois retroceder e encontrar o programa original e carregar esse de volta...). Muito parecido com um fork e exec, mas sem o fork, apenas melhor porque todo o espaço de memória foi compartilhado.
O uso rigoroso de convenções também ajudou - você sabe, como "você sempre deve direcionar um GOSUB para uma linha de comentários que diga o que essa rotina faz, e você deve fazer o mesmo para um GOTO sempre que possível. Coisas assim. Ah, e estruturar programação , um pouco mais tarde - "por convenção" novamente.
Alguns até foram um pouco ao extremo: OAOO , YAGNI , TSTTCPW , emparelhamento, refatorar sem piedade, esse tipo de coisa. Não por esses nomes, é claro. (Veja também: Eclesiastes ;-)
Os dias de glória.
fonte
O primeiro software em que trabalhei foi um programa GW-BASIC de 8k linhas que a empresa escreveu nos anos 80 para usar o cálculo de transferência de calor para dimensionar e precificar equipamentos de caldeiras. Embora o código fosse completamente incompreensível, ele conseguiu funcionar tão bem que eles o usavam há mais de 20 anos.
Essa era a força do BASIC que um engenheiro mecânico com um manual de referência poderia realmente escrever software utilizável de qualidade (na época). Antes do BASIC e da prevalência do PC, tal coisa seria inédita. Você precisaria contratar uma equipe de engenheiros de computação e possivelmente operadores de computadores para programar e trabalhar em um mainframe compartilhado. Tudo isso teria sido muito complexo para o típico engenheiro mecânico perceber em um curto espaço de tempo.
Portanto, certamente o BASIC foi muito útil para além dos entusiastas do computador doméstico; essa foi a primeira introdução de muitas empresas no campo de criação de software personalizado internamente por um preço acessível, sem equipes de especialistas.
fonte
Sim, havia vários produtos comerciais e outros desenvolvimentos "sérios" realizados no BASIC. Para entender o porquê, você precisa entender o contexto das décadas de 1970 e 1980, quando o BASIC cresceu em mini- e microcomputadores.
Naquela época, as máquinas eram positivamente magras pelos padrões de hoje. As CPUs tinham clock de alguns MHz (geralmente muito menos para microcomputadores) e tinham menos memória do que seria ocupada pelo HTML necessário para renderizar esta página. Para implantar um produto, era necessário usar as ferramentas disponíveis, que eram montagem nua ou, em microcomputadores, o intérprete BASIC enviado na ROM (geralmente 16K em um espaço de endereço de 64K) com o sistema . Havia outros idiomas disponíveis, mas muitos não tinham todos os recursos estruturados que tomamos como garantidos. Isso tinha muito a ver com o fato de a memória ser escassa *, nenhuma era virtual, exceto em sistemas de ponta e geralmente não havia o suficiente para armazenar um compilador para uma linguagem mais sofisticada. Com recursos tão limitados, "sério"
Seu argumento de que os fabricantes de computadores domésticos antigos deveriam conhecer melhor e fornecer uma linguagem estruturada simplesmente não funciona nesse contexto. Simplesmente não iria acontecer com a tecnologia disponível a um preço que as pessoas poderiam suportar.
Como contornamos as deficiências do idioma era simples: não as viamos dessa maneira e concluímos o trabalho com o que estava disponível. O ANSI Minimal BASIC está estruturado de maneira semelhante à linguagem assembly, na medida em que você obtém os mesmos tipos de chamadas simples de ramificação e sub-rotina, mas cabe a você garantir que as estrelas estejam alinhadas corretamente. A única exceção é a
FOR..NEXT
construção usada para fornecer loop. Basicamente, se você queria desenvolver algo no BASIC e fazer um bom trabalho, teve que planejar e entender a estrutura de seus programas com o mesmo cuidado que se estivesse escrevendo em montagem. As ferramentas de depuração disponíveis eram muito primitivas, portanto, em essência, você precisava agir em conjunto se quisesse que seus programas funcionassem e fossem mantidos.Sim, havia muito espaguete na época, mas ainda tenho que ver um idioma em que é impossível escrever código incorreto.
* A memória ficou em torno de US $ 750-1.000 por MB no início dos anos 80. Ajustado pela inflação, são US $ 1.600-2.200 em dólares de 2010. Nesse mesmo ano, o custo por megabyte foi de cerca de US $ 0,03.
fonte
Meu primeiro trabalho de programação 100%, na década de 1980, estava trabalhando em um pacote de contabilidade de mercado vertical originalmente escrito em GW-BASIC . Ele foi portado para o QuickBASIC 3.0, mas manteve quase todas as falhas associadas aos primeiros dialetos do BASIC. Havia toneladas de GOTOs e muita estrutura ruim. Havia cerca de uma dúzia de módulos (estoque, contabilidade, etc.) e o programa foi vendido por cerca de US $ 1000 a US $ 2500 por módulo, mais contratos de suporte anual. A receita da empresa ficou na faixa de US $ 15 a US $ 25 milhões por ano.
Quanto a como viver com deficiências, muitas limitações foram contornadas usando linguagem de máquina ou MASM . Era comum usar comandos PEEK e POKE para inserir linguagem de máquina nos programas BASIC. Escrevi programas MASM (e mais tarde C) para estender o programa e adicionar coisas como suporte rudimentar a bancos de dados, comunicações e "gráficos" de texto.
fonte
Em computadores domésticos mais antigos, como o C64 ou seus antecessores, existiam muitos programas BASIC e também alguns comerciais. Mas "grande" raramente era possível, pois com <64kB de RAM, gravar programas BASIC "grandes" não é realmente fácil. Se você quisesse resolver as limitações da máquina, normalmente precisava sair do BASIC, a "linguagem de alto nível" e usar o assembler.
Portanto, a resposta para sua pergunta é "provavelmente não muitas", mas não pelos motivos que você tem em mente (como "muito propenso a erros / não estruturado" etc.).
A propósito: AFAIK, o famoso compilador PETSpeed BASIC foi escrito em BASIC (compilado consigo mesmo, é claro).
fonte
Toda a linha de contabilidade da Peachtree Software (contas a receber, pagar, etc.) foi toda escrita (e ainda pode ser, pelo que sei) no BASIC. Quando o IBM PC foi lançado, passei muitas noites longas depurando e corrigindo seu código para clientes que compraram um IBM Personal Computer e os pacotes Peachtree para fazer os livros para suas pequenas empresas.
fonte
Meu primeiro trabalho foi em 1981, programando o Apple IIs em Basic no escritório da Price Waterhouse (Pre Coopers) em sua consultoria de gestão em Belfast, Irlanda do Norte. Uma equipe de dois / três de nós desenvolveu e instalou sistemas em clientes, incluindo uma livraria e um matadouro. Era um sistema de modelagem financeira, efetivamente uma planilha Visicalc muito complexa (50 folhas, 3.000 variáveis) transformada em um grande programa básico. Foram necessários dois dias em um sistema Apple II com 4 unidades de disco para processar o rendimento de uma semana no matadouro. Um pouco mais rápido que o sistema manual deles, que levara duas semanas para cada semana.
Em seguida, passamos para as máquinas Act Sirius, programando novamente no Basic (o Microsoft 8KB Basic) que foram instalados nos clientes.
O Basic tinha números de linha, mas havia um kit de ferramentas que poderia renumerar programas. Quando saí da Uni, onde havia aprendido Pascal, tentei escrever no estilo estruturado possível (o máximo que puder no Basic), mas é claro que Gotos e Gosubs foram usados.
Mais tarde eu programei em 1983 no Dec Rainbow, que usava o CBasic, um básico compilado desajeitado.
fonte
Havia muitos softwares comerciais escritos usando o BASIC-PLUS nos sistemas PDP-11 . Lembro-me de ver análises estatísticas e pacotes de contabilidade, além de uma boa quantidade de material de automação de laboratório de alta qualidade (não tenho certeza de quão "comerciais" eram. Eles costumavam ser incluídos como parte de um pacote de instrumentos, então não sei se eles foram vendidos separadamente.). O ISTR BASIC também foi um dos idiomas principais para o desenvolvimento de aplicativos HP 2000 e foi o idioma principal (possivelmente apenas) suportado pelas primeiras estações de trabalho da série HP 9800 .
fonte
Os primeiros produtos de banco de dados DOS da Alpha Software (por volta de 1985) "Database Manager I", "Database Manager II" (DMB2) e "Alpha Three" foram escritos em BASIC e compilados com o compilador IBM BASIC. Eu trabalhei no "Alpha Three". Toda a interface do usuário estava no BASIC, mas tinha um componente principal de TSR (encerrar e permanecer residente) escrito em C e ASM com o qual o BASIC se comunicava por meio de interrupções. Os números e as quebras de linha ocupavam um espaço valioso no segmento, de modo que o código era terrivelmente esmagado e ilegível. Usamos variáveis compartilhadas e trocamos módulos constantemente. Foi difícil fazer o trabalho. No entanto, ainda tentamos ser lógicos em relação à organização, de modo que nossa biblioteca de strings estava no baixo número de linhas de 60000. Uma operação comum como aparar uma string seria semelhante a:
$ S = $ INS; GOSUB 60210; $ INS = $ S;
Nós convertemos para todos os C logo após o lançamento de "Alpha Three".
fonte
No início dos anos 80, a Força Aérea dos EUA comprou um monte de computadores de ônibus Cromemco S100 para serem utilizados pelos esquadrões voadores como uma ferramenta de planejamento de voo.
O software de planejamento de vôo foi desenvolvido usando o BASIC por pilotos e navegadores da Força Aérea no Tactical Air Warfare Center, localizado na Base Aérea de Eglin, na Flórida .
No que se refere às "deficiências óbvias" do BASIC, realmente não sabíamos melhor. Apenas dar acesso físico a um computador a uma tripulação parecia um salto incrível de tecnologia na época.
fonte
Eu acredito que o Ultima original na Apple] [foi escrito em Applesoft Basic.
O DEC usou sua versão do BASIC para grande parte do RSTS e outros sistemas operacionais desenvolvidos.
fonte
O único medo que tive, como programador do QuickBasic, há 20 anos, era a mensagem "Memória insuficiente". Mas isso só me fez um programador melhor! Eu aprendi a escrever código compacto e sério.
Eu costumava usar o QuickBasic para programação industrial. No mundo real (fábricas), você não pode dizer ao seu chefe "vai demorar meio ano para ser escrito em C"; você só pode dizer: "sim chefe, estará pronto na próxima semana". Sim, o BASIC era a solução prática e rápida no mundo real. Não C ou Pascal.
Um dos programas que escrevi no QuickBasic 4.5, um banco de dados exclusivo, foi vendido para poucas empresas e, na verdade, substituiu o banco de dados comercial que eles já possuíam (o que provavelmente foi escrito em C ou Pascal). Este banco de dados está em uso até hoje.
Um assunto que quero mencionar:
todos pensamos que novos métodos de programação são muito úteis . Porém, na vida real (indústria), a maioria das máquinas atualmente é operada pelo PLC moderno. Os programas geralmente são escritos em programação ladder, que é milhões de vezes mais primitiva que o GW-BASIC. Como programador de CLPs, posso dizer claramente: eu adoraria substituir essa programação primitiva de ladder por uma linguagem de alto nível como GW-BASIC ou mesmo QuickBasic. (MEGA-BASIC é um dialeto usado para esse fim no passado).
Afinal, o que a maioria das máquinas está fazendo? interpretar entradas e definir saídas. Você não precisa de C / Assembly para isso e não precisa de Java. Você precisa do QuickBASIC para criar um código de manutenção.
fonte
Absolutamente sim.
Há muito tempo, trabalhei para uma empresa que vendia muitos milhões de dólares em sistemas, principalmente para a indústria de revendedores de automóveis. Esses sistemas executavam o software BASIC em derivados de minicomputadores HP 21MX de 16 bits personalizados (antes da era dos microprocessadores de 16 bits bem-sucedidos). Era uma empresa de tamanho médio com dezenas de programadores básicos. Eles usaram um dialeto BASIC antiquado que exigia números de linha e permitia apenas 286 nomes de variáveis possíveis, e, no entanto, as soluções forneciam toda a contabilidade e inventário de negócios (etc.) para empresas de médio porte. O grupo de pesquisa e desenvolvimento também escreveu montadores, compiladores e até emuladores de hardware no Basic para ajudar a iniciar o desenvolvimento de seu hardware de próxima geração.
Ao tentar explicar o que eu pensava serem os benefícios de metodologias mais modernas de programação e design de hardware para um cronômetro antigo, ele me disse que bons designers particionavam, modulavam e estruturavam adequadamente as soluções para seus problemas, mesmo que a expressão direta deles não fosse construída. na linguagem ou nas ferramentas, enquanto, observou ele, os maus designers podem produzir lixo indiscutível, independentemente do paradigma de desenvolvimento da moda "sofisticado" em que trabalham.
fonte
O fato é que a maioria dos novos revendedores de carros nos EUA hoje em dia usa os programas BASIC para citar suas opções de financiamento e criar as longas declarações de liquidação que você recebe quando compra um carro. Os programas são escritos em versões arcaicas de minicomputadores do BASIC, executadas sob emulação no hardware moderno. Existem UIs da Web enxertadas, mas é o BASIC falando com um tty por baixo.
Por volta de 1980, o seguro de vida universal tornou-se uma moda instantânea nos negócios de seguros de vida. Toda empresa queria vendê-lo imediatamente, e exigia que os valores das contas fossem calculados para cada política todos os meses, usando uma combinação muito complicada de juros e muco-jumbo atuarial. Como os grandes projetos nos departamentos de processamento de dados demoravam cerca de um ano na época, muitas empresas entraram em produção com o número de maçãs, PCs e / ou Tandy TRS-80 necessários para fazer a versão mais complicada do que estivera nos mainframes por aproximadamente 20 anos. Praticamente tudo isso foi programado no BASIC. O BASIC usava principalmente o ponto flutuante de precisão curta, de modo que milhões de centavos dos clientes se perdiam no arredondamento.
O JPL também possuía uma versão do BASIC usada há cerca de 35 anos. Foi chamado MBASIC, com o M representando a gerência, mas foi usado, entre outras coisas, para programar naves espaciais.
fonte
O imensamente popular sistema de ponto de venda de varejo 4680/4690 da IBM foi escrito em um dialeto chamado IBM 4680 BASIC . Trabalhei nesse sistema de 1998 a 2002 para um grande varejista do Reino Unido.
Esse sistema era muito popular, de acordo com o artigo da wiki que ainda detinha 12% de participação de mercado em 2005. O sistema ainda está forte hoje, as chances são boas de que a maioria das pessoas no mundo ocidental tenha usado indiretamente esse sistema alimentado por BASIC nos últimos semana.
fonte
Procure no PICK ou em qualquer outro banco de dados MultiValue. Todos eles contam com o DataBasic como idioma principal ou único e têm um uso vertical significativo do mercado. Ainda executamos um sistema que escrevi para o benchmarking de compras há mais de 20 anos. Executa cerca de 50 mil linhas de código.
fonte
Havia uma empresa chamada Softek na Índia nos anos 80 que criou suas próprias versões do Wordstar, dBase e Lotus 1-2-3. Outro de seus produtos foi um compilador BASIC.
Usando seu próprio CBASIC, eles criaram um pacote contábil de entrada dupla muito abrangente chamado SIMS-FA (Softek Financial Accounting).
fonte
Qualquer? Sim. Muitos? Não. Software educacional e manutenção de registros.
A era BÁSICA: ~ 1970-1990
Até cerca de 1990, as limitações excederam as expectativas e evoluíram com as necessidades do setor. Na maioria das vezes, as necessidades das grandes empresas foram analisadas por consultores e atendidas com qualquer idioma que atendesse às necessidades.
Como hoje, em que as empresas têm uma idéia mais ou menos desenvolvida do que precisam e têm algum tipo de solução criada com o VBA, aprendem o suficiente para descobrir soluções cliente-servidor mais competentes, aplicativos da web e interfaces otimizadas com a limpeza de dados .
Na década de 1970, se uma empresa comum pudesse equilibrar contas ou registrar números de produção no computador sem o orçamento de uma corporação, seria um grande passo para manter livros, e se você pudesse obter um diagrama, isso seria fantástico.
Nos anos 80, se você pudesse migrar alguns desenhos de produtos para o computador para torná-los editáveis, isso também seria fantástico.
Ambos podem ser feitos com uma linguagem baseada em intérpretes. Como os computadores podiam armazenar mais dados, a complexidade exigia compiladores, porque as CPUs ficaram atrás da lei de Moore no desempenho de embaralhamento de dados brutos, de 1977 a 1987.
Mas até o final da década de 1980, quando as expectativas exigiam mais, os idiomas estabelecidos na década de 1970 (complementados em casos raros pelo Assembler e / ou hardware personalizado como placas FPU) fizeram todo o trabalho comercial sério em empresas com poucas exceções. Cobol e Fortran ainda eram os ingressos nos mainframes. Somente as empresas podiam pagar por isso, e as empresas sérias faziam o trabalho sério que podiam com os programas BASIC internos, e por um tempo isso era suficiente.
Pacotes de software autônomos para uso geral, como processadores de texto ou plotadoras de diagrama, surgiram por volta dessa época, quando os sistemas operacionais amadureceram em computadores acessíveis como alvos para compiladores, e surgiu o armazenamento que poderia conter documentos e dados "do tamanho da empresa".
Pascal foi um dos principais candidatos aqui. Anteriormente, quase tudo isso havia sido escrito no Assembler. Finalmente, C veio do Unix e começou a ser usado em PCs.
fonte
Na época do Commmodore 64, a parte Gunship foi escrita em BASIC. Você pode até editar o código, para que seu helicoper seja equipado sempre que aterrissar.
fonte
O BBC BASIC originou-se no BBC Micro , lançado no Reino Unido em 1981. Quando chegou à versão cinco, implementada nos computadores RISC OS baseados em ARM da Acorn, era considerado o BASIC mais rapidamente interpretado no mundo. Sua sintaxe foi avançada na época, incluindo palavras-chave estruturais como CASE e WHILE e funções e procedimentos. (Inclusive incluiu um assembler, originalmente para 6502 e, em seguida, para ARM nas versões do sistema operacional RISC .)
Muitos aplicativos comerciais de desktop foram escritos usando-o, talvez em grande parte porque fornecia acesso conveniente às chamadas SWI que o sistema WIMP cooperativo usava. Foi rápido o suficiente para que houvesse até mesmo alguns jogos de arcade escritos usando-o - Nevryon , um clone do tipo R, é um dos que me lembro particularmente de procurar na fonte.
fonte
As antigas linguagens de script do banco de dados xBase (como no dBase II , dBase III + , Clipper etc.) estavam intimamente relacionadas aos vários BASICs não padrão da época.
Não é exatamente o BASIC usado para trabalhos comerciais, mas talvez perto o suficiente.
fonte
sub
(uma função / procedimento com parâmetros e variáveis locais) e muito mais, e tornava os números de linha opcionais. O Borland Turbo Basic em 1985 possuía a maioria dos recursos básicos padrão IIRC. Usei bastante o GFA Basic no Atari ST - também estruturado, processual, sem números de linha. Havia muitos procedimentos básicos estruturados e processuais nos anos 80.A maioria dos micros tinha apenas ferramentas básicas de desenvolvimento (ROM) ou montadoras. Para programas não críticos à velocidade, o BASIC foi usado para muitas aplicações comerciais, bem como para a maioria dos projetos internos da empresa. Mesmo quando o CP / M apareceu, os únicos aprimoramentos reais foram a capacidade de lidar com projetos maiores e usar o compilador básico da Microsoft (BASCOM). Minha própria experiência com o microdesenvolvimento inicial foi a seguinte:
~ 1980 - Microsoft ROM básico em um Nascom 2 com um pequeno montador. O desenvolvimento de aplicativos comerciais incluiu um programa de devolução de IVA (imposto sobre vendas) e um programa de controle de processo (ambos no BASIC).
198? - Ainda usando BASIC, mas agora eu também tinha Pascal (BLS - precursor de Borland Pascal ).
Meados dos anos 80 - Os PCs começaram a dominar e os primeiros compiladores C apareceram ( Hisoft e Mix). O BASIC entra em declínio (revivido mais tarde na forma de zumbi, é claro pelo MS com Visual Basic ). O GW-BASIC era muito popular como uma ferramenta de desenvolvimento interna. Inúmeros pacotes comerciais (contabilidade, controle de estoque, etc.) ainda estavam escritos em BASIC.
Final dos anos 80 - C se torna a principal linguagem de desenvolvimento (após o lançamento do MSC 5 em 1986?). Microsoft e Borland dominam nos próximos anos ...
fonte