Архивы: по дате | по разделам | по авторам

Почему "информатика"

Архив
автор : АЛЕКСАНДР ЛЕОНОВ    25.05.1998

Почему в конце XX века информатика (информационные технологии, компьютинг, computer science etc.) получила вдруг прописку в школе как отдельный учебный предмет? Какое место должна занимать информатика в школьном (и дошкольном) образовании? Какие знания курс информатики обязан привить современному человеку современного общества? Вот те немногие вопросы, на которые хочется попробовать дать ответ.

Если не определить, что понимать под информатикой, предмет обсуждения будет потерян. Напротив, если дать определение дисциплины информатики, то все обсуждение сведется к разбору этого определения. Тяжелый выбор… но все же - определение:

Информатика занимается построением информационных объектов, а также теорией, систематическим анализом, проектированием и реализацией алгоритмов, программ и планов, а также процессами трансформации и передачи информации. Содержание понятия "информация" остается без определения, и это имеет особое значение, чтобы сразу же не последовала неминуемая критика. Да, в определении информатики присутствует понятие информации! Конечно, можно было бы опереться на определения информации, взятые из теории информации, но они не претендуют на всеобщность и не охватывают всего богатства понятия "информация". Поэтому нужно отказаться от попыток дать строгое определение и рассматривать информацию как нечто первичное, неопределенное, подобно понятию "точка". Поколения людей в течение многих лет изучали геометрию по Евклиду, основывающуюся на определении "точка есть то, что не имеет частей". Лишь в XX веке было принято, что строго определить это понятие невозможно. Также лишь в конце XX века информатика была выделена в отдельный предмет и ее начали изучать.

А нужно ли изучать информатику в школе?

А почему нужно изучать математику в школе? Так ли необходимо каждому человеку в современной жизни знание математики? Ответить в пару строк на этот вопрос очень трудно, но курс математики, тем не менее, присутствует во всех школьных программах.

Можно предложить даже более сильное утверждение: информатику нужно сравнивать не с математикой, а с арифметикой. Информатика более базовая дисциплина, чем математика.

Действительно, можно ли жить, не умея считать? Вот вам "новый русский" - замечательно выглядящий бизнесмен, не имеющий не только высшего, но и основ начального образования. Ему ни к чему арифметика, он руководит только крупными заводами. Такой вот Кулибин от бизнеса. Конкретно, зачем ему, в натуре, умение считать, блин?

С другой стороны, пока в мире используются деньги, умение считать является необходимым для выживания. Существование денег - это вполне веская причина для изучения хотя бы основ арифметики. Действительно, определенным доказательством невменяемости врачи-психиатры считают неумение использовать деньги для оплаты, что включает отсутствие у такого "невменяемого" элементарных арифметических навыков. Поэтому даже "новый русский", который не умеет считать, - это абсурд.

Итак, вывод: арифметика явно необходима человеку в современном обществе. При отсутствии знания арифметики человек выпадает из общего круговорота жизни и остается за бортом. Такие не выживают, их жизнь жизнью назвать нельзя.

Аналогичное рассуждение существует для информатики. Информатика, как и арифметика, тоже дает явно необходимые знания для выживания человека в современном мире. Например, умение программировать домашнюю бытовую технику: видеомагнитофон (составление списка записываемых телепередач), магнитофон (составление списка записываемых дорожек аудио-CD), сотовый телефон (запоминание номеров, установка параметров, управление роумингом, управление голосовой почтой), часы и таймеры в любом бытовом приборе (выставление и корректировка времени), микроволновые печи, кофеварки, хлебопечки, телевизоры, наконец, компьютеры…

Здесь под программированием понимается составление плана дальнейших действий домашнего прибора - составление программы, запись этой программы на языке прибора (кодирование в соответствии с прилагаемой инструкцией) с последующей загрузкой составленной программы в компьютер (домашнего) прибора.

Пусть надо запрограммировать запись на видеомагнитофоне - на 4 канале с 10.00 утра до 11.25. Это программа в голове у человека кодируется примерно так:

ПОКА НЕ 10.00 - НИЧЕГО НЕ ДЕЛАТЬ

УСТАНОВИТЬ КАНАЛ НОМЕР 4

ВКЛЮЧИТЬ ЗАПИСЬ

ПОКА НЕ 11.25 - НИЧЕГО НЕ ДЕЛАТЬ

ВЫКЛЮЧИТЬ ЗАПИСЬ

Далее эта программа должна быть перекодирована на язык видеомагнитофона:

