Комп'ютерна грамотність в школі: навчання чи дресура?

Георгій Курячий

МГУ ВМК, ALT Linux

russian text http://www.linux.kiev.ua/~adiel/files/dressura/

Перекази старовини

Викладання комп'ютерної грамотності в нашій країні має мало не найдовшу, і вже точно найдраматичнішу історію. Колись у області ЕОМ Радянський Союз був попереду всієї планети, і неабиякою мірою саме за рахунок залучення до цієї справи молоді.

Хакери в білих халатах

Класичний підхід до використання ЕОМ, у тому числі і в школах, ґрунтувався на тому, що між власне ЕОМ і призначеною для користувача задачею стоїть ще одна людина – програміст, котрий вміє командувати машиною і складає рішення задачі (програму). Навчання було націлене на виховання саме програмістів, робилось це не без блиску вибірково і в рідкісних школах. Програми ґрунтувалися на трьох слонах: теорія алгоритмів, елементна база і дискретна математика разом з алгеброю логіки. Природно, освоєння розумного об'єму цих наук вимагало від школяра неабияких математичних і логічних здібностей. Варто пригадати, що ЕОМ тоді були тільки в обчислювальних центрах і програмістів-професіоналів нараховувалось десятки, їх було навіть менше, ніж фізиків-ядерників.

Не відмовилися від схеми „теорія алгоритмів – елементна база – дискретна математика” і при створенні перших загальношкільних програм по інформатиці. Об'єм знань в них був ще більше урізаний (що саме по собі приводило до порожнього переліку термінів), і до того ж в дисципліну „Інформатика” планувалося упровадити основи кібернетики та власне інформатики (за іронією долі в саме це і не було зроблено). Програмування за відсутності самих ЕОМ, а згодом – за відсутності єдиної методичної та інструментальної бази (ніякого стандарту на шкільні класи, наскільки нам відомо, немає й досі) породило стійку думку, що шкільна програма по інформатиці геть зовсім погана.

Алгол я би вивчив тільки за те, що ним розмовляв Дейкстра

По суті справи, головною перевагою такої програми було те, що вона все-таки допомагала навчитися програмувати, хоча ця здатність, як показав час, і не затребувана масово. У спеціалізованих школах і класах розроблялися зручні для викладання програмування мови (деякі мали романтичні назви Шпага-2, Рапіра і т. п.), проводилися заняття по методах програмування і т.п. Учні набували три головні компоненти професії: розуміння, знання і навики. Якби не елітарність цього напряму, кращого і бажати не можна.

В той же час звичні школи перебивалися чим Білл послав: довгий час основною мовою викладання (окрім, все ще програмування) був, вже вибачите, Бейсік. Проблема з мовами, орієнтованими на викладання, дуже проста: офіційно все ПЗ відносилося до ПЗ ЗК, і не могло бути куплено державою, а отже, введено в програму.

Новизна

Таким чином школа виявилася абсолютно неготова до різкої зміни ситуації, яку в 80-і роки іменували „комп'ютер входить в кожен дім”. З'ясувалося, що область застосування ЕОМ росте так стрімко, що старий, доскональний підхід до комп’ютерної грамотності вимагає немислимого часу на навчання, і дає в результаті відмінного фахівця вузького профілю.

Кавоварка-пилосос

В той же час, ставало все більш очевидно, що (персональний) комп'ютер це такий же побутовий прилад, як телевізор або холодильник, тільки значно більш багатофункціональний. У шкільних програмах (не тих, що схвалені міністерством, а тих, що дійсно читалися в школах) запанував перелічувальний підхід до комп'ютера: подібно тому, як вчать забивати цвяхи, стали учити набору тексту в текстовому редакторі, малюванню картинок в графічному і т.п.

Cитуація ускладнювалося через два нюанси. По-перше, кожна школа використовувала таке ПЗ, яке вдавалося дістати, так що говорити про єдину – хай навіть неофіційну – програму не доводилося. По-друге, таким ПЗ виявлялося як правило ПЗ ЗК, орієнтоване на заучування а не розуміння, в якому все навчання зводиться до того, що б пам'ятати, яка кнопочка яку функцію виконує.

