Танчики на Паскале: как учили детей программированию в 90-х и что с этим было не так

от автора

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


На чем учили программировать детей

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


Фото взято отсюда

Детям рассказывали про общее устройство, а также с десяток команд «Бейсика», чтобы могли нарисовать на экране линии и кружки. Для младших и средних классов, наверное, этого было достаточно.

С сохранением своих творений (программ) тогда были отдельные проблемы. Чаще всего компьютеры с помощью контроллеров моноканала объединяли в сеть с топологией «общая шина» и скоростью передачи 57600 бод. Дисковод, как правило, был один, и с ним частенько неладилось. То работает, то не работает, то сеть подвисла, то дискетка не читается.

Я тогда таскал с собой вот это творение емкостью 360 кБ.

Шансы на то, что в очередной раз я вытащу с нее свою программку, были процентов 50-70.

Однако главной проблемой всех этих историй с компьютерами «БК» были бесконечные зависания.

Это могло произойти в любой момент, будь то набор кода или выполнение программы. Зависшая система означала, что 45 минут времени ты прожил зря, т.к. приходилось делать все с начала, но оставшегося времени урока для этого было уже не достаточно.

Ближе к 1993 году в отдельных школах и лицеях появлялись нормальные классы с 286-ми машинами, а местами стояли даже «трешки». По части языков программирования было два варианта: там, где заканчивался «Бейсик», начинался «Турбо Паскаль».

Программирование на «Турбо Паскале» на примере «танчиков»

На «Паскале» детей учили строить циклы, отрисовывать всякие функции, работать с массивами. В физмат-лицее, где я одно время «обитал», на информатику отводили одну пару в неделю. И два года там была вот эта вот скукотища. Разумеется, хотелось сделать что-то посерьезнее, чем вывод на экран значений массива или некой синусоиды.

Танчики

Battle City была одной из самых популярных игр на приставках клонах NES (Dendy и др.).

В 1996-м популярность 8-биток прошла, они давно пылились в шкафах, и мне показалось прикольным в качестве чего-то масштабного сделать именно клон «Танчиков» для ПК. Далее как раз о том, как тогда надо было извернуться, чтобы запилить на «Паскале» что-то с графикой, мышкой и звуком.

Рисовать можно только палочки и кружочки

Начнем с графики.

В базовом варианте «Паскаль» позволял рисовать некоторые фигуры, закрашивать и определять цвета точек. Самые продвинутые процедуры в модуле Grapf, приближающие нас к спрайтам, это 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-мегагерцовой «трешке» DX оказалось не под силу нормально крутить тот самый «экзешничек». Но в остальном все было нормально. Конечно, не считая заторможенного опроса клавиатуры, который портил весь геймплей вне зависимости от производительности ПК.

Но основная проблема не в «Паскале»

В моем понимании «Танчики» — это максимум, что можно было выжать из Turbo Pascal без ассемблерных вставок. Из явных недостатков конечного продукта – медленный опрос клавиатуры и медленная отрисовка графики. Усугубляло ситуацию крайне мало число сторонних библиотек и модулей. Их можно было сосчитать по пальцам одной руки.

Но больше всего меня расстраивал подход в школьном образовании. Детям никто тогда не рассказывал о преимуществах и возможностях других языков. На уроках практически сразу начинали говорить про begin, printlm и if, что запирало учеников внутри бейсико-паскалевской парадигмы. Оба эти языка можно считать исключительно учебными. Их «боевое» применение — редкое явление.

Зачем учить детей фейковым языкам – для меня загадка. Пусть они более наглядные. Пусть разновидности «Бейсика» кое-где используются. Но, в любом случае, если человек задумает связать свое будущее с программированием, ему придется учить с нуля другие языки. Так почему бы детям не ставить те же учебные задачи, но только уже на нормальной платформе (языке), в рамках которой они могли бы развиваться дальше самостоятельно?

Кстати о задачах. В школе и институте они всегда были абстрактные: посчитать то-то, построить функцию, нарисовать что-то. Я учился в трех разных школах, плюс у нас был «Паскаль» на первом курсе института, и ни разу преподаватели не ставили сколь-нибудь реальной прикладной задачи. Например сделать записную книжку или еще что-то полезное. Все было надуманное. А когда человек месяцами решает пустые задачи, которые потом идут в корзину… В общем, из института люди уже выходят выгоревшими.

Кстати, на третьем курсе того же вуза нам в программу поставили «плюсы». Вроде и дело благое, но народ был уставший, наевшийся фейков и «учебных» задач. Энтузиазма, как в первый раз, ни у кого не наблюдалось.

P.S. Погуглил на тему того, какие языки сейчас преподают в школах на уроках информатики. Все как и 25 лет назад: Basic, Pascal. Единичными вкраплениями идет Python.


ссылка на оригинал статьи https://habr.com/ru/post/464237/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *