Um pouco sobre como era a "ciência da computação" na escola nos anos 90 e por que todos os programadores eram então autodidatas.

O que foi ensinado a programar crianças
No início dos anos 90, as escolas de Moscou começaram a equipar seletivamente computadores com aulas. Os quartos foram imediatamente colocados com grades nas janelas e uma pesada porta cravejada de ferro. Um professor de informática apareceu de algum lugar (ele parecia o camarada mais importante depois do diretor), cuja principal tarefa era garantir que ninguém tocasse em nada. Nada mesmo. Até a porta da frente.
Nas classes mais frequentes, foi possível conhecer os sistemas BK-0010 (em suas variedades) e BK-0011M.
Foto tirada daqui.As crianças foram informadas sobre o dispositivo geral, bem como sobre uma dúzia de comandos BASIC, para que pudessem desenhar linhas e círculos na tela. Para as classes júnior e média, provavelmente isso foi suficiente.
Com a preservação de suas criações (programas), houve problemas separados. Na maioria das vezes, os computadores que usam controladores monocanais eram conectados em rede com uma topologia de barramento comum e uma velocidade de transmissão de 57.600 baud. O passeio, por via de regra, era um, e muitas vezes não dava certo. Funciona, não funciona, a rede trava, o disquete não é legível.
Levei essa criação de 360 kB comigo.

As chances de eu retirar o meu programa dela novamente eram de 50 a 70%.
No entanto, o principal problema de todas essas histórias com os computadores BK foi o congelamento interminável.
Isso pode acontecer a qualquer momento, seja um conjunto de códigos ou uma execução de programa. Um sistema pairando significava que você vivia em vão por 45 minutos, porque Eu tive que fazer tudo de novo, mas o tempo restante da aula não foi suficiente para isso.
Mais perto de 1993, em escolas e liceus separados, aulas normais com 286 carros apareceram e, em alguns lugares, havia até "treshki". Em termos de linguagens de programação, havia duas opções: onde "Básico" terminava, "Turbo Pascal" começava.
Programação em "Turbo Pascal" no exemplo de "tanques"
Em Pascal, as crianças foram ensinadas a criar loops, desenhar todos os tipos de funções e trabalhar com matrizes. No liceu de física e física, onde "vivi" de uma vez, eles atribuíram um par por semana à ciência da computação. E por dois anos esse tédio estava lá. Claro, eu queria fazer algo mais sério do que exibir os valores de uma matriz ou de algum sinusóide na tela.
Tanchiki
Battle City foi um dos jogos de consoles mais populares da NES (Dendy et al.).

Em 1996, a popularidade dos bits de 8 cue passou, eles estavam acumulando poeira nos armários por um longo tempo, e me pareceu legal fazer um clone do Tanchik para PC como algo em grande escala. Além disso, sobre como era necessário esquivar-se para cortar algo com gráficos, mouse e som em Pascal.

Você só pode desenhar paus e círculos
Vamos começar com os gráficos.

Na versão básica, Pascal permitiu desenhar algumas formas, pintar e definir as cores dos pontos. Os procedimentos mais avançados no módulo Graph que nos aproximam de sprites são GetImage e PutImage. Com a ajuda deles, foi possível capturar uma parte da tela em uma área de memória reservada anteriormente e depois usar esta peça como uma imagem de bitmap. Em outras palavras, se você quiser reutilizar alguns elementos ou imagens na tela, primeiro desenhe-os, copie-os para a memória, apague a tela, desenhe o próximo e assim por diante até criar a biblioteca desejada na memória. Como tudo acontece rapidamente, o usuário não percebe esses truques.
O primeiro módulo, onde sprites foram usados, é um editor de mapas.

Tinha um campo de jogo marcado. Um clique do mouse exibia um menu onde se podia escolher uma das quatro opções para obstáculos. Falando do mouse ...
O mouse já é o fim dos anos 90
É claro que todos tinham mouses, mas até meados dos anos 90 eles os usavam apenas no Windows 3.11, pacotes gráficos e um pequeno número de jogos. Em Wolf and Doom, apenas teclados foram cortados. E no ambiente DOS, o mouse não era particularmente necessário. Portanto, na Borland, o módulo do mouse nem sequer foi incluído no pacote padrão. Ele deveria ter sido procurado por conhecidos que deram de ombros e exclamou: "Que diabos ele é para você?"
No entanto, encontrar um módulo para pesquisar um mouse é apenas metade da batalha. Para clicar nos botões da tela com o mouse, eles precisavam ser desenhados. Além disso, em duas versões (pressionada e não pressionada). Um botão não pressionado tem um topo claro e uma sombra embaixo. Pressionou o contrário. E depois desenhe na tela três vezes (não pressionado, pressionado, e novamente não pressionado). Além disso, não esqueça de colocar atrasos na tela e ocultar o cursor.

