A little about what school "computer science" was like in the 90s, and why all the programmers were then exclusively self-taught.
What were taught to program children
In the early 90s, Moscow schools began to selectively equip computers with classes. The rooms were immediately placed with bars on the windows and a heavy iron-studded door. An informatics teacher appeared from somewhere (he looked like the most important comrade after the director), whose main task was to ensure that no one touched anything. Nothing at all. Even the front door.
In the classes most often it was possible to meet the BK-0010 (in its varieties) and BK-0011M systems.Photo taken from here.
The children were told about the general device, as well as about a dozen BASIC commands, so that they could draw lines and circles on the screen. For the lower and middle classes, probably this was enough.
With the preservation of their creations (programs) then there were separate problems. Most often, computers using monochannel controllers were networked with a common bus topology and a transmission speed of 57,600 baud. The drive, as a rule, was one, and it often did not go well with it. It works, it doesn’t work, the network hangs, the diskette cannot be read.
I then carried this 360 kB creation with me.
The chances that once again I will get my program out of it were 50-70 percent.
However, the main problem of all these stories with the BK computers was endless freezes.
This could happen at any time, whether it be a set of code or a program execution. A hovering system meant that you lived in vain for 45 minutes, because I had to do it all over again, but the remaining lesson time was not enough for this.
Closer to 1993, normal classes with 286 cars appeared in separate schools and lyceums, and in some places there were even “three rubles”. In terms of programming languages, there were two options: where "Basic" ended, "Turbo Pascal" began.
Programming on "Turbo Pascal" on the example of "tanks"
At Pascal, children were taught to build loops, draw all sorts of functions, and work with arrays. In the physics and physics lyceum, where I "lived" at one time, they assigned one pair a week to computer science. And for two years this boredom was there. Of course, I wanted to do something more serious than displaying the values of an array or some sinusoid on the screen.
Battle City was one of the most popular NES consoles games (Dendy et al.).
In 1996, the popularity of 8-cue balloons passed, they were gathering dust in cabinets for a long time, and it seemed cool to make just a little Tanchiki clone for PC as something large-scale. Further, just about how then it was necessary to dodge in order to gash something on the Pascal with graphics, a mouse and sound.
You can only draw sticks and circles
Let's start with the graphics.
In the basic version, Pascal allowed you to draw some shapes, paint over and define the colors of the dots. The most advanced procedures in the Graph module that bring us closer to sprites are GetImage and PutImage. With their help, it was possible to capture a portion of the screen into a previously reserved memory area and then use this piece as a bitmap image. In other words, if you want to reuse some elements or images on the screen, you first draw them, copy them to memory, erase the screen, draw the next one and so on until you create the desired library in memory. Since everything happens quickly, the user does not notice these tricks.
The first module, where sprites were used, is a map editor.
It had a marked playing field. A mouse click brought up a menu where one could choose one of four options for obstacles. Speaking of the mouse ...
The mouse is already the end of the 90s
Of course, everyone had mice, but until the mid-90s they only used them in Windows 3.11, graphics packages, and a small number of games. In Wolf and Doom, only keyboards were cut. And in the DOS environment, the mouse was not particularly needed. Therefore, in Borland, the mouse module was not even included in the standard package. He had to be looked for by acquaintances who shrugged their shoulders and exclaimed, “What the hell is he for you?”
However, finding a module for polling a mouse is only half the battle. To click on the screen buttons with the mouse, they had to be drawn. Moreover, in two versions (pressed and not pressed). An unpressed button has a light top and a shadow under it. Pressed the other way around. And then draw on the screen three times (not pressed, pressed, then again not pressed). Plus, do not forget to put delays on the display, well, and hide the cursor.
For example, processing the main menu in the code looked like this:
Sound - PC Speaker only
A separate story with sound. In the early nineties, Sound Blaster clones were just getting ready for their victorious march, and most applications only worked with the built-in speaker. The maximum of its capabilities is the simultaneous reproduction of only one tone. And that’s exactly what Turbo Pascal did. Through the sound procedure, it was possible to “squeak” with different frequencies, which is enough for the sounds of shots and explosions, but for a music screen saver, as it was fashionable then, this all did not fit. As a result, a very tricky solution was found: in its own archive of software, there was an "executable" downloaded once from some BBS. He knew how to work miracles - to play uncompressed wavs through PC Speaker, and he did it from the command line and did not have the actual interface. All that was needed was to call it through the Pascal exec procedure and make sure that this construction did not crash.
As a result, the downhole Mouzon appeared on the headband, but a funny thing came out with it. In 1996, I had a Pentium 75 system, cracked to 90. Everything worked fine on it. At the university, where we were assigned Pascal for the second semester, in the classroom there were experienced battles. By agreement with the teacher, I dragged these tanks to the second lesson in order to get the test and not go there again. And so, after starting from the speaker, a loud roar was mixed up with gurgling guttural sounds. In general, the 33MHz “treshka” DX was not able to normally twist the same “executable”. But otherwise everything was fine. Of course, not counting the inhibited polling of the keyboard, which spoiled the entire gameplay, regardless of the performance of the PC.
But the main problem is not in Pascal
In my understanding, "Tanchiki" is the maximum that you could squeeze out of Turbo Pascal without assembler inserts. Of the obvious shortcomings of the final product are slow keyboard polls and slow graphics rendering. The situation was aggravated by the extremely small number of third-party libraries and modules. They could be counted on the fingers of one hand.
But most of all I was upset by the approach to school education. Nobody then told the children about the advantages and possibilities of other languages. In the lessons, almost immediately they started talking about begin, println and if, which locked students inside the BASIC-Pascal paradigm. Both of these languages can be considered exclusively educational. Their “combat” use is a rare occurrence.
Why to teach high school students fake languages is a mystery to me. Let them be more visual. Let the basic variations be used in some places. But, in any case, if a person decides to connect his future with programming, he will have to learn other languages from scratch. So why should children not set the same educational tasks, but only on a normal platform (language), within which they could develop further on their own?
Speaking of tasks. At school and institute, they were always abstract: to count something, build a function, draw something. I studied at three different schools, plus we had Pascal in the first year of the institute, and never did the teachers set any real applied problem. For example, make a notebook or something else useful. Everything was contrived. And when a person solves empty tasks for months, which then go to the basket ... In general, people are already burnt out of the institute.
By the way, in the third year of the same university, “pluses” were put in our program. It seems like a good thing, but the people were tired, fed up with fakes and "training" tasks. Enthusiasm, as for the first time, was not observed in anyone.
PS Google on the topic of what languages are taught in schools at computer science lessons. Just like 25 years ago: Basic, Pascal. Python is a single splash.