Гірше того: самі виробники цього ПЗ ЗК активно підтримують таке розуміння навчання, пропонують курси такого ж змісту і навіть називають це наукою! Додатково вони звичайно дивляться крізь пальці на безкоштовну передачу і копіювання цього ПЗ, які при інших обставинах вони без проблем називають крадіжкою. Виходить, що дорослим красти не можна, а дітям і вчителям можна? Але все це затулило гасло „перша доза – безкоштовно!”.

Займаюся на праці синхрофазотроном

Насправді такий інструментальний підхід до комп'ютерної письменності не позбавлений в основі своїй змісту: є деякий набір задач, котрий прийнято вирішувати за допомогою комп'ютера і деякий набір інструментів в цьому комп'ютері, що допомагає в рішенні. Природно розуміти під грамотністю здатність цим інструментом скористатися. Головне тут ось що: мета навчання не сам комп'ютер, а коло задач, що вирішується з його допомогою. Можна сказати, що відсилання електронних листів або набір і роздрук тексту – заняття для уроку праці, бо переслідує ті ж цілі: ініціювати побутові і початкові професійні навики.

Проте при лобовому підході, обтяженому непридатним до вивчення ПЗ, геть відмітаються всі інші складники: знання і розуміння. Про розуміння було сказано вище: якщо замість вивчення задачі і інструменту нам пропонують заучити назви клавіш, навряд чи ми просунемося в розумінні самої задачі і принципів її рішення. Що ж до знань, то частина викладацького співтовариства взагалі вважає, що автоматизація вбиває знання: чи можна школяреві користуватися калькулятором, якщо він результаті не знатиме таблиці множення? чи можна користуватися перевіркою синтаксису, якщо тільки відключивши перевірку школяр одразу пише „карова пашла даїтца”? Нарешті, нерозуміння задачі і невміння самостійно побудувати її рішення приводить до безініціативності і створення помилкових логічних зв'язків. Так, люди починають лякатися при зміні зовнішнього вигляду кнопочок, розгублюються при перестановці місцями пунктів меню і вважають за краще взагалі зайвий раз не натискати на кнопку, а дочекатися підказки з боку комп'ютера.

Пошук Шляху

Автор цих рядків п'ятнадцять (з першого курсу університету) років пропрацював викладачем інформатики у Вечірній Математичній Школі при факультеті Обчислювальної Математики і Кібернетики Московського Державного Університету ім. М. В. Ломоносова (далі, для простоти, ВМШ. ВМіК і МІЛІГРАМУ відповідно). Йому не доводилося, як те буває в звичайних школах, мати справу з дітьми, яким нецікаво вчитися. Рівень учнів ВМШ був самий різний, оскільки на інформатику часто ходили внаслідок того, що в школі її не було. З п'ятнадцяти років останні десять викладання велося на базі UNIX-подібних ОС (FreeBSD, Linux) з використанням різних мов програмування (в основному, Сі, але були також і Паскаль, і Пітон, і навіть AWK, що викликав, між іншим, найбільший інтерес).

За роки викладання автор зміцнився в думці, що методично старий підхід до навчання комп'ютерної письменності вірний (все-таки шкільні програми складають професіонали), тільки матеріал частково непридатний (чомусь ці професіонали не мають уявлення про ВПЗ і про те, що його вільно можна рекомендувати у всі школи), а частково націлений на виховання вузького професіонала.

Машина мислити не може, тільки їздити

Все повинне повернутися на круги своя. Новий час видав правильне формулювання: ЕОМ – це всього лише прилад, на зразок пилососа. Він не володіє інтелектом, душею, волею, він – навіть не покірний виконавець команд користувача, а самі ці команди, машинка для їх матеріалізації. Знаряддя у дусі марксової лопати як підсилювача долоні. Комп'ютер – підсилювач мозку.

Для цього варто чітко показати, що саме робить комп'ютер: виконує команди. Для того, щоб задачу вирішити, людина складає команди в алгоритм. Ось і перший слон з трьох повернувся на своє місце. Отже, як не дивно це нині звучить, уміння програмувати (нехай самі найпростіші задачі) – це частина сучасної комп'ютерної грамотності.

