Claro. Antes das coisas do Altair / MITS / SWTPC / Kim / Sinclair / Pet / RadioScrap / OSI / Apple acontecerem, havia uma pequena e deliciosa máquina conhecida como IBM 5100 . Ele tinha o BASIC em ROM , uma grande unidade de fita cassete (ou duas), 8 KB de memória. uma tela de 24 linhas e uma impressora, tudo por um mísero US $ 10.000 - uma ordem de magnitude mais barata do que o seu mini típico. Originalmente construído para cientistas ( APL na ROM também era uma opção), mas alguns tipos de contabilidade descobriram , e começou uma mania: cada pequena empresa queria um. Com software personalizado, claro. O 5110 seguido, com as unidades de fita substituídas por 8 "disquetes.
Qualquer software comercial? Galoons .
Você pode dizer contabilidade geral, folha de pagamento, contas a pagar, contas a receber, controle de estoque e faturamento? Eu estive lá, fiz isso - em BASIC. Contas de serviços públicos, inventário de carros novos e usados, coleta de caminhões de lixo e agendamento de entrega de bebidas? Sim - básico. Quer rastrear minério de ferro das minas nos trens para os navios ... BÁSICO. Tudo o que não foi levantado chão provavelmente foi feito em BASIC. Comercialmente, quero dizer. (Porque RPG II não conta; -).
Como alguém trabalhou com 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 para ter 16. E duas unidades de fita, se possível, porque a teoria do autômato está de lado, mesclar a classificação em uma única fita é, bem, um pouco lento.
Oh, desculpe - você quis dizer as limitações do BASIC.
Bem, você teve que gerenciar seus recursos com bastante cuidado - coisas como números de linha - porque você não queria ficar sem eles; Uma verdadeira dor no lado de trás é ter que renumerar uma seção inteira e digitar tudo de volta, sem perder acidentalmente uma ou duas linhas de código.
Nah - estou brincando. Na verdade, não tivemos esse problema até que micro computadores pessoais aparecessem, com um interpretador BASIC que não podia renumerar por si só.
Também usamos modularidade - onde você chama um novo programa, executa-o até que ele saia e retorna ao programa de chamada. Um gosub em esteróides (porque você tem mais memória para usar), mas muito mais lento (porque demorou um tempo para a máquina encontrar o programa na fita, e carregá-lo, e então rebobinar e encontrar o programa original e carregá-lo 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ê DEVE sempre mirar em um GOSUB em uma linha de comentário que diz o que essa rotina faz, e você DEVE fazer o mesmo para um GOTO quando possível. Coisas assim. Oh e programação estruturada , 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.