Четверть века назад в издательстве Addison-Wesley вышел мой первый CBT (Computer Based Training) - учебник по Visual C++ 5 [1].
Это был один из первых в Западной Европе фундаментальных мультимедиальных образовательных проектов.
Четверть века - это повод вспомнить, как этот проект появился на свет, а также поразмышлять о том, как развилась отрасль за эти годы. А заодно и попытаться найти ответ на вопрос - в какой мере компьютеры и Интернет могут помочь обучению. Например - обучению языкам программирования и связанным с ними технологиям.
Как всё начиналось
В 1995 году, когда эта история начиналась, PC - персональные компьютеры прочно заняли своё место не только на рабочих столах учёных, преподавателей и сотрудников многих фирм. Многие семьи в развитых странах мира могли себе позволить купить PC для использования дома.
Интернет тогда уже был, но в относительно зачаточной фазе. Google с их революционной технологией поиска информации в Интернете, социальные сети, гиганты аудио- и видео-стриминга и электронной торговли тогда ещё не существовали.
Люди слушали музыку с купленных в магазине CD и читали книги, напечатанные на бумаге, которые тоже покупали в магазинах. Для этого существовали специализированные магазины, занимавшие в центрах больших городов огромные здания.
Я любил заходить в такие магазины, особенно в их компьютерные разделы, которые тоже поражали своими размерами. По каждому языку программирования, по каждому более-менее развитому инструменту типа позабытого ныне всеми HTML-редактора FrontPage, в таких отделах можно было найти десятки книг.
Одним словом, голод на книги и учебники по ИТ (хотя тогда этот термин особо не использовался) был огромен и предложение было не меньшим.
Многие книги по программированию выходили вместе с вложенными в них CD с исходным кодом рассматривавшихся в книге примеров или целых проектов.
Термин «мультимедиа» к тому времени уже устоялся. Но компьютеры были ещё слабоваты для показа качественного видео. Поэтому мультимедиальность приложений состояла в хитроумной комбинации звуковых и графических эффектов.
В магазинах уже попадались обучающие программы, (их тогда уже называли CBT), но это была в основном «кустарщина» на базе экзотических инструментов и с очень узким тематическим покрытием.
Крупные, солидные издательства не решались инвестировать в рынок CBT, опасаясь больших первоначальных затрат и риска невозврата вложенных денег.
Поэтому описываемый здесь проект и можно считать одним из первых фундаментальных CBT-проектов в Западной Европе. Фундаментальным я называю его потому, что тогда мы замахнулись на почти полное тематическое покрытие Visual C++ 5 в одном курсе, а также потому, что за проект взялось, наверное самое солидное на тот момент техническое издательство в мире - Addison-Wesley.
Финансовые аспекты этого проекта остались мне неизвестны. Но рискну предположить, что Addison-Wesley решилась на этот проект потому, что основную часть первоначальных затрат взял на себя Университет г. Хагена и, кроме того, какая-то часть тиража (насколько я знаю, со значительной скидкой от официальной цены в 78 немецких марок) разошлась между студентами.
Цена в 78 марок по тем временам была немалой, если учесть, что в то время можно было купить крупноформатные, толстые, с шикарнейшими иллюстрациями, фантастического полиграфического качества альбомы по искусству и истории за 20-30 марок.
За несколько месяцев до описываемых событий судьба занесла меня в вышеупомянутый город Хаген, где я нашёл в местном Университете мою первую работу после переезда в Германию. За несколько первых месяцев работы Университете я, практически не зная немецкого языка (как - об этом отдельная история) - написал и запрограммировал с помощью очень интересного инструмента ToolBook одну из глав мультимедиального CBT по курсу физики. Инструмент ToolBook оказался слишком неуклюж и медленен для симулирования необходимых физических процессов, описываемых в порученной мне главе. Поэтому мне пришлось «подковать блоху» и запрограммировать DLL (Dynamic-link Library) для решения этой проблемы.
Это обстоятельство, видимо, и сподобило Профессора, руководившего факультетом, на котором я работал, на вопрос, который он однажды неожиданно задал мне: « А могли бы Вы, герр Сиротин, написать мультимедиальный учебник для студентов Университета по Visual C++?“.
А я к тому времени уже несколько лет мечтал создать какой-нибудь «говорящий учебник». Какие-то движения в этом направлении мы проделали еще в СССР с нашим электронным журналом «Инпек» (но это - другая история). Поэтому я сходу ответил профессору, что такой учебник написать и запрограммировать на ToolBook я возьмусь.
Немного о забытых героях
На этой фотографии вы видите двух основателей фирмы Микрософт - Пола Аллена и Билла Гейтса. Перечислять их надо именно в этой последовательности, поскольку на момент создания будущего мирового монополиста Пол был несравненно компетентнее своего младшего партнёра, ставшего через пару десятков лет самым богатым человеком мира. Сильная сторона Билла, умение эксплуатировать других, оказалось важнее сильной стороны Пола - умения хорошо программировать самому.
О взаимоотношениях этих двух незаурядных личностей вы можете почитать в соответствующих книгах. Для нашей же истории важно, что к её началу пути обоих давно разошлись.
Пол отошёл от участия в Микрософте и организовал свою фирму Asymetrix Corporation. В этой фирме был разработана библиотека базовых визуальных элементов и язык для манипуляции ими OpenScript, а также инструментарий для его поддержки. Злые языки даже утверждали, что между бывшими партнёрами была договорённость о том, что Микрософт будет использовать именно этот инструментарий в своих будущих проектах. Но вместо этого Микрософт выбросил на рынок свой собственный продукт - Visual Basic.
В итоге Полу Аллену не осталось ничего другого, как сконцентрировался на более узкой области - инструментах для подготовки мультимедиальных продуктов. Так, в 1990 году был появился на свет ToolBook.
К слову сказать, в этой области Микрософту тоже было что предложить. За три года до этого он купил фирму и продукт PowerPoint. Однако по своим возможностям PowerPoint значительно уступал ToolBook.
Иллюстрации из моего CBT дают представление о возможностях этого инструмента.
От себя отмечу, что работать с ним нам, привыкшим к командной строке, было удивительно просто и приятно. Инструмент поддерживал метафору гипертекстовой книги, страницы которой можно было делать интерактивными, связывать с ними звуковые и даже видео-файлы и запускать их автоматически или по команде пользователя.
В конце-концов нужно было запустить генератор, который выдавал в качестве результата исполняемый EXE-файл. Правда, длиться эта генерация могла десятки минут.
Говорящая книга
Но вернёмся непосредственно к нашей истории. Через несколько дней возбуждённый Профессор влетел в мой кабинет и радостно сообщил, что учебник надо будет делать не для внутреннего пользования, а и для внешнего рынка. А именно - для продажи через издательство Addison-Wesley!
У меня от этого сообщения вначале похолодело внутри, но - отступать уже было некуда.
На следующий день вместе с другими сотрудниками его большой кафедры и представителем Addison-Wesley были обсуждены основные требования к продукту.
С точки зрения учебного материала курс должен был покрывать все основные возможности языка Visual C++ 5, окончательная версия которого, по уверениям Микрософта, должна была выйти через 10 месяцев.
С точки зрения мультимедиальности было решено, что материал будет подаваться максимально визуально и объясняться с помощью всплывающего текста. Кроме того, этот же текст будет зачитываться попеременно двумя профессиональными дикторскими голосами - мужским и женским.
Пользователи курса могут делать на «страницах книги» заметки. Каждый раздел учебника должен заканчиваться несколькими заданиями нарастающей сложности. Ответы на задания система должна уметь проверять автоматически.
От меня ожидалось, что я подготовлю весь текст учебника на смеси из моего тогдашнего немецкого и английского, запрограммирую все примеры на Visual C++ 5 и подготовлю вместе с помощником собственно продукт на ToolBook. В качестве помощника мне найдут смышлёного студента, для которого это будет подработка.
Ну а мой варварский немецкий будут причёсывать и «транслировать» в Hochdeutsch одна из секретарш и начальник отдела мультимедиальных курсов. «За работу!» - бодро напутствовал нас Профессор, закрывая совещание.
О сколько нам ошибок трудных готовит мультимедиа...
Как всегда, между идеями и работающими решениями пролегали болота, чащобы и пустыни.
Вначале я пытался сделать нечто вроде интерактивный игры, когда визуальные элементы под голос диктора двигаются по экрану и занимают в конце-концов нужное место. Я программировал движения так, чтобы они заканчивались примерно тогда, когда я закончу читать написанный мной текст. В моих прикидках это удавалось. Но после переработки и „облагораживания“, текст становился то длиннее то короче. В конце концов я отказался от этой идеи и переход к следующему шагу стал осуществляться по щелчку пользователя.
Кроме того, я вовремя заметил, что это самое «облагораживание“ моего корявого немецкого подстрочника часто приводит к фактическим ошибкам. Поэтому пришлось ввести дополнительную фазу, когда я со словарём в руках (а тогда были только словари на бумаге), с помощью профессиональных немецких книг а иногда и бесед с коллегами пытался выяснить, а не привело ли языковое улучшение текста редактором к его профессиональному ухудшению.
И, положа руку на сердце, признаюсь, что по итогам проекта я пришёл к выводу, что уж пусть лучше текст зачитывает, может и не очень речистый, но программист, а не профессиональный диктор.
В процессе обучения, пройдя все десять глав, студент должен был в конце концов создать программу подсчёта зарплаты для сотрудников маленькой фирмы. До отъезда из России я руководил небольшой фирмой и хорошо представлял себе особенности процесса «в российском варианте“. То же самое в Германии оказалось существенно сложнее, вследствии чего я резко упростил расчётные формулы. Тем самым поставив крест на мечте сделать программу реально полезной. Правда, в итоге это решение было подано как потенциал для самостоятельного развития программы пользователями.
В учебнике было десять глав. Как правило, каждая глава опиралась на достигнутое в прошлой главе. И вот тут-то обнаружилась проблема. Определенные элементы, например - ресурсы для диалогов, объяснять в главе n было ещё слишком рано, и в тоже время в главе n + 1 было уже слишком поздно.
Это общая проблема. Авторы современных курсов решают её путем отказа от «преемственности» глав в курсах. Новую главу (n + 1) они предлагают начинать не с результата главы n, а с так называемого «стартера». Этот самый «стартер» не что иное, как результат предыдущей главы дополненный технически необходимыми, но дидактически маловажными элементами.
Ещё одним решением, вызвавшим большие проблемы, было стремление к «реальности» программы. При этом требование «реальности», т.е. максимальной близости к «боевой» финансовой программе и дидактика столкнулись лбами. С точки зрения реальности в визуальный интерфейс программы надо было бы включать одни элементы, а с точки зрения дидактики хорошо было бы использовать другие. Компромиссы были достигнуты, но как от всех компромиссов, от них на душе остался тяжёлый осадок.
Что Вы наделали!
В самом начале работы над проектом мне сообщили, что мне будет помогать один студент, который как-то знает C++, и который за эту помощь будет получать деньги. А также, что зовут его Лотар.
В СССР я привык к определённому облику студентов. Студенты Германии намного старше. Во-первых, они поступают в Университеты после окончания 13 классов гимназии (в некоторых немецких землях - после 12). Учатся они тоже, в силу построения учебного процесса, как правило дольше, чем пять лет. В итоге многие из них только в районе тридцати лет начинают трудовой путь.
Лотар, появившийся в моём кабинете, выглядел скорее мужчиной в расцвете лет, чем студентом.
Представившись, он с ходу начал возмущаться: «Что Вы наделали!». Немецкое «Sie» как и русское «Вы» одинаково звучит как для единственного, так и для множественного числа. Его вопрос я воспринял на свой счёт и слегка опешил: «А не много ли позволяет себе этот студент?».
Но решил сначала разобраться с его претензиями. И правильно сделал.
Оказалось, его претензии касаются не столько меня лично, сколько всех жителей разваленного Советского Союза. Лотар стал мне горячо доказывать, что СССР был единственной надеждой трудящихся всего мира. Пока он существовал, капиталисты всех стран были вынуждены уважительно относиться к требованиям трудящихся. А теперь они начнут из них верёвки вить…
Тогда я расценил эту идею как слишком радикальную, но время показало её правоту.
А с Лотаром мы потом сработались и даже немного подружились. Он быстро научился рутинным операциям по созданию и редактированию контента, выступал первым тестером и критиком моих новых версий программ. Его имя упомянуто на «электронной» обложке книги.
Политических тем мы с ним касались мало, поскольку мой тогдашний словарный запас был для таких дискуссий совершенно недостаточен.
Долгая дорога в версиях
Задумка менеджеров Addison-Wesley состояла в том, чтобы выбросить версию нашего учебника на рынок сразу же, как только Microsoft выпустит пятую версии Visual C++.
Поэтому готовить учебник надо было на основании «сырых» версий, которые Microsoft тогда регулярно высылал на CD подписчикам MSDN (Microsoft Development Network).
Не знаю, как обстоит дело сейчас, но тогда Microsoft очень лихо менял API, так что получив свежий диск мы нередко убеждались, что работавшие ранее куски нашей учебной программы либо больше не работают либо даже не компилируются.
Более того, было непонятно, когда этот сизифов труд закончится, поскольку Microsoft тянул и тянул с выпуском окончательной версии.
В конце-концов книга вышла, когда мой контракт с Университетом уже закончился.
Выпуском этой книги я утолил своё давнишнее желание сделать большую «говорящую» книгу. Это был один из первых интерактивных обширных курсов по программированию в Западной Европе. Я вложил в этот проект свою душу, убил на него огромное количество своего личного времени. Вроде бы, почти всё получилось, как замышлялось. Но… ожидаемой мной революции в преподавании технических предметов не произошло.
Сейчас методика и технологии интерактивных курсов шагнули по сравнению с моей книгой далеко вперёд. Для многих людей эти курсы выглядят привлекательнее и дают им больше, чем книги с тем же содержанием. Я сам много раз повышал свои навыки с помощью таких курсов.
И всё-же, как показывают исследования, в частности книга немецкого психолога Манфреда Шпитцера ([2], русский перевод -[3]), пока не удаётся создать интерактивные курсы, которые на репрезентативной выборке учащихся дают лучшие результаты по сравнению со средним преподавателем.
Возможно, дальнейшее развитие видеостриминга с возможностью сделать общедоступными лекции «звездных» преподавателей в совокупности и ИИ, который возьмёт на себя рутинную часть работ по проверке заданий, сдвинут ситуацию с мертвой точки.
А пока мой ответ на вопрос, может ли компьютер учить программированию, звучит скорее отрицательно.
Привет из прошлого века
Похоже, что мой курс хорошо продавался. Я долго встречал его на полках существовавших в конце прошлого века в Западной Европе гигантских книжных магазинов. Данные о тираже и количестве проданных экземпляров мне не сообщались. Гонорара я тоже не получил, поскольку написание книги было оформлено как моё производственное задание в рамках контракта с Хагенским Университетом.
Но иногда судьба шлёт нам странные приветы. Пару месяцев назад (четверть века после выпуска книги!) мне пришло Email от читателя с благодарностью за неё. Читатель писал, что по этой книге он выучил C++ и затем четверть века работал программистом. А вот теперь он вышел на пенсию и у него есть время ещё какой-нибудь язык выучить. Читатель спрашивал меня, не написал ли я последние годы учебников по другим языкам программирования? Я ответил, что нет, не написал.
А потом я достал CD и попробовал запустить его на Windows 10. Немного поразмышляв, диск заскрипел, открылись до боли знакомые окошечки и голос уже ушедшего в мир иной диктора начал своё объяснение.
Если вам интересно на это посмотреть, я сохранил диск на GitHub.
А если Вы дочитали эту историю до конца и она навела вас на соображения по поводу возможностей интерактивного обучения - поделитесь ими в комментариях.
Эта статья - переработанный для Хабра вариант истории из моей открытой книги “Мемуары кочевого программиста: байки, были, думы”. Если у вас есть время и настроение - я приглашаю вас полистать её страницы.
Литература
Sirotin Victor. Einführung in Visual C++ 5.0. Addison - Wesley. ISBN 3-8273-1052-0.
Manfred Spitzer. Digitale Demenz: Wie wir uns und unsere Kinder um den Verstand bringen. 2012. ISBN-13 : 978-3426276037.
Манфред Шпитцер. Антимозг: Цифровые технологии и мозг. Издательство АСТ. 2013. ISBN: 978-5-17-079721-9