ВЫБРАТЬ СВОБОДНОЕ МЕСТО

УСТАНОВИТЬ "ДАТА ЗАПИСИ" = СЕГОДНЯ

УСТАНОВИТЬ "НАЧАЛО ЗАПИСИ" = 10:00

УСТАНОВИТЬ "ОКОНЧАНИЕ ЗАПИСИ" = 11:25

УСТАНОВИТЬ "НОМЕР ТЕЛЕКАНАЛА" = 4

Загрузка данной программы в видеомагнитофон состоит в нажатии на пульте видеомагнитофона соответствующих кнопок для каждой строки программы.

Компьютер - это такой очень сложный и универсальный домашний прибор. Компьютерная программа является планом дальнейших действий компьютера так же, как программа домашнего прибора является планом дальнейших действий этого прибора. Вывод: программирование компьютеров ничем не отличается от программирования в быту.

Может ли человек, не прошедший никакого курса информатики в школе, разобраться с этим набором современных домашних помощников? Это очень трудный вопрос. На него нельзя ответить однозначно. Известно, что люди старшего поколения сталкиваются с определенными трудностями при проведении даже элементарных действий по программированию современной домашней техники. Конечно, проще всего это объяснить старческим маразмом или отсутствием современной техники в домах "пожилых родителей". Но это не так - программированию можно учить. А когда вокруг все техническое окружение становится программируемым - нужно учить!

По крайней мере, нужно научить составлять работающие программы на основе многочисленных инструкций к многочисленным домашним помощникам.

Как научить человека узнавать, правильно ли составлена программа для домашнего помощника? Для этого человеку надо представить себя "домашним прибором" с полным набором функций-инструкций и исполнить ("прокрутить" у себя в голове) составленную программу. А приборов много, каждый имеет свой язык, и приходится постоянно быть выполнителем программ, составленных на разных языках для разных приборов.

Программы из двух-трех шагов можно просто запомнить и считать своими рефлексами: "хочу кушать - жму кнопку два, когда загорится лампочка - можно кушать". Но жить, зазубривая все нужные программы, - не получится. Программируемых приборов так много, инструкции к ним так объемны, требуемые программы так длинны, запоминать команды на языках приборов так лень… Для телевизора, например, нельзя благоприобрести рефлекс по Павлову: НАЖАТЬ КНОПКУ ОДИН, ДОКРУТИТЬ РУЧКУ ДВА, ПОВТОРИТЬ ВСЕ СНАЧАЛА ДЛЯ КАНАЛОВ 1-32, ЕСЛИ ТЕЛЕКАНАЛЫ УЖЕ НАСТРОЕНЫ, НИЧЕГО НЕ ДЕЛАТЬ. Как минимум в данной инструкции нужно понимать, как менять номера каналов.

Без умения программировать разнообразные устройства человеку сегодня жить трудно, а завтра будет просто невозможно.

Информатика как "аппарат" школьных предметов

В чем специфика информатики как дисциплины? Для этого надо вспомнить еще об одной дисциплине, имеющей специфическое место в образовании, - математике. Как известно, математика является основным "аппаратом" многих естественных дисциплин, таких как физика, экономика и т. д. Например, без математики невозможно охарактеризовать форму Земли (точнее, невозможно передать эту информацию от одного человека другому: "Земля имеет форму ШАРА, Земля имеет форму ЭЛЛИПСОИДА, Земля имеет форму ВОН ТОГО КАМНЯ"). У самой же математики нет своего "аппарата". Этим "аппаратом" служит сама математика. У математики также нет сопряженной с ней инженерии (пусть вопрос об инженерной направленности прикладной математики останется за пределами этой статьи).

Информатика тоже выпадает из ряда дисциплин, допускающих разделение на теорию и соотнесенную с ней инженерию. Информатика (как и математика), представляет собой единое целое - компонент науки и прикладной (инженерный) компоненты в информатике слиты. Информатика в качестве "аппарата" имеет саму себя - как и математика. В частности, даже математика не является "аппаратом" для информатики. Подобно тому, как целые разделы естествознания не могут существовать без математики, так без информатики невозможно существование многих других прикладных дисциплин.

Вместе с тем, ни в коем случае нельзя считать математику и информатику составными частями других, использующих их в качестве "аппарата", предметов. Так, можно предположить, что понятия ШАРА и ЭЛИПСОИДА являются элементами физики и должны изучаться в курсе физики. Тогда в курсе физики должны изучаться все геометрические представления (для описания физических тел), уравнения в частных производных (для описания процесса остывания чайника), а заодно и весь математический аппарат, используемый в механике, и т. д. и т. п. Однако оттого, что в курсе физики математику перестанут называть математикой, она не потеряет своего содержания. Дело ведь не в названии, а в содержании. А содержание, размазанное по разным дисциплинам, удобно изучать единым куском. Особенно это относится к математике и информатике, которые являются "аппаратом" для множества других дисциплин.

