Atualizando o livro mais influente da era BASIC

De certa forma, esses dois livros são responsáveis por toda a minha carreira profissional.

Com os primeiros computadores, o usuário não inicializava em uma área de trabalho sofisticada ou em uma tela repleta de aplicativos que podiam ser facilmente cutucados com o dedo. Não, esses computadores eram inicializados na linha de comando.

A partir daí, se o senhor tivesse sorte, poderia ter uma unidade de fita cassete. Se o senhor soubesse os comandos certos, poderia digitá-los para carregar programas da fita cassete. Mas essa era uma opção adicional cara nos primeiros computadores pessoais. Para muitos de nós, se quiséssemos que o computador fizesse alguma coisa, tínhamos que digitar programas inteiros de livros como 101 jogos básicos de computador, à mão… assim.

Sim, acredite ou não, por volta de 1983, essa era a nossa ideia de diversão. Não, nós não saímos muito. O livro em si era uma espécie de compilação dos maiores sucessos de jogos coletados do livro seminal de Ahl, o Creative Computing, de Ahl, na década de 1970:

Assim que Ahl decidiu deixar a DEC, ele começou a preparar o terreno para a Creative Computing. Ele anunciou a intenção de publicar a revista no NCC em junho de 1974 e, nos meses seguintes, entrou em contato com possíveis autores, obteve listas de discussão, providenciou a composição e a impressão e começou a organizar centenas de outros detalhes.

Além disso, ele também mudou sua família para Morristown, NJ, e se estabeleceu em seu novo emprego na AT&T. Ele tinha pouco capital disponível, então o substituiu por “capital suado”. Ele editou artigos enviados e escreveu outros. Ele especificava o tipo de letra, tirava fotos, obtinha livros de “clip art”, desenhava ilustrações e fazia o layout das placas. Escreveu e preparou os folhetos de circulação, colou etiquetas, separou e empacotou as correspondências.

Em outubro de 1974, quando chegou a hora de especificar a primeira tiragem, ele tinha apenas 600 assinantes. Mas Ahl não tinha a intenção de publicar apenas 600 edições. Ele pegou todo o dinheiro que havia recebido, dividiu-o pela metade e imprimiu 8.000 exemplares com ele. Essas edições saíram das prensas em 31 de outubro de 1974. Ahl relata a sensação de euforia no trajeto até a gráfica, substituída pelo desânimo quando viu duas caixas de revistas e se perguntou como conseguiria tirá-las do local. Três viagens depois, seu porão e sua garagem estavam cheios de 320 pacotes de 25 revistas cada. Ele entregou os 600 exemplares para assinantes nos correios no dia seguinte, mas levou quase três semanas para colar etiquetas à mão nos outros 7.400 exemplares e enviá-los, sem solicitação, para bibliotecas e sistemas escolares de todo o país.

Eu também adorava a computação criativa, mas era um pouco anterior à minha época:

  • 1971 – Ahl transfere os programas do FOCAL para o BASIC.
  • 1973 – 101 jogos de computador BASIC é publicado pela primeira vez pela DEC.
  • 1974 – Ahl funda a Computação criativa e adquire os direitos do livro da DEC.
  • 1977 – a “trindade” de Apple II 🖥️, PET ️🖥️, e TRS-80 🖥️ microcomputadores são lançados para o público, todos com BASIC incorporado, a preços que as pessoas comuns podiam pagar 🙌 O senhor é o primeiro a ser lançado no mercado.
  • 1978 – é lançada uma segunda edição de BASIC Computer Games, desta vez publicada pelo próprio Ahl.

Como o senhor pode ver, não é possível que as pessoas comuns em 1973-1976 estivessem fazendo muita coisa com os programas BASIC, pois elas não tinham microcomputadores capazes de executar BASIC para comprar! Demorou um pouco para que os computadores pessoais baratos chegassem ao público em geral, o que nos leva a aproximadamente 1984, quando as sequências começaram a aparecer.

