Een beetje over wat de schoolinformatica in de jaren '90 inhield en waarom alle programmeurs toen zelflerenden waren.

Waarop kinderen leerden programmeren
In het begin van de jaren '90 begonnen scholen in Moskou selectief klassen met computers uit te rusten. De ramen werden meteen voorzien van tralies en er kwam een zware met ijzer beklede deur. Er verscheen een informatica-docent (de belangrijkste persoon na de directeur), wiens voornaamste taak het was om ervoor te zorgen dat niemand iets aanraakte. Helemaal niets. Zelfs niet de ingang.
In de klas waren vaak systemen zoals de BK-0010 (in verschillende varianten) en de BK-0011M te vinden.

Foto genomen
Kinderen kregen uitleg over de algemene opbouw en een tiental commando's in BASIC, zodat ze lijnen en cirkels op het scherm konden tekenen. Voor de lagere en middenklassen was dat waarschijnlijk voldoende.
Er waren destijds aanzienlijke problemen met het opslaan van hun creaties (programma's). Meestal werden computers via monocontroller netwerken met een busstructuur en een overdrachtssnelheid van 57600 baud aan elkaar gekoppeld. Meestal was er maar ƩƩn schijfstation, en dat functioneerde vaak niet goed. Soms werkte het, soms niet, soms viel het netwerk uit, en soms werd de floppy niet gelezen.
Ik droeg toen dit creatie met een capaciteit van 360 kB bij me.

De kans dat ik mijn programma opnieuw van de schijf kon krijgen was ongeveer 50-70%.
Echter, het grootste probleem met al deze BK-computers waren de eindeloze systeembevriezingen.
Dit kon op elk moment gebeuren, of het nu tijdens het invoeren van code of tijdens het uitvoeren van een programma was. Een vastgelopen systeem betekende dat je 45 minuten tijd vergooid was, omdat je alles opnieuw moest doen, maar de resterende tijd van de les was daar niet meer genoeg voor.
Rond 1993 verschenen in sommige scholen en lycea normale klassen met 286-machines, en op sommige plaatsen stonden zelfs 386's. Qua programmeertalen waren er twee opties: waar BASIC eindigde, begon Turbo Pascal.
Programmeren in Turbo Pascal aan de hand van 'tankspellen'
In Pascal, children were taught to build loops, draw various functions, and work with arrays. At the physics-mathematics lyceum, where I spent some time, we had one informatics lesson per week. And for two years, it was quite boring. Naturally, I wanted to do something more serious than just outputting array values or some sinusoid onto the screen.
Tanks
Battle City was one of the most popular games on clone NES consoles (Dendy, etc.).

By 1996, the popularity of 8-bit consoles had passed, they had long been gathering dust in closets, and I thought it would be cool to create a clone of 'Tanks' for PC as something more ambitious. Next, I'll talk about how I had to twist and turn to create something with graphics, a mouse, and sound in Pascal.

You can only draw sticks and circles
Let's start with graphics.

In the basic version, Pascal allowed drawing some shapes, filling them in, and determining the colors of points. The most advanced procedures in the Graph module, which got us closer to sprites, are GetImage and PutImage. With their help, it was possible to capture a section of the screen into a previously reserved memory area and then use that chunk as a raster image. In other words, if you want to use certain elements or images repeatedly on the screen, you first draw them, copy them into memory, clear the screen, redraw the next one, and so on until you create the desired library in memory. Since everything happens quickly, the user doesn't notice these tricks.
The first module where sprites were used was the map editor.

It had a marked game field. A mouse click brought up a menu where one could choose from four obstacle options. Speaking of the mouse...
The mouse ā this is already the late 90s
Everyone had a mouse, of course, but until the mid-90s, they were mainly used in Windows 3.11, graphic suites, and a small number of games. In Wolf and Doom, people only played using the keyboard. And in the DOS environment, a mouse wasn't particularly needed. Therefore, Borland didn't even include the mouse handling module in the standard package. You had to look for it from acquaintances who shrugged their shoulders and exclaimed, 'Why do you need it?'
Maar het vinden van een module voor het muisinteractie is slechts de helft van de klus. Om met de muis op de schermknoppen te klikken, moeten ze worden getekend. Zowel in de niet-ingedrukte als ingedrukte versies. De bovenkant van de niet-ingedrukte knop is licht, terwijl eronder schaduw is. Bij de ingedrukte knop is dat precies andersom. En vervolgens moet alles drie keer op het scherm worden getekend (niet-ingedrukt, ingedrukt, en dan opnieuw niet-ingedrukt). Plus, vergeet niet om vertragingen in te stellen voor de weergave en de cursor te verbergen.

Bijvoorbeeld, de verwerking van het hoofdmenu in de code zag er zo uit:

Geluid ā alleen een pieper voor de PC Speaker.
Het geluid is een apart verhaal. In het begin van de jaren negentig waren de klonen van de Sound Blaster nog in de opkomst, en de meeste toepassingen werkten alleen met de ingebouwde luidspreker. Het maximale wat deze kon doen, was het tegelijkertijd afspelen van slechts ƩƩn toon. En precies dit kon Turbo Pascal doen. Via de procedure sound kon je verschillende frequenties laten 'piepen', wat voldoende was voor geluidseffecten van schoten en explosies, maar het voldeed niet voor de muzikale intro's, die toen populair waren. Uiteindelijk vonden we een vrij ingenieuze oplossing: in onze software-archief was er een 'exe'-bestand, ooit gedownload van een of andere BBS. Dit bestand kon wonderen verrichten ā het speelde ongecomprimeerde wav-bestanden af via de PC Speaker, en dit alles vanuit de opdrachtregel zonder interface. Wat je moest doen, was het aanroepen via de Pascal-procedure exec en ervoor zorgen dat deze constructie niet faalde.
Uiteindelijk verscheen er daverende muziek op de intro, maar er kwam iets grappigs uit voort. In 1996 had ik een systeem op een Pentium 75 die tot 90 was overgeklokt. Op dat systeem werkte alles prima. Maar op de universiteit, waar we in het tweede semester Pascal kregen, stonden er verouderde 'triple' systemen in het klaslokaal. In overleg met de docent nam ik naar de tweede les deze tanks mee om een examen te krijgen en daar niet meer terug te hoeven komen. En zo, na de lancering, kwam er een luide brul uit de speaker, vermengd met gorgelende keelgeluiden. Over het algemeen bleek dat de 33-megahertz 'triple' het niet aankon om die 'exe' normaal te draaien. Maar verder was alles in orde, afgezien van de vertraagde toetsregistratie die de gameplay verpestte, ongeacht de pc-prestaties.

Maar het hoofdprobleem ligt niet bij 'Pascal'.
In mijn opvatting was 'Tankies' het maximum dat je uit Turbo Pascal kon halen zonder assembler-invoegingen. De duidelijke nadelen van het eindproduct waren de trage toetsinvoer en de trage rendering van graphics. De situatie werd verergerd door het extreem beperkte aantal externe bibliotheken en modules. Je kon ze op ƩƩn hand tellen.
Maar vooral de aanpak in het schoolonderwijs ergerde me. Kinderen kregen destijds niet te horen over de voordelen en mogelijkheden van andere talen. In de lessen werd er vrijwel onmiddellijk gesproken over begin, println en if, waardoor de leerlingen gevangen zaten in de basic-pascal-paradigma. Beide talen kunnen uitsluitend als opvoedkundig worden beschouwd. Hun 'gevechts'toepassing is een zeldzaam fenomeen.
Waarom kinderen nepprogrammeertalen moeten leren is voor mij een raadsel. Ze zijn misschien visueler. Variaties van 'Basic' worden hier en daar gebruikt. Maar in elk geval, als iemand erover denkt zijn toekomst aan programmeren te wijden, zal hij andere talen vanaf nul moeten leren. Waarom zou je kinderen niet dezelfde educatieve taken geven, maar dan op een normaal platform (taal), waarmee ze zich verder zelfstandig zouden kunnen ontwikkelen?
Over taken gesproken. Op school en aan de universiteit waren ze altijd abstract: iets berekenen, een functie bouwen, iets tekenen. Ik heb op drie verschillende scholen gezeten, daarnaast hadden we 'Pascal' in het eerste jaar van de universiteit, en de docenten stelden nooit een realistische praktische taak voor. Bijvoorbeeld om een notitieboek te maken of iets anders nuttigs. Alles was gefingeerd. En als iemand maandenlang lege taken oplost die vervolgens in de prullenbak belanden⦠Over het algemeen komen mensen al opgebrand van de universiteit.
Trouwens, in het derde jaar van dezelfde universiteit werd 'plus' toegevoegd aan ons programma. Het leek een goede zaak, maar de mensen waren moe, verzadigd met nepprogrammatuur en 'educatieve' taken. Enthousiasme zoals de eerste keer was er bij niemand meer.
P.S. Ik heb gegoogeld over welke talen momenteel op scholen in informatica-lessen worden onderwezen. Alles is zoals 25 jaar geleden: Basic, Pascal. Sporadisch wordt Python onderwezen.
Bron: habr.com