Информатика как предмет существует объективно: вульгарная информатика давно и прочно обосновалась в школьном образовании. Это произошло гораздо раньше, чем был объявлен крестовый поход за "компьютерной грамотностью" в 80х годах. Конечно, тогда это не называлось информатикой (Журден ведь тоже не знал, что говорит прозой), - но учеников пичкали плохо написанными программами при изучении всех предметов. И ученики учились понимать эти программы и в меру своих способностей их выполнять.

Например, на обычных уроках по обычной математике учителя используют ученика в качестве "универсального бытового прибора":

ДЛЯ РЕШЕНИЯ КВАДРАТНОГО УРАВНЕНИЯ A*X**2+B*X+C=0 НУЖНО ВЫЧИСЛИТЬ ДИСКРИМИНАНТ D=…

ЕСЛИ D<0, ТО "ОТВЕТ" = корней нет,

ЕСЛИ D=0, ТО ОТВЕТ = корни совпадают (или, если угодно, корень один)

ЕСЛИ…

Но об этом чуть позже.

С информатикой происходило (и зачастую происходит сейчас) то, что происходило бы с геометрией, если бы ее изучали "попутно" со всеми другими предметами. Представьте себе, как преподаватель пения вводит понятие эллипса попутно к объяснению начертания нот, и понятие параллельных прямых (и заодно пару теорем о них) в процессе рисования нотного стана. Кстати, при таком подходе шар будет изучен четырежды (то есть он попадется в четырех предметах), а параллельные прямые - один раз (на уроках пения). Это часто происходит не только в школе, но и в вузе, и не только с информатикой, но и с математикой. Например, уравнения в частных производных на мехмате МГУ изучаются два раза - как в отдельном математическом курсе, так и в курсе уравнений математической физики.

Однако если изучается всего ДВА-ТРИ предмета, имеющих общий "аппарат", то подобный подход имеет право на существование. Именно это происходит и происходило с информатикой (в отличие от математики).

Конечно, просто вынести информатику из других предметов "за скобки", так чтобы сами предметы не изменили своего содержания, нельзя. Трудно менять, ничего не меняя. С другой стороны, другие предметы сегодня тоже (как и информатика) меняют свое содержание. Этим можно воспользоваться, чтобы обеспечить своеобразный "симбиоз" между информатикой и другими предметами, в которых информатика выступит в качестве "аппарата".

Если планировать на 2-3 года вперед, то никаких предпосылок к изменению сложившейся сейчас в стране ситуации с информатикой не обнаруживается. Другие предметы (от физики до физкультуры) не станут проще и не будут явно использовать элементы информатики в своих курсах. Но если планировать хотя бы на 10 лет вперед, то не только ученики не смогут понимать учителей других предметов, но и сами учителя других предметов будут теряться в наступившем "информационном обществе".

Даже музыка сейчас становится музыкой тембра и ритма, а не музыкой мелодии и гармонии. Поэтому даже уроки музыки рискуют без информатики стать уроками древней культуры.

Выполнители и исполнители

Итак, учителя тренируются в "программировании" своих учеников. Для них ученик представляет собой программируемый "прибор". В примере с квадратным уравнением на языке, принятом на уроке математики, ему предлагается исполнить некоторую последовательность действий. То есть ученик по сути является исполнителем с некоторым набором команд.

Исполнитель (наряду с выполнителем) является самым базовым понятием информатики. Обычно много внимания уделяется алгоритму, но не тому, кто (или что) этот алгоритм выполняет. Как будто "дух" может существовать без "тела"!

Исполнитель - это компьютер, человек, организация, сложный прибор с фиксированным набором функций (команд). Так, телевизор и настольная лампа являются классическими примерами исполнителей. В телевизоре все команды соответствуют кнопкам на пульте. Лампа имеет всего две команды: "включить" и "выключить".

Если нужно заставить исполнитель исполнить какой-либо сложный план действий, то нужно этот план зафиксировать в виде программы. Это можно сделать одинаковым для всех исполнителей образом. Для каждого исполнителя или даже для их набора в голове, на листке бумаги, или где-то еще можно составить программу, используя некоторый универсальный язык программирования (с управляющими конструкциями).

