Комп'ютерна грамотність в школі: навчання чи дресура?
Георгій Курячий
МГУ ВМК, ALT Linux
russian text http://www.linux.kiev.ua/~adiel/files/dressura/
Перекази старовини
Викладання комп'ютерної грамотності в нашій країні має мало не
найдовшу, і вже точно найдраматичнішу історію. Колись у області ЕОМ
Радянський Союз був попереду всієї планети, і неабиякою мірою саме за
рахунок залучення до цієї справи молоді.
Хакери в білих халатах
Класичний підхід до використання ЕОМ, у тому числі і в школах,
ґрунтувався на тому, що між власне ЕОМ і призначеною для користувача
задачею стоїть ще одна людина – програміст, котрий вміє командувати
машиною і складає рішення задачі (програму). Навчання було націлене на
виховання саме програмістів, робилось це не без блиску вибірково і в
рідкісних школах. Програми ґрунтувалися на трьох слонах: теорія
алгоритмів, елементна база і дискретна математика разом з алгеброю
логіки. Природно, освоєння розумного об'єму цих наук вимагало від
школяра неабияких математичних і логічних здібностей. Варто пригадати,
що ЕОМ тоді були тільки в обчислювальних центрах і
програмістів-професіоналів нараховувалось десятки, їх було навіть
менше, ніж фізиків-ядерників.
Не відмовилися від схеми „теорія алгоритмів – елементна база –
дискретна математика” і при створенні перших загальношкільних програм
по інформатиці. Об'єм знань в них був ще більше урізаний (що саме по
собі приводило до порожнього переліку термінів), і до того ж в
дисципліну „Інформатика” планувалося упровадити основи кібернетики та
власне інформатики (за іронією долі в саме це і не було зроблено).
Програмування за відсутності самих ЕОМ, а згодом – за відсутності
єдиної методичної та інструментальної бази (ніякого стандарту на
шкільні класи, наскільки нам відомо, немає й досі) породило стійку
думку, що шкільна програма по інформатиці геть зовсім погана.
Алгол я би вивчив тільки за те, що ним розмовляв Дейкстра
По суті справи, головною перевагою такої програми було те, що вона
все-таки допомагала навчитися програмувати, хоча ця здатність, як
показав час, і не затребувана масово. У спеціалізованих школах і класах
розроблялися зручні для викладання програмування мови (деякі мали
романтичні назви Шпага-2, Рапіра і т. п.), проводилися заняття по
методах програмування і т.п. Учні набували три головні компоненти
професії: розуміння, знання і навики. Якби не елітарність цього
напряму, кращого і бажати не можна.
В той же час звичні школи перебивалися чим Білл послав: довгий
час основною мовою викладання (окрім, все ще програмування) був, вже
вибачите, Бейсік. Проблема з мовами, орієнтованими на викладання, дуже
проста: офіційно все ПЗ відносилося до ПЗ ЗК, і не могло бути куплено
державою, а отже, введено в програму.
Новизна
Таким чином школа виявилася абсолютно неготова до різкої зміни
ситуації, яку в 80-і роки іменували „комп'ютер входить в кожен дім”.
З'ясувалося, що область застосування ЕОМ росте так стрімко, що старий,
доскональний підхід до комп’ютерної грамотності вимагає немислимого
часу на навчання, і дає в результаті відмінного фахівця вузького
профілю.
Кавоварка-пилосос
В той же час, ставало все більш очевидно, що (персональний)
комп'ютер це такий же побутовий прилад, як телевізор або холодильник,
тільки значно більш багатофункціональний. У шкільних програмах (не тих,
що схвалені міністерством, а тих, що дійсно читалися в школах)
запанував перелічувальний підхід до комп'ютера: подібно тому, як вчать
забивати цвяхи, стали учити набору тексту в текстовому редакторі,
малюванню картинок в графічному і т.п.
Cитуація ускладнювалося через два нюанси. По-перше, кожна школа
використовувала таке ПЗ, яке вдавалося дістати, так що говорити про
єдину – хай навіть неофіційну – програму не доводилося. По-друге, таким
ПЗ виявлялося як правило ПЗ ЗК, орієнтоване на заучування а не
розуміння, в якому все навчання зводиться до того, що б пам'ятати, яка
кнопочка яку функцію виконує.
Гірше того: самі виробники цього ПЗ ЗК активно підтримують таке
розуміння навчання, пропонують курси такого ж змісту і навіть називають
це наукою! Додатково вони звичайно дивляться крізь пальці на
безкоштовну передачу і копіювання цього ПЗ, які при інших обставинах
вони без проблем називають крадіжкою. Виходить, що дорослим красти не
можна, а дітям і вчителям можна? Але все це затулило гасло „перша доза
– безкоштовно!”.
Займаюся на праці синхрофазотроном
Насправді такий інструментальний підхід до комп'ютерної письменності
не позбавлений в основі своїй змісту: є деякий набір задач, котрий
прийнято вирішувати за допомогою комп'ютера і деякий набір інструментів
в цьому комп'ютері, що допомагає в рішенні. Природно розуміти під
грамотністю здатність цим інструментом скористатися. Головне тут ось
що: мета навчання не сам комп'ютер, а коло задач, що вирішується з його
допомогою. Можна сказати, що відсилання електронних листів або набір і
роздрук тексту – заняття для уроку праці, бо переслідує ті ж цілі:
ініціювати побутові і початкові професійні навики.
Проте при лобовому підході, обтяженому непридатним до вивчення
ПЗ, геть відмітаються всі інші складники: знання і розуміння. Про
розуміння було сказано вище: якщо замість вивчення задачі і інструменту
нам пропонують заучити назви клавіш, навряд чи ми просунемося в
розумінні самої задачі і принципів її рішення. Що ж до знань, то
частина викладацького співтовариства взагалі вважає, що автоматизація
вбиває знання: чи можна школяреві користуватися калькулятором, якщо він
результаті не знатиме таблиці множення? чи можна користуватися
перевіркою синтаксису, якщо тільки відключивши перевірку школяр одразу
пише „карова пашла даїтца”? Нарешті, нерозуміння задачі і невміння
самостійно побудувати її рішення приводить до безініціативності і
створення помилкових логічних зв'язків. Так, люди починають лякатися
при зміні зовнішнього вигляду кнопочок, розгублюються при перестановці
місцями пунктів меню і вважають за краще взагалі зайвий раз не
натискати на кнопку, а дочекатися підказки з боку комп'ютера.
Пошук Шляху
Автор цих рядків п'ятнадцять (з першого курсу університету) років
пропрацював викладачем інформатики у Вечірній Математичній Школі при
факультеті Обчислювальної Математики і Кібернетики Московського
Державного Університету ім. М. В. Ломоносова (далі, для простоти, ВМШ.
ВМіК і МІЛІГРАМУ відповідно). Йому не доводилося, як те буває в
звичайних школах, мати справу з дітьми, яким нецікаво вчитися. Рівень
учнів ВМШ був самий різний, оскільки на інформатику часто ходили
внаслідок того, що в школі її не було. З п'ятнадцяти років останні
десять викладання велося на базі UNIX-подібних ОС (FreeBSD, Linux) з
використанням різних мов програмування (в основному, Сі, але були також
і Паскаль, і Пітон, і навіть AWK, що викликав, між іншим, найбільший
інтерес).
За роки викладання автор зміцнився в думці, що методично старий
підхід до навчання комп'ютерної письменності вірний (все-таки шкільні
програми складають професіонали), тільки матеріал частково непридатний
(чомусь ці професіонали не мають уявлення про ВПЗ і про те, що його
вільно можна рекомендувати у всі школи), а частково націлений на
виховання вузького професіонала.
Машина мислити не може, тільки їздити
Все повинне повернутися на круги своя. Новий час видав правильне
формулювання: ЕОМ – це всього лише прилад, на зразок пилососа. Він не
володіє інтелектом, душею, волею, він – навіть не покірний виконавець
команд користувача, а самі ці команди, машинка для їх матеріалізації.
Знаряддя у дусі марксової лопати як підсилювача долоні. Комп'ютер –
підсилювач мозку.
Для цього варто чітко показати, що саме робить комп'ютер:
виконує команди. Для того, щоб задачу вирішити, людина складає команди
в алгоритм. Ось і перший слон з трьох повернувся на своє місце. Отже,
як не дивно це нині звучить, уміння програмувати (нехай самі
найпростіші задачі) – це частина сучасної комп'ютерної грамотності.
Як самому зібрати апарат?
Далі. Сама здатність ЕОМ виконувати команди – не є щось міфічне.
Аналогії із звичним телевізором недосить, оскільки його
функціональність – фіксована, а функціональність комп'ютера – динамічна
(наприклад, поведінка персонажів комп’ютерних ігор). Слід розкрити
рівень, на якому фіксується функціональність ЕОМ, пояснити як працює
логіка простих ключів і як з неї збирається аналізатор і мислитель. Ось
і два інші слони повертаються з небуття на відповідні їм місця.
Звичайно, тепер цього мало. Необхідно показати, що вся динаміка
роботи комп'ютера – це такі ж точно програми, як і ті, що може написати
школяр, тільки складніші і специфічніші. Виникає поняття операційного
середовища, яке призначене для зручного користування комп'ютером.
Машина при людині, а не людина при машині
Нарешті, потрібно постійно створювати ситуації, що провокують
активну поведінку школяра за комп'ютером. Людина повинна командувати
машиною, а не навпаки! Тут особливо хороші UNIX-подібні системи з
інтерфейсом командного рядка. В перший же день занять, ще не уміючи
програмувати, школярі взнають, як реєструватися в системі і виконати
найпростіші команди, і надалі комп'ютер використовується не тільки як
інструмент програмування, але і як посібник з теоретичних курсів (цьому
неабияк допомагає документованість і відвертість операційних систем
ВПЗ). Тим самим напрацьовуються навики саме взаємодії з комп'ютером, а
не тільки програмування.
Дуже важливо при цьому навчити самостійно ставити собі задачу,
шукати необхідну для вирішення інформацію і доводити рішення до кінця.
Це уміння, знову ж таки, відноситься не тільки і не стільки до
програмування, скільки до користування комп'ютером взагалі. Саме
відсутність цього уміння у більшості користувачів одного відомого
програмного продукту і породило вінець творіння – скріпку, що раз у раз
довбає своєю верхньою частиною скло монітора.
Принципово важливо виховати у школяра підхід до рішення задачі
не від інструменту (як би цим мікроскопом цвях забити), а від задачі
(чим би забити цвях), дати зрозуміти що у однієї і тієї ж задачі може
бути безліч несхожих рішень, досягнутих за допомогою самих різних
інструментів. У цьому теж вельми допомагає Linux, де всіляких
інструментів спостерігається повна різноманітність.
Це – та сама черепаха, на якій і стоять три слони. Часто її
називають Подолання Компютеробоязні, але істинне її ім'я – Знаряддя
Праці.
Додаток 1. Шлях Гармонії
Мета цієї програми – озвучити три згадані вище вимоги: побудувати
виклад від алгоритму, дати уявлення про внутрішній пристрої і способі
функціонування ЕОМ і прибити у зародку комп’ютеробоязнь разом з
пасивністю за пультом. Програма розрахована на будь-який рівень
початкової підготовки і кілька разів (з використовуванням як базової МП
як Паскаля так і Сі) читалася для слухачів ВМШ при ВМіК МІЛІГРАМУ.
- Архітектура і програмне забезпечення персонального комп'ютера (2 семестри)
- ЦПУ — ОЗУ — шина — пристрою в/в
- Завантаження (ПЗП) — диск — файл — файлова система — операційна система
- Файли — текстовий редактор — операції з файлами, файлові менеджери, архіви, типи файлів
- Зовнішні пристрої і поняття “драйвер” — лазерний диск і Flash,
робота з ними — відеопідсистема і звук — робота з графікою і музикою
- Передача даних — мережа — Інтернет — поняття протоколу — WWW, пошта і ін.
- Офіс
- Інше
- Програмування на мові Python (2 семестри)
- Машинні коди — мова програмування — компілятор — інтерпретатор
- Командний рядок Python — арифметика — ланцюжки — списки
- Змінні і привласнення — функції — умови і цикли
- Оформлення програми — документаційний рядок — коментарі
- Модулі і методи — математика — графмка — інші — допомога по Python
- В/У — файли — операція %
- Структури даних (повніший опис) — сегменти — асоціативні масиви
Додаток 2. Шлях Мудрості
Нижченаведена програма складена з частин програми Інформатика ВМШ
при ВМіК МІЛІГРАМУ різних років, всі курси читалися школярам в тому або
іншому вигляді (проте як єдине ціле — ще жодного разу). Як можна
бачити, вона орієнтована на майбутнього програміста, проте не
прив'язана ні до якого конкретно інструменту розробки і призначена, в
першу чергу, для виховання дисципліни мислення. Ми прекрасно
усвідомлюємо, що програма такого наповнення і глибини вимагає
спеціального контингенту школярів: тих кому це цікаво, і хто має
відповідні здібності. Варто зауважити при цьому, що у ВМШ йдуть також і
з шкіл, де інформатика в загороді або її немає взагалі; цей курс (з
пропуском найскладніших місць) виявився корисний і таким дітям, причому
віддача іноді була навіть сильнішою, і були випадки, коли школяр
взагалі не ходив на свою шкільну інформатику, а одержував довідку про
прослуховування її у ВМШ.
Модельна Машина (проект MM2) — є те найпростіша двохадресна ЕОМ
класичної архітектури з украй простою системою команд (їх у неї 16),
процедурами і константами в ПЗП і т.п. На сьогоднішній день існує
емулятор MM2, пакет розробки програм (компілятор і компонувальник) і
декомпілятор. Архітектура MM2 настільки проста, що дозволяє спочатку
писати програми в машинних кодах, а потім вже переходити до мови
асемблера, попутно вивчаючи процеси компіляції і компоновки.
За відсутністю місця теми курсів представлені крупноблочні, в
основному для того, щоб показати напрям викладання. Насправді багато
тем повинен даватися вперемішку, щоб звести до мінімуму ефект чарівних
слів (робіть це, а що це і навіщо, ми розповімо потім). Крім того,
останній, четвертий, семестр зроблений факультативним, оскільки він
звичайно приходиться на весну 11-го класу, коли у дітей і батьків є
турботи важливіші за інформатику, яку на вступних іспитах не здають.
Перший семестр
- Архітектура і програмне забезпечення персонального комп'ютера (1-а частина)
- Математичні основи ЕОМ
- Системи числення і побітові операції
- Класична архітектура фон Неймана, одно-двух-і триадресні реалізації
- Елементи алгебри логіки, моделювання арифметики
- Апаратна реалізація АЛ (різні варіанти)
- Модельна Машина
- Адресація і порядок виконання, архітектура і карта пам'яті
- Перехід і умовний перехід
- Канонічна схема циклу (відновлення — умова — тіло — зміна)
- Самомодифікация, виклик підпрограм і функцій в/в
- Моделювання типів даних
- Другий семестр
- Архітектура і програмне забезпечення персонального комп'ютера (2-а частина)
- Історія обчислювальної техніки
- Програмування на мові Python (1-а частина)
- Машинні коди — мова програмування — компілятор — інтерпретатор
- Командний рядок Python — аріфментіка — рядка — списки
- Змінні і привласнення — функції — умови і цикли
- Оформлення програми — докумантационная рядок — коментарі
- Модулі і методи — математика — графмка — інше — допомога по Python
- Третій семестр
- Алгоритми і структури даних
- Поняття складності алгоритму
- Алгоритми сортування і пошуку
- Переборная схема, метод хвилі, метод Уоршалла і т.п.
- Програмування на мові Python (2-а частина)
- Структури даних (повніший опис) — сегменти — асоціативні масиви
- Рекурсія і елементи функционального програмування
- Об'єкти як контейнери методів
- Виключення, генератори і ін.
- Корисні модулі
- Основи Linux (1-а частина)
- Термінал і командний рядок — файлова система — основні команди
- Права доступу і процеси
- Установка і налаштування
- Пакети
- Четвертий семестр
- Основи Linux (2-а частина)
- Обробка текстів, регулярні вирази
- Настройка середовища
- Поняття про TCP/IP і сокетах
- X11
- Програмування на мові Python (3-а частина)
- Використовування регулярних виразів
- Елементи об'єктного моделювання — класи — спадкоємство — перевантаження методів
- Програмування мережевих взаємодій
|