Як самому зібрати апарат?

Далі. Сама здатність ЕОМ виконувати команди – не є щось міфічне. Аналогії із звичним телевізором недосить, оскільки його функціональність – фіксована, а функціональність комп'ютера – динамічна (наприклад, поведінка персонажів комп’ютерних ігор). Слід розкрити рівень, на якому фіксується функціональність ЕОМ, пояснити як працює логіка простих ключів і як з неї збирається аналізатор і мислитель. Ось і два інші слони повертаються з небуття на відповідні їм місця.

Звичайно, тепер цього мало. Необхідно показати, що вся динаміка роботи комп'ютера – це такі ж точно програми, як і ті, що може написати школяр, тільки складніші і специфічніші. Виникає поняття операційного середовища, яке призначене для зручного користування комп'ютером.

Машина при людині, а не людина при машині

Нарешті, потрібно постійно створювати ситуації, що провокують активну поведінку школяра за комп'ютером. Людина повинна командувати машиною, а не навпаки! Тут особливо хороші UNIX-подібні системи з інтерфейсом командного рядка. В перший же день занять, ще не уміючи програмувати, школярі взнають, як реєструватися в системі і виконати найпростіші команди, і надалі комп'ютер використовується не тільки як інструмент програмування, але і як посібник з теоретичних курсів (цьому неабияк допомагає документованість і відвертість операційних систем ВПЗ). Тим самим напрацьовуються навики саме взаємодії з комп'ютером, а не тільки програмування.

Дуже важливо при цьому навчити самостійно ставити собі задачу, шукати необхідну для вирішення інформацію і доводити рішення до кінця. Це уміння, знову ж таки, відноситься не тільки і не стільки до програмування, скільки до користування комп'ютером взагалі. Саме відсутність цього уміння у більшості користувачів одного відомого програмного продукту і породило вінець творіння – скріпку, що раз у раз довбає своєю верхньою частиною скло монітора.

Принципово важливо виховати у школяра підхід до рішення задачі не від інструменту (як би цим мікроскопом цвях забити), а від задачі (чим би забити цвях), дати зрозуміти що у однієї і тієї ж задачі може бути безліч несхожих рішень, досягнутих за допомогою самих різних інструментів. У цьому теж вельми допомагає Linux, де всіляких інструментів спостерігається повна різноманітність.

Це – та сама черепаха, на якій і стоять три слони. Часто її називають Подолання Компютеробоязні, але істинне її ім'я – Знаряддя Праці.

Додаток 1. Шлях Гармонії

Мета цієї програми – озвучити три згадані вище вимоги: побудувати виклад від алгоритму, дати уявлення про внутрішній пристрої і способі функціонування ЕОМ і прибити у зародку комп’ютеробоязнь разом з пасивністю за пультом. Програма розрахована на будь-який рівень початкової підготовки і кілька разів (з використовуванням як базової МП як Паскаля так і Сі) читалася для слухачів ВМШ при ВМіК МІЛІГРАМУ.

  1. Архітектура і програмне забезпечення персонального комп'ютера (2 семестри)

    • ЦПУ - ОЗУ - шина - пристрою в/в
    • Завантаження (ПЗП) - диск - файл - файлова система - операційна система
    • Файли - текстовий редактор - операції з файлами, файлові менеджери, архіви, типи файлів
    • Зовнішні пристрої і поняття “драйвер” - лазерний диск і Flash, робота з ними - відеопідсистема і звук - робота з графікою і музикою
    • Передача даних - мережа - Інтернет - поняття протоколу - WWW, пошта і ін.
    • Офіс
    • Інше
  2. Програмування на мові Python (2 семестри)

    • Машинні коди - мова програмування - компілятор - інтерпретатор
    • Командний рядок Python - арифметика - ланцюжки - списки
    • Змінні і привласнення - функції - умови і цикли
    • Оформлення програми - документаційний рядок - коментарі
    • Модулі і методи - математика - графмка - інші - допомога по Python
    • В/У - файли - операція %
    • Структури даних (повніший опис) - сегменти - асоціативні масиви

Додаток 2. Шлях Мудрості