Выполнять программу может абстрактный универсальный выполнитель, который понимает универсальный язык и умеет заставлять исполнителей, чьи команды помянуты в программе, выполнять эти команды в заданной последовательности. Можно считать, что выполнитель нажимает на "пульте" исполнителя "кнопки" в соответствии со специально написанными разнообразными инструкциями (программами).

Конечно, универсальным выполнителем может быть как человек, так и компьютер.

 

Концепция "исполнителя-выполнителя" была придумана в 80-е годы на мехмате МГУ.

Исполнитель примерно соответствует классу в современном объектно-ориентированном программировании. Хотя лучшим аналогом исполнителя является package в Аде или модуль в Модуле. Современное понятие "исполнитель" претерпевает изменения. Набор команд исполнителя сейчас не обязательно фиксирован, существуют экземпляры исполнителей. Собственно, сейчас исполнитель - это тот же класс (к сожалению) с отсутствием наследования, но, кроме того, - агент в агент-ориентированном программировании, мир в моделировании. Существует программное обеспечение (Комплект Учебных МИРов - КуМир), поддерживающее данную концепцию.


Однако и человек (в частности, школьник), и компьютер являются не только универсальными исполнителями, но и универсальными выполнителями.

Исполнитель школьник-арифметик умеет выполнять арифметические действия. То есть он имеет "набор команд" калькулятора - сложить/ умножить/ вычесть/ разделить.

Но тот же школьник умеет не только исполнять команды, но и выполнять программы - в частности, программу, описывающую алгоритм решения квадратного уравнения.

Как компьютеру, так и человеку приходится выступать в роли выполнителя программ, написанных на различных языках программирования и включающих команды разнообразных исполнителей.

Действительно, учителя на уроках математики и физики, на лабораторных занятиях по биологии и химии НИКОГДА НЕ ФОРМАЛИЗУЮТ язык, на котором излагается последовательность запланированных ими действий учащихся, то есть программы, которые требуется выполнить школьнику-исполнителю на уроках. Школьники с той или иной долей успеха учатся, как понимать этот неформализованный "язык своего программирования", так и выполнять программы, предложенные учителем, исполняя элементарные действия-функции. Качество как выполнения, так и исполнения порой зависит не от умения и сообразительности школьника, а от таланта и опыта учителя, сумевшего НЕФОРМАЛЬНО ФОРМАЛИЗОВАТЬ язык изложения и научить ему школьников. Вот где пригодились бы навыки алгоритмизации и краткой записи алгоритмов, которые может дать отдельный предмет - информатика!

А в связи с важностью предмета наилучший результат будет получен, если информатике учить в непрерывном режиме - с первого по выпускной класс. Условно можно разделить это "непрерывное образование" на три периода.

С первого класса

Начинать учить информатике нужно с такого возраста, с которого ученик способен сознательно работать выполнителем. Сознательно - это не выполнять десяток программ, заученных наизусть (типа программы решения квадратного уравнения), но разбираясь с новыми и новыми программами. Разница тут - как между умением играть на пианино намертво зазубренных чижика-пыжика и собачьего вальса против умения играть по нотам.

Этот возраст, в котором можно научить "играть по нотам" информатики, начинается в 6-8 лет (при нормальном развитии). Да, это первый класс! Информатику нужно начинать учить тогда же, когда начинают учить иностранный язык (в лицеях и гимназиях). И за первые годы обучения надо привить совокупность наиболее фундаментальных навыков, знаний, понятий и представлений: быть исполнителем, быть выполнителем и полностью осознать то, что число возможных исполнителей и выполнителей бесконечно. Ученик не должен уподобляться удаву, который питается только розовыми поросятами и до смерти боится пятнистых - работает только с выполнителями и исполнителями, изученными в школьном курсе.

Но процесс усвоения фундаментальных знаний не должен задавить ребенка своей фундаментальностью. Средства достижения такой цели могут быть различны: Logo-миры Пейперта, LEGO-конструкторы, миры КуМира. Это всего на всего средства достижения поставленной цели.

Подростки-программисты

Где-то в 4-7 классах должно произойти освоение прикладных навыков и умений, необходимых для применения идей и методов информатики в различных областях человеческой практики. После начального "фундаментального" курса ученик уже достаточно осознал себя в качестве выполяющей среды. Настало время научиться составлять программу на языке универсального выполнителя не для себя, а для другого выполнителя.

