Няколко думи за това какво представляваше училищната "информатика" през 90-те и защо всички програмисти тогава бяха изключително самоучки.

На какво учеха децата да програмират
В началото на 90-те московските училища започнаха да оборудват класни стаи с компютри по избор. В помещенията веднага поставяха решетки на прозорците и тежка обита желязна врата. Някак си се появяваше учител по информатика (изглеждаше като най-важния човек след директора), чиято основна задача беше да следи, за да не пипа никой нищо. Наистина нищо. Дори входната врата.
В класовете най-често можеха да се срещнат системи БК-0010 (в различните му вариации) и БК-0011М.

Снимка взета
На децата им разказваха за общото устройство, както и за десетина команди на "Бейсик", за да могат да нарисуват линии и кръгове на екрана. За по-малките и средните класове вероятно това е било достатъчно.
Съществуваха специални проблеми с опазването на своите творения (програми). Най-често компютрите чрез контролери с единичен канал бяха свързани в мрежа с топология "обща шина" и скорост на предаване от 57600 бод. Дисководът обикновено беше един и често имаше проблеми с него. Понякога работеше, друг път не, понякога мрежата виси, или дискета не се чете.
Тогава носех с мен това творение с капацитет 360 кБ.

Шансът в очередният път да получа моята програмка от него беше 50-70 процента.
Но главният проблем на всички тези истории с компютрите "БК" бяха безкрайните зависвания.
Това можеше да се случи във всеки момент, било при въвеждане на код или изпълнение на програма. Зависналата система означаваше, че 45 минути време неуспешно бяха минали, тъй като трябваше да правиш всичко отначало, но оставащото време за урока вече не бе достатъчно.
Към 1993 година в отделни училища и лицеи започнаха да се появяват нормални класове с 286 компютри, а на места имаше и "трешки". По отношение на езиците за програмиране бяха налични два варианта: там, където свършваше "Бейсик", започваше "Турбо Паскал".
Програмиране на "Турбо Паскал" на примера на "танчета"
На "Паскал" децата учеха да строят цикли, да рисуват различни функции, да работят с масиви. В физико-математическата гимназия, където известно време "обитавам", по информатика се отделяше един час седмично. И две години там беше точно това скучно занимание. Разбира се, искаше се да направим нещо по-сериозно от извеждането на екрана на стойности на масив или на някаква синусоида.
Танкове
Battle City беше една от най-популярните игри на конзолите клони на NES (Dendy и др.).

През 1996 г. популярността на 8-битките премина, те отдавна прашаха в шкафовете, и ми се стори интересно в качеството на нещо мащабно да направя именно клон на "Танкове" за ПК. По-късно точно за това как тогава трябваше да се измисли, за да се напише на "Паскал" нещо с графика, мишка и звук.

Може да рисуваш само пръчици и кръгчета.
Нека започнем с графиката.

В основния вариант "Паскал" позволяваше да се рисуват някои фигури, да се оцветяват и да се определят цветове на точки. Най-напредналите процедури в модула Graph, които ни приближават до спрайтовете, са GetImage и PutImage. С тяхна помощ можеше да се захваща в предварително резервирана зона на паметта участък от екрана и после да се използва този фрагмент като растрово изображение. С други думи, ако искате многократно да използвате на екрана някакви елементи или изображения, първо ги рисувате, копирате в паметта, изтривате екрана, рисувате следващото и така докато не създадете в паметта необходимата библиотека. Тъй като всичко става бързо, потребителят не забелязва тези трикове.
Първият модул, в който влязоха спрайтове – редактор на карти.

В него имаше обозначено игрово поле. Щракването с мишката предизвикваше меню, където може да се избере един от четирите варианта на препятствия. За мишката...
Мишката – това вече е края на 90-те.
Мишки, разбира се, имаха всички, но до средата на 90-те години те се използваха само в Windows 3.11, графични пакети и в още малък брой игри. В Wolf и Doom се играеше само с клавиатура. И в DOS среда мишката не беше особено нужна. Затова в Borland модулът за работа с мишка дори не беше включен в стандартната доставка. Трябваше да се търси при познати, които развиваха ръце и в отговор викаха "а за какво ти е?".
Въпреки това, намирането на модул за опрос на мишката е само половината от работата. За да може мишката да натиска на екранните бутони, те трябваше да бъдат нарисувани. Освен това в два варианта (натиснат и ненатиснат). При ненатиснатия бутон горната част е светла, а под него е сянка. При натиснатия обратното. И след това трябваше да се нарисува на екрана три пъти (ненатиснат, натиснат, после отново ненатиснат). Плюс да не забравим да поставим закъснения за показването и да скрием курсора.

