Няколко думи за това какво представляваше училищната „информатика“ през 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