На уроках математики ученик-подросток уже может сам составить последовательность действий, необходимых для решения не только одной задачи, но и целого класса задач. При этом язык универсального выполнителя остается один и тот же (единый в данной школе - хоть бейсик, хоть C, хоть Smalltalk, хоть "Ершол"), но, в зависимости от изучаемой дисциплины (физики или музыки), меняется только набор исполнителей.

Конечно, язык универсального выполнителя должен быть полон по Тьюрингу - иначе ни о каком программировании и говорить нельзя. Более того, этот язык предназначен не только для чтения записанных на нем программ (и выполнения их учеником), но и для написания учениками своих программ, предназначенных для других выполнителей.

Подростки, конечно, понимают (и умеют выделить) элементы программ при чтении текстов на различных формальных и неформальных языках. Но учатся писать программы, используя только один "родной" для данной школы универсальный язык программирования. Единственность этого "родного" языка программирования не должна пугать: умение читать на разных языках практически гарантирует умение выразить на этих других языках мысль. Правда, этот процесс может занять чуть больше времени - поскольку отслеживание нового синтаксиса не будет автоматическим.

Итак, после данного этапа обучения получится ученик-программист. Не надо воспринимать слово "программист" как указатель на наличие профессиональных навыков. В этот момент умение есть, но оно непрофессионально.

Выпускник - постановщик задач

В старших классах школы к умению писать программы должно добавиться три новых умения.

Первое умение - это умение использовать технологии написания программ. Оно даст возможность решать задачи другого уровня сложности, которые просто нельзя решить без технологизации процесса проектирования и написания программ. Конечно, на предыдущих этапах образования прививалась определенная технология программирования. Однако на ней не заострялось внимание учащегося - технология не выводилась на уровень сознания. А несознаваемые вещи нельзя улучшать.

Второе умение - умение моделировать окружающий мир. Моделировать - это находить в мире существенные черты и строить информационную модель-программу. Это умение формулировать (формализовать) задачу.

Третье умение - конструирование сложных структурных объектов, а также конструирование языков. Именно на этом этапе ученик учится расширять "родной" язык программирования (или использовать специальные проблемные языки программирования) и проектировать набор исполнителей, необходимых для эффективного решения конкретной задачи.

Обучение решению задач

При решении любой сложной жизненной задачи можно выделить этапы постановки задачи, решения задачи и реализации решения. Очень часто эти этапы выполняют разные люди: самый умный (стратег) ставит задачу, неглупый (тактик) решает задачу, самый глупый (рядовой) исполняет принятое решение.

Представленная в данной статье этапность образования в области информатики адресуется к этой этапности решения задач. Сначала ученики учатся выполнять/исполнять, затем решать и записывать шаги решения (программу), а затем - ставить задачу, которая требует решения.

Нужно ли воспитывать в рамках школы постановщиков задач? Тривиальный ответ - да, если выпускники идут в управленцы или хакеры. А если выпускники не становятся профессиональными планировщиками или программистами?

Постановке задач в школе учить нужно в любом случае, ибо в современном обществе человек очень часто в одиночку сталкивается не с проблемой решения задачи, а с проблемой выделения задачи из окружающей среды. Чтобы задачу решать, надо знать о ее существовании!

А информатика учит просто постановке задач, а не задач по математике, физике или рисованию. Поэтому выпускники полного курса информатики смогут занять в этой жизни стратегические позиции, а не быть в этой жизни рядовыми.

Важно также уметь объяснить самим ученикам, зачем им нужно учить всю эту информатику. На этот вопрос должны отвечать учителя по всем предметам. Действительно, в повседневной жизни невозможно найти человека, применившего решение квадратного уравнения на практике (если только этот человек не учитель математики). Ученики об этом, конечно, знают. Но все равно вынуждены учить. Хотелось бы, чтобы с информатикой было не так: чтобы обязательность ее изучения не оправдывалась Исторической Необходимостью или Общечеловеческой Культурой.

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

Это качество, без сомнения, требуется в жизни. После окончания школы ученик будет встречаться с все новыми и новыми неформальными языками. Один из таких языков - ненормативная лексика. Большинство людей отлично понимают команды (и программы) на таком сверхограниченном языке! На таком языке можно понимать и выполнять программы, даже составлять программы. Но, увы, очень тяжело заниматься постановкой задач…

Конечно, прохождение курса информатики не является вопросом жизни и смерти для сегодняшних детей - будущих взрослых.

Общество никому не даст умереть с голоду, и не обученный премудростям информатики человек вполне в состоянии оказывать платные услуги другим людям. Собака, например, не учит информатику, однако это не мешает ей жить с людьми.

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.