Например, обработката на главното меню в кода изглеждаше така:

Звук – само зумер PC Speaker
Отделна история е звукът. В началото на деветдесетте години клоновете на Sound Blaster едва започваха победното си шествие, а повечето приложения работеха само с вградения говорител. Най-много, което можеше да направи, е да възпроизвежда един тон едновременно. И точно това позволяваше Turbo Pascal. Чрез процедурата sound можеше да „попищява“ с различни честоти, което беше достатъчно за звуците на изстрели и експлозии, но за музикалната заставка, както тогава беше на мода, това не беше подходящо. В крайна сметка се намери доста хитро решение: в собствения архив със софтуер беше открит „екзешничек“, свален някога от някаква BBS-ка. Той правеше чудеса – възпроизвеждаше несжатите wav-ове през PC Speaker, и то от командния ред, без собствен интерфейс. Всичко, което трябваше, е да го извикаме чрез паскалевската процедура exec и да следим, за да не се срути конструкцията.
В крайна сметка впечатляваща музика на заставката се появи, но след това излезе смешен случай. През 1996 година имах система на Pentium 75, разкочегарен до 90. На нея всичко работеше прекрасно. В университета, обаче, където ни сложиха Pascal за втория семестър, в учебния клас стояха стари „трешки“. По уговорка с преподавателя доведох на втория урок тези танкове, за да получа зачет и да не ходя повече там. И ето, след стартиране от говорителя се чу силен рев, смесен с бълбукащи гърлени звуци. В общи линии, 33-мегагерцовата „трешка“ не успя да върти нормално този „екзешничек“. Но в противен случай всичко беше наред. Разбира се, освен забавения опрос на клавиатурата, който разваляше целия геймплей независимо от производителността на ПК.

Но основната проблема не е в „Паскале“.
Според мен, "Танчиците" са максимумът, който можеше да се извлече от Turbo Pascal без асемблерни вмъквания. Ясните недостатъци на крайния продукт включват бавно опитване на клавиатурата и бавна визуализация на графиката. Ситуацията се усложняваше от крайно малкия брой странични библиотеки и модули. Можеха да се изброят на пръстите на едната ръка.
Но най-много ме разочарова подходът в училищното образование. На децата никой не им разказваше за предимствата и възможностите на други езици. На уроците почти веднага започваха да говорят за begin, println и if, което заключваше учениците в бейсико-паскалната парадигма. И двата тези езика може да се считат изключително учебни. Неговото "бойно" приложение е рядко явление.
Защо да учим децата на фалшиви езици – за мен е загадка. Нека те да са по-показни. Нека разновидности на "Бейсик" да се използват тук-там. Но във всеки случай, ако човек реши да свърже бъдещето си с програмирането, ще трябва да учи от нулата други езици. Та защо не поставим на децата същите учебни задачи, но на нормална платформа (език), в рамките на която те да могат да се развиват нататък сами?
Между другото за задачите. В училище и института те винаги бяха абстрактни: да се сметне нещо, да се изгради функция, да се нарисува нещо. Учих в три различни училища, плюс имахме "Паскал" на първи курс на института, и нито веднъж преподавателите не поставяха някаква реална практически задача. Примерно да направя записна книжка или нещо полезно. Всичко беше измислено. А когато човек месеци наред решава пустени задачи, които после отиват в кофата… В общи линии, от института хората излизат вече изчерпани.
На трети курс на същия вуз ни включиха "плюсове" в програмата. Изглежда и е добро начинание, но хората бяха уморени, преситени от фалшиви и "учебни" задачи. Нямаше ентусиазъм, както преди.
P.S. Проверих какви езици в момента се преподават в училищата на часовете по информатика. Всичко е като преди 25 години: Basic, Pascal. Единствено на малки вкрапвания идва Python.
Източник: habr.com