Нижченаведена програма складена з частин програми Інформатика ВМШ при ВМіК МІЛІГРАМУ різних років, всі курси читалися школярам в тому або іншому вигляді (проте як єдине ціле - ще жодного разу). Як можна бачити, вона орієнтована на майбутнього програміста, проте не прив'язана ні до якого конкретно інструменту розробки і призначена, в першу чергу, для виховання дисципліни мислення. Ми прекрасно усвідомлюємо, що програма такого наповнення і глибини вимагає спеціального контингенту школярів: тих кому це цікаво, і хто має відповідні здібності. Варто зауважити при цьому, що у ВМШ йдуть також і з шкіл, де інформатика в загороді або її немає взагалі; цей курс (з пропуском найскладніших місць) виявився корисний і таким дітям, причому віддача іноді була навіть сильнішою, і були випадки, коли школяр взагалі не ходив на свою шкільну інформатику, а одержував довідку про прослуховування її у ВМШ.

Модельна Машина (проект MM2) - є те найпростіша двохадресна ЕОМ класичної архітектури з украй простою системою команд (їх у неї 16), процедурами і константами в ПЗП і т.п. На сьогоднішній день існує емулятор MM2, пакет розробки програм (компілятор і компонувальник) і декомпілятор. Архітектура MM2 настільки проста, що дозволяє спочатку писати програми в машинних кодах, а потім вже переходити до мови асемблера, попутно вивчаючи процеси компіляції і компоновки.

За відсутністю місця теми курсів представлені крупноблочні, в основному для того, щоб показати напрям викладання. Насправді багато тем повинен даватися вперемішку, щоб звести до мінімуму ефект чарівних слів (робіть це, а що це і навіщо, ми розповімо потім). Крім того, останній, четвертий, семестр зроблений факультативним, оскільки він звичайно приходиться на весну 11-го класу, коли у дітей і батьків є турботи важливіші за інформатику, яку на вступних іспитах не здають.

Перший семестр

  1. Архітектура і програмне забезпечення персонального комп'ютера (1-а частина)

    • Математичні основи ЕОМ

      • Системи числення і побітові операції
      • Класична архітектура фон Неймана, одно-двух- і триадресні реалізації
      • Елементи алгебри логіки, моделювання арифметики
      • Апаратна реалізація АЛ (різні варіанти)
    • Модельна Машина

      • Адресація і порядок виконання, архітектура і карта пам'яті
      • Перехід і умовний перехід
    • Канонічна схема циклу (відновлення - умова - тіло - зміна)

      • Самомодифікация, виклик підпрограм і функцій в/в
      • Моделювання типів даних
  2. Другий семестр

    • Архітектура і програмне забезпечення персонального комп'ютера (2-а частина)
    • Історія обчислювальної техніки
    • Програмування на мові Python (1-а частина)

      • Машинні коди - мова програмування - компілятор - інтерпретатор
      • Командний рядок Python - аріфментіка - рядка - списки
      • Змінні і привласнення - функції - умови і цикли
      • Оформлення програми - докумантационная рядок - коментарі
      • Модулі і методи - математика - графмка - інше - допомога по Python
  3. Третій семестр

    • Алгоритми і структури даних

      • Поняття складності алгоритму
      • Алгоритми сортування і пошуку
      • Переборная схема, метод хвилі, метод Уоршалла і т.п.
    • Програмування на мові Python (2-а частина)

      • Структури даних (повніший опис) - сегменти - асоціативні масиви
      • Рекурсія і елементи функционального програмування
      • Об'єкти як контейнери методів
      • Виключення, генератори і ін.
      • Корисні модулі
    • Основи Linux (1-а частина)

      • Термінал і командний рядок - файлова система - основні команди
      • Права доступу і процеси
      • Установка і налаштування
      • Пакети
  4. Четвертий семестр

    • Основи Linux (2-а частина)

      • Обробка текстів, регулярні вирази
      • Настройка середовища
      • Поняття про TCP/IP і сокетах
      • X11
    • Програмування на мові Python (3-а частина)

      • Використовування регулярних виразів
      • Елементи об'єктного моделювання - класи - спадкоємство - перевантаження методів
      • Програмування мережевих взаємодій