Por exemplo, o processamento do menu principal no código ficou assim:

Som - apenas PC Speaker
Uma história separada com som. No início dos anos 90, os clones do Sound Blaster estavam se preparando para sua marcha vitoriosa, e a maioria dos aplicativos funcionava apenas com o alto-falante embutido. O máximo de suas capacidades é a reprodução simultânea de apenas um tom. E foi exatamente isso que o Turbo Pascal fez. Através do procedimento sonoro, foi possível "guinchar" com diferentes frequências, o que é suficiente para sons de tiros e explosões, mas para um protetor de tela musical, como estava na moda na época, tudo isso não se encaixava. Como resultado, foi encontrada uma solução muito complicada: em seu próprio arquivo de software, havia um "executável" baixado uma vez de alguns BBS. Ele sabia como fazer milagres - tocar wavs não compactados no PC Speaker, e fez isso na linha de comando e não tinha uma interface real. Tudo o que era necessário era chamá-lo através do procedimento exec Pascal e garantir que essa construção não falhasse.
Como resultado, o fundo do poço Mouzon apareceu na faixa da cabeça, mas uma coisa engraçada saiu com ele. Em 1996, eu tinha um sistema Pentium 75, rachado para 90. Tudo funcionou bem nele. Na universidade, onde fomos designados a Pascal pelo segundo semestre, na sala de aula houve batalhas experientes. De acordo com o professor, arrastei esses tanques para a segunda lição, a fim de obter um crédito e não voltar para lá. E assim, depois de começar pelo alto-falante, um rugido alto foi misturado com sons guturais borbulhantes. Em geral, o DX "treshka" de 33MHz não era capaz de girar normalmente o mesmo "executável". Mas, caso contrário, estava tudo bem. Claro, sem contar a pesquisa inibida do teclado, que estragou toda a jogabilidade, independentemente do desempenho do PC.
Mas o principal problema não está em Pascal
No meu entendimento, "Tanchiki" é o máximo que você pode extrair do Turbo Pascal sem as inserções do assembler. Entre as falhas óbvias do produto final estão as pesquisas lentas do teclado e a renderização gráfica lenta. A situação foi agravada pelo número extremamente pequeno de bibliotecas e módulos de terceiros. Eles poderiam ser contados nos dedos de uma mão.
Mas acima de tudo, fiquei chateado com a abordagem na educação escolar. Ninguém então falou às crianças sobre as vantagens e possibilidades de outras línguas. Nas aulas, quase imediatamente eles começaram a falar sobre begin, println e if, o que trancou os alunos dentro do paradigma BASIC-Pascal. Ambos os idiomas podem ser considerados exclusivamente educacionais. Seu uso de "combate" é uma ocorrência rara.
Por que ensinar aos alunos do ensino médio idiomas falsos é um mistério para mim. Deixe-os ser mais visuais. Deixe que as variações básicas sejam usadas em alguns lugares. Mas, em qualquer caso, se uma pessoa decide conectar seu futuro à programação, ela terá que aprender outras línguas do zero. Então, por que as crianças não deveriam definir as mesmas tarefas educacionais, mas apenas em uma plataforma (linguagem) normal, na qual elas pudessem se desenvolver por conta própria?
Falando de tarefas. Na escola e no instituto, eles sempre foram abstratos: contar alguma coisa, construir uma função, desenhar alguma coisa. Estudei em três escolas diferentes, além de termos Pascal no meu primeiro ano no instituto, e os professores nunca colocaram nenhum problema real aplicado. Por exemplo, faça um caderno ou outra coisa útil. Tudo foi rebuscado. E quando uma pessoa resolve tarefas vazias por meses, que depois vão para a cesta ... Em geral, as pessoas já estão queimadas do instituto.
Aliás, no terceiro ano da mesma universidade, eles colocaram “vantagens” em nosso programa. Parece uma coisa boa, mas as pessoas estavam cansadas, fartos de falsificações e tarefas de "treinamento". Entusiasmo, como pela primeira vez, não foi observado em ninguém.
PS Pesquisou no Google o tópico de quais idiomas são ensinados nas escolas nas aulas de ciência da computação. Assim como 25 anos atrás: Básico, Pascal. Python é o único intercalado.