Houve um em 2010, com o SmallBasic, uma tentativa pouco convicta de modernizar esses primeiros programas BASICmas não achei que essas portas fizeram muito para atualizar o código e, em geral, tinham pouca relevância para as práticas modernas de código. O senhor pode comparar o BASIC Civil War original de 1973 com a porta SmallBasic 2010 para ver o que quero dizer:

Certamente podemos fazer um pouco melhor do que simplesmente remover os números das linhas? Que tal nosso velho amigo, a subrotina, simplesmente a maior invenção da ciência da computação? O senhor não o vê em lugar algum. 🤔

Portanto, foi com bastante entusiasmo que entrei em contato com a David H. Ahl, o autor, e pediu permissão para criar um site que tentasse realmente atualizar todos esses antigos programas BASIC.

Felizmente, a permissão foi concedida. É difícil subestimar o que o o quanto esse livro foi importante para toda uma geração de programadores. Em um determinado momento, havia mais cópias desse livro impressas do que computadores pessoais, ponto final!

… em 1973, a DEC publicou uma antologia, 101 BASIC Computer Games (101 jogos de computador BASIC). O livro foi rapidamente impresso em uma segunda edição, totalizando 10.000 exemplares vendidos. “O número de livros era muito maior do que o número de computadores existentes, de modo que as pessoas compravam três, quatro, cinco exemplares para cada computador.”

O livro passou a ser o primeiro livro de informática a vender um milhão de exemplares. Um legado e tanto.

Acho que devemos ao mundo atualizar esse livro usando o senhor linguagens modernas e seguras em termos de memória que incorporem o espírito original do BASIC, e práticas modernas de programação, inclusive subrotinas.

Então, vamos fazer isso. Por favor junte-se a nós no GitHub, onde estamos atualizando os 101 jogos BASIC originais em 10 linguagens de script de uso geral e com segurança de memória:

  • Java / Kotlin
  • Python
  • C#
  • VB.NET
  • JavaScript
  • Rubi
  • Perl
  • Lua

(Edição: a partir de março de 2022, nós a) oferecemos Kotlin como uma alternativa ao Java, b) removemos o Pascal, pois não podemos garantir a segurança da memória, e o substituímos pelo Rust, que pode muito bem, e c) adicionamos Lua, que apenas ficou entre os 20 primeiros no TIOBE e atende plenamente aos critérios de segurança de scripts e memória).

Agora, lembre-se de que esses são muito jogos primitivos da década de 1970. Eles não ganharão nenhum prêmio por jogabilidade ou sofisticação de programação. Mas eles são artefatos preciosos dos primórdios da computação que merecem ser preservados para as gerações futuras, incluindo o maravilhoso arte original de George Beker.

Precisamos da ajuda dos senhores para fazer isso direitoe em conjunto e de forma colaborativa, como em todos os projetos de programação modernos. Imagine que todos nós estamos digitando esses programas simultaneamente on-line, em todo o mundo, em vez de ficarmos isolados em nosso quarto em 1984, amaldiçoando o inevitável erro de digitação que cometemos em algum lugar ao digitar o código à mão, fora do livro🤬.

Obrigado, Sr. Ahl. E um grande obrigado a todos que contribuíram para este projeto quando ele estava em fase beta, anunciado apenas no Twitter:

Para incentivar novas contribuições, até o final de 2022, para cada programa funcional enviado em cada um dos 10 idiomas indicados, doarei US$ 5 para Girls Who Code (Meninas que Codificam). Antes de começar, por favor leia as diretrizes no readmee se o senhor tiver dúvidas, examine este tópico de discussão. E, acima de tudo, lembre-se, esse material é para ser divertido.

(Não quero ser “aquele cara”, por isso também estou procurando coproprietários de projetos que possam ajudar a ter e organizar esse esforço. Se esse for um projeto que o realmente lhe agrada, mostre-me o que o senhor pode fazer e vamos trabalhar juntos como uma equipe).

Talvez, como resolução de ano novo, o senhor possa reservar algum tempo para participar do nosso projeto de atualização de um livro clássico de programaçãoum dos livros mais influentes da história da computação – para 2022 e além! 🎉