Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Окулов С.М. Решение сложных олимпиадных задач - файл n1.doc


Окулов С.М. Решение сложных олимпиадных задач
скачать (723.6 kb.)

Доступные файлы (6):

n1.doc547kb.16.11.2000 21:48скачать
n2.doc6930kb.16.11.2000 21:51скачать
n3.doc6667kb.16.11.2000 21:53скачать
n4.doc2327kb.16.11.2000 21:53скачать
n5.doc3781kb.16.11.2000 21:57скачать
n6.doc27kb.16.11.2000 21:58скачать

Загрузка...

n1.doc

Реклама MarketGid:
Загрузка...

Глава 1. ИНФОРМАТИКА - КЛЮЧЕВОЙ ПРЕДМЕТ СОВРЕМЕННОЙ ШКОЛЫ

1.1. Программирование


Врач, инженер-строитель и программист спорили о том, чья профессия древнее. Врач заметил: «В Библии сказано, что Бог сотворил Еву из ребра Адама. Такая операция может быть проведена только хирургом, поэтому я по праву могу утверждать, что моя профессия самая древняя в мире». Тут вмешался строитель и сказал: «Но еще раньше Бог сотворил небо и землю из хаоса. Это первое и, несомненно, наиболее выдающееся применение строительной инженерии. Поэтому, дорогой доктор, Вы не правы. Моя профессия самая древняя в мире». Программист при этих словах откинулся в кресле, загадочно улыбнулся и произнес: «Да, но кто, как вы думаете, сотворил хаос?»

Бруч Г.Объектно - ориентированное проектирование с примерами применения. - М.: Конкорд, 1992.

Вводные замечания. Вопросы: что такое программирование, кто такой программист? Уточним вопрос. Является ли человек, умеющий разрабатывать программы средней сложности, например на языке программирования Бейсик, программистом? В работе [16] определено: «Основными видами человеческой интеллектуальной деятельности, изучаемой в информатике, являются:

  • математическое моделирование (фиксация результатов познавательного процесса в виде математической модели);

  • алгоритмизация (реализация причинно-следственных связей и других закономерностей в виде направленного процесса обработки информации по формальным правилам);

  • программирование (реализация алгоритма на ЭВМ);

  • выполнение вычислительного эксперимента (получение нового знания об изучаемом явлении или объекте с помощью вычисления на ЭВМ);

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

    Академик А.П. Ершов говорил «о программировании, как второй грамотности», а вслед за ним практически все авторы современных учебников по информатике вводят разделы программирования. Следовательно, ответ положительный - «да». Итак, получается, что школьник, уверенно пишущий программы на одном, а может быть, и нескольких языках программирования, является программистом. Мы не будем говорить об уровне профессионализма, суть от этого не меняется (главное - ответ положительный). Хочется сказать «нет»и еще раз «нет». Знание математики в объеме школьной программы не говорит о том, что человек является математиком. Знание основ программирования не делает из человека программиста. В этом случае для чего необходимо изучение основ программирования? Может быть, справедлива точка зрения [3], что «изложенная модель постепенного растворения информатики (а у нас все программисты) в других предметах представляется наиболее перспективной», или утверждение о том, что нашему обществу не требуется такое количество программистов, или сведение информатики к изучению только очередных «букетов» стандартного прикладного программного обеспечения. Попытаемся опровергнуть эти точки зрения, и, так как образовательная информатика является определенным временным «срезом» информатики - как науки и, главное, информатики - как отрасли производства, без исторического экскурса не обойтись.

    Программным проектам присуща сложность, что является отнюдь не случайным свойством, а скорее необходимым. Всю историю развития технологии программирования можно рассматривать под углом преодоления трудностей (хаоса) на пути создания сложных систем. Это развитие, как любое развитие, шло и идет по спирали (более детально об этом в следующем параграфе «Парадигмы программирования»). Каждый виток определен своими принципами декомпозиции, абстрагирования и иерархии. Определимся с тем, какие по сложности бывают программы. Согласно [ 10]:

Программа

Количество операторов исходного текста (до)

Простая

1000

Средней сложности

10 000

Сложная

100 000

Сверхсложная

1 000 000

Гиперсложная

10 000 000 и более

Вопрос. Есть ли школьники или студенты, написавшие за время обучения программу (хотя бы одну) средней сложности? Есть, но их количество несопоставимо с числом обучаемых. Назовем ли мы человека столяром только по его умению изготавливать ножки для стульев и столов различного типа или по его умению забивать гвозди молотками различной тяжести? Вряд ли. И вряд ли мы доверим свою жизнь летчику, умеющему только поднимать самолет в воздух.

В 70-х годах считалось [11], что программный проект должен пройти через следующую цепочку специалистов:

  • конечный пользователь (автор исходной задачи и в ряде случаев заказчик соответствующего программного проекта);

  • системный аналитик (преобразует цели, назначение, технические характеристики и условия правильности решения в общие формальные требования на программный проект);

  • системный аналитик-программист (преобразует общие формальные требования в детальные спецификации на отдельные программы, участвует в разработке логической структуры и т. д.);

  • прикладной программист (преобразует спецификации на программу в логическую структуру программных модулей, а затем в программный код);

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

    Динамика структуры трудозатрат по фазам реализации программного проекта в 1970 -1980 гг. имела вид [7]:



В настоящее время [7] половина общей численности мирового корпуса программистов - системные аналитики, которые нередко вообще не пишут ни одной строчки программного кода. В таком случае кто такой программист? Если человек, ответственный за все фазы прохождения программного проекта (кроме, разумеется, фазы конечного пользователя), то только 3% своего времени он занимается той деятельностью, которая согласно [16] называется программированием. Итак, видимо, следует считать программистом и специалиста, связанного с реализацией программных проектов, но не знающего языков программирования (утрированный случай с целью подчеркнуть данную мысль).

Программирование как интеллектуальная деятельность, как технология в своем развитии прошло различные этапы.

Первый этап. Программисты работают на уровне регистров и ячеек памяти ЭВМ (отдельных деталей), программируются, в основном, математические формулы, решаются задачи численного анализа.

Второй этап. Рост сложности программ. Невозможность работать по-старому. Развитие языков высокого уровня, структурное проектирование, длительные усилия специалистов по формализации. Например, в [13] сказано, что «программирование как научная дисциплина является частью прикладной математики, а как вид деятельности - разновидностью математической практики, и по своей природе основания программирования являются логико-математическими». Усилиями классиков программирования Э. Дейкстрой [8], Ч. Хоаром[20], Д. Кнутом, Э. Йоданом [10] и др. разрабатываются формальные аспекты науки программирования. Предложена технологическая цепочка, рассмотренная выше. Однако после 10 - 15 лет значительных усилий осознано, что цена этого слишком велика. Невозможно на бумаге создать сложные информационные конструкции, усилиями мысли заставлять их при этом взаимодействовать с реальным миром (во всяком случае так, как этот мир понимается). Процент задач, для которых принципиально можно разработать формально безупречные спецификации, в общем объеме прикладного программного обеспечения снижается с расширением сфер применения ЭВМ. И вслед за Г.Р. Громовым можно сказать, что «было бы столь же трудно ожидать, что воспринимаемые буквально математические приемы, иллюстративные рекомендации и метафорические научные прогнозы классиков программирования могли бы оказаться практически более полезны, чем, например, использование в клинической практике ярких медицинских зарисовок А.П. Чехова». К программированию, по мнению Г. Л. Смоляна [18], «вполне применим тезис Д. Гильберта, утверждавшего, что всякая физическая или математическая теория проходит три фазы развития: наивную, формальную и критическую». Программирование как инженерная деятельность, как отрасль производства находится в последней фазе. Образовательная информатика пытается разродиться от формализма. Явная видимость его недостаточности и отсутствие, в первом приближении, достойной замены, приводит к отчаянным «броскам», например, в направлении чисто прикладного программного обеспечения.

Третий этап. Дальнейшее развитие программирования происходило в двух направлениях, связанных между собой: персональные вычисления и разработка инструментальных сред для создания программных проектов, реализующих на новом витке спирали принципы декомпозиции, абстракции и иерархии. Во-первых, это разработка объектно-ориентированного подхода, от его первых версий, например в Турбо - Паскале 5.5, до Object Pascal среды Delphi, который определяет новый уровень развития перечисленных принципов. Во-вторых, создание визуальных сред быстрой разработки проектов (Delphi), основанных на компонентной (элементе иерархии) архитектуре. Разработка, основанная на компонентах, оказывается следующим эволюционным шагом в развитии методов программирования. Delphi по сравнению с другими существующими средами программирования дает возможность исследовать различные варианты программного проекта, делать ошибки прежде, чем будет принято определенное решение. Другими словами, может быть, впервые у программистов появилась возможность начинать разработку не с традиционных попыток составления формальных спецификаций, а с разработки макета. Макет программы - информационный объект, единственное назначение которого дать возможность пользователю и программисту выработать единое понимание того, что должна делать программа, ибо «определить, что хочет пользователь, в отличие от того, что он говорит, что он хочет, - это и есть настоящее искусство». Книга Д. Пойа «Математическое открытие» начинается со следующего утверждения Лейбница: «Метод решения хорош, если с самого начала мы можем предвидеть - и далее подтвердить это, - что, следуя этому методу, мы достигнем цели». В технологии программирования создание макетов средствами визуального программирования - единственный на сегодня метод, удовлетворяющий критерию Лейбница.

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

1.2. Парадигмы программирования


Стиль - это отражение мышления.

Шопенгауэр А.

Парадигма (греч. paradeigma - пример, образец) - схема, модель постановки проблем и их решения, методы исследования, господствующие в течение определенного исторического периода в научном обществе. Характерные идеи и методы программирования и соответствующий образ мышления образуют так называемую парадигму программирования. Между парадигмами и языками программирования высокого уровня прямая связь, хочется сказать, изоморфная (противники этой точки зрения будут утверждать что и на Бейсике можно создать «шедевр»...). В большинстве учебников по информатике подразумевается, что суть программирования заключается в знании алгоритмов и определений языка, описанных в них. Но правила конкретного языка программирования можно изучить за несколько часов, соответствующие парадигмы требуют гораздо больше времени как для того, чтобы научиться им, так и для того, чтобы отучиться от них .

Примечание. У Йодана Э.[10] приводится следующая притча о классике программирования Э. Дейкстре (элемент фольклора в computer science). Известно, что Э. Дейкстра был мало заинтересован в приеме на старшие курсы университета, где он работал, студентов со знанием Фортрана по той причине, что вместе с этим знанием могли привиться дурные привычки программирования. От него пошло также высказывание, что если знание Фортрана можно сравнить с младенческим расстройством, то уж ПЛ/1 - определенно роковая болезнь. Язык программирования ПЛ/1 ушел в прошлое, сегодня, видимо, о Бейсике можно говорить как о таком типе болезни.

Операциональное программирование (языки программирования типа ассемблеров, Бейсика, Фортрана). Программа «собирается» из мелких деталей, отдельных операций и имеет достаточно простую структуру: область глобальных данных и подпрограммы. Уровень абстрагирования - отдельное действие, принципы декомпозиции задачи отсутствуют, во всяком случае, о них не говорят.

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

  • формализованное и строгое описание программистом входов функций и выходов всех модулей программы и системы;

  • согласованная разработка структур данных и алгоритмов;

  • ограничение на размер модулей.

Нисходящая технология разработки программ не есть свод жестких правил, скорее это основной принцип, допускающий вариации в соответствии с конкретными особенностями решаемой задачи. В свое время в обширной литературе по этому поводу говорилось и о восходящей технологии. В этом случае решение (программа) как бы «складывалось из отдельных кирпичиков», из известных решений подзадач. Таким образом, данной технологией оговаривается определенный принцип декомпозиции и иерархическая структура программы. Если проводить черту, то суть этого этапа развития технологии программирования в том, что «мы не знаем, как этого достичь, у нас нет инструментария для обеспечения процесса правильной разработки программы, но так должно быть».

Структурное программирование (языки программирования Паскаль, Модула-2). Профессор Э. Дейкстра был первым инициатором структурного программирования. В 1965 г. он высказал предположение о том, что оператор GO TO мог бы быть исключен из языков программирования. Разумеется, структурное программирование представляет собой нечто большее, чем один лишь отказ от оператора GO TO. Структурное программирование - это некоторые принципы написания программ. Теоретическими основаниями структурного программирования являются:

  • формальные системы теории вычислимости (общие рекурсивные функции, системы Поста, алгоритмы Маркова, лямбда исчисление Чёрча);

  • анализ программ по нисходящей схеме, декомпозиция, основанная на разбивке задач по уровням 0, 1, ..., k. В классической работе Бома и Джакопини [22] показано, что такая структура (иерархическая, разбитая на уровни) может быть реализована в языке, включающем только две управляющие конструкции.

    Работа [22] имеет фундаментальное значение. По Бому и Джакопини для реализации программ требуется три основных составляющих блока:



  • функциональный блок (или конструкция следования);



  • конструкция обобщенного цикла;






  • конструкция принятия двоичного или дихотомического решения.



Пример неструктурированной программы.





Характерные черты структурного стиля программирования:

  • простота и ясность (программа легко читается и анализируется, достаточное комментирование);

  • использование только базовых конструкций;

  • отсутствие сетевых структур в программе;

  • отсутствие многоцелевых функциональных блоков;

  • отсутствие неоправданно сложных арифметических и логических конструкций;

  • расположение в строке программы не более одного оператора языка программирования;

  • содержательность имен переменных.

    При этом процесс нисходящей разработки программы может продолжаться до тех пор, пока не будет достигнут уровень «атомарных» блоков, т. е. базовых конструкций (присвоения, if-then-else, do-while).

    Итак, если формулировать суть в сжатом виде, то в структурном программировании уточнен принцип декомпозиции задачи (в основном ее алгоритмического аспекта, т.е. действий, однако уровень интеграции действий и данных «на совести» разработчика) и сделана попытка его строгой формализации.

    Модульное программирование. Достаточно независимые фрагменты задачи оформляются как модули. Создаются библиотеки модулей, разрабатывается механизм включения модулей в разрабатываемую программу. Модуль должен иметь строго определенный интерфейс и скрытую часть, одну точку входа и одну точку выхода. Из фольклора computer science - «модульность в программировании подобна честности в политике: каждый утверждает, что она - одно из его достоинств, но кажется, никто не знает, что она собой представляет, как ее привить, обрести или добиться». Очередной этап развития принципа декомпозиции задачи и абстрагирования.

    Объектно-ориентированное программирование (языки программирования Турбо Паскаль, начиная с версии 5.5, Смоллток, С++). Характеризуется тремя основополагающими идеями: инкапсуляцией, наследованием, полиморфизмом. Инкапсуляция. Сочетание данных с допустимыми действиями над этими данными приводит к «рождению» нового элемента в конструировании программы - объекта. «Рожденный ползать - летать не может» - и наш объект действует только так, как это в нем заложено и только над тем, что в нем описано. Обращение к данным объекта не через его действия недопустимо. Наследование. Программист для решения определенного класса задач строит иерархию объектов, в которой, и это самое главное, каждый следующий производный объект имеет доступ (наследует) к данным и действиям всех своих предшественников («прародителей»). Характер связей между объектами вертикальный. Полиморфизм. Выделение некоторого действия, т.е. действие должно иметь имя и создание средств использования действия объектами иерархии. Причем каждый объект реализует это действие так, как оно для него подходит. Пример: есть множество геометрических фигур, образующих иерархию. Действие - перемещение по экрану. Мы видим «скачок» в технологии программирования, впервые действия и данные образуют нечто единое - новый уровень абстрагирования.

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

    Обзор. О спирали развития. Первый виток - операциональный, 1954 -1965 годы (Разбивка по годам достаточно приблизительна, отражает лишь точку зрения авторов.) Языки программирования: FORTRAN I и II, ALGOL 58, 60, COBOL, LISP и др. Нарабатываемые идеи: подпрограмма (подпрограммы возникли до 1950 года, но рассматривались не как элемент абстрагирования, а как средство, упрощающее работу); типы данных и их описание, раздельная компиляция, блочная структура, обработка списков, указатели и т.д. Второй виток - структурный (объединяем этим термином и нисходящее проектирование, и модульное). 1966 - 1985 годы. Языки программирования ПЛ/1, ALGOL 68, Pascal, Simula, C, Ada (наследник ALGOL 68, Pascal, Simula), Clos, C++(возникший в результате слияния C и Simula) и т.д. В 70-е годы созданы тысячи языков и диалектов. Нарабатываемые идеи: подпрограммы как элемент абстрагирования (разработаны механизмы: передачи параметров; вложенности подпрограмм; локальных и глобальных переменных; теория типирования; развитие модулей от группы логически связанных подпрограмм до раздельно компилируемых фрагментов со строго определенным интерфейсом). Третий виток - объектно-ориентированный (включая визуальную технологию), с 1986г. по настоящее время. Языки программирования: Smalltalk, Object Pascal, C++. Основным элементом конструирования программы является модуль, составленный из логически связанных объектов.

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

    Примечание. В данном материале не рассматривалась декларативная ветвь развития программирования(описываются ключевые абстракции задачи, что необходимо сделать, какими свойствами должен обладать результат, но не описывают, каким способом это результат будет получен) . Имеются в виду языки программирования типа Пролога (логическое программирование), Лиспа (функциональное программирование). В 70-е, а особенно, в связи с проектом ЭВМ пятого поколения, в 80-е годы они достаточно интенсивно развивались. Однако полнокровная реализация идей этих систем программирования требует не фон Неймановской архитектуры ЭВМ и на сегодня это не так актуально (не исключено, что очень непродолжительное время), как казалось бы по огромному валу публикаций на эту тематику.


    1.3. Основные идеи образовательной информатики по Сеймуру Пейперту


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

    Эйнштейн А.

    У С. Пейперта[14] есть следующее эмоциональное высказывание: «...большая часть того, что теперь делается под именем «технология образования» или «компьютеры в образовании», все еще представляет стадию простого смешения старых методов обучения с новыми технологиями... Консерватизм мира образования превратился в самовоспроизводящий социальный феномен». Под старыми методами обучения понимается традиционное обучение, которое имеет три составляющих метода: показ, объяснение и контроль и является процессом взаимодействия учителя и ученика при достижения определенных целей образования.

    Действительно, до появления компьютеров общество не обладало инструментарием, способным придать процессу обучения естественный, неформализованный характер. Поэтому о кардинальном изменении концепции обучения речи быть не могло. Однако и эйфория первоначального этапа компьютеризации образования сменилась некоторой апатией. Время так называемых автоматизированных обучающих курсов, просто обучающих программ, суть которых сводилась к элементарному показу и игре в вопросы и ответы, кануло. Что это было? Видимо, простая попытка распространить традиционные методы обучения на новый инструментальный аппарат. Другого и быть не могло, ибо этот инструмент является принципиально новым. Хочется вслед за Р. Брэдбери сказать: «Сами машины - это пустые перчатки, но их надевает человеческая рука, которая может быть хорошей или плохой». Что же взамен? Идет новый виток не понимания сути, а именно превращения компьютера в цель обучения. Поток учебных материалов в рамках этого направления возрастает с каждым годом. А не «выплескиваем ли мы с водой ребенка»? Тем более что продуктивные разработки другой направленности известны, и известны давно. В отличие от многих специалистов С.Пейперт рассматривает компьютер лишь как инструмент, с помощью которого обучение (а точнее говоря, учение) может стать более интересным, быстрым, простым, а получаемые знания и навыки - более глубокими и обобщенными. В традиционном использовании компьютера предполагается, что происходит «обучение с помощью компьютера» или, по - другому, - «компьютер обучает ребенка». Закачивая эту логическую цепочку, можно сказать и так: «Компьютер используется, чтобы программировать ребенка». Это не что иное, как перенос традиционного программируемого обучения (из дидактики) на новые средства, и является наглядным примером консервативности системы и одной из причин того, что первый виток внедрения компьютера в образование не дал ожидаемых результатов. Точка зрения С. Пейперта противоположна, ребенок должен программировать компьютер и, делая это, «ребенок не только овладевает частичкой самой современной техники, но и приобщается к некоторым из самых глубоких идей естествознания, математики, а также к искусству интеллектуального моделирования». Резюмируя, можно сказать, что компьютер должен быть в первую очередь одним из инструментом развития интеллектуальных способностей ребенка.

    Как по С. Пейперту реализуется на практике это положение? Через использование среды ЛОГО, специально разработанной для достижения выше выделенных целей. При разработке среды ЛОГО С. Пейперт опирался на ряд фундаментальных исследований в области психологии.

    Во-первых, на работы Ж. Пиаже, следуя которым ребенок является как бы зодчим, возводящим структуры собственного интеллекта. Дети, по-видимому, от рождения одарены способностью к учению и задолго до школы осваивают огромный объем знаний благодаря процессу «научения без обучения». Любой зодчий нуждается в материалах, из которых он будет строить. Окружающая культура является источником этих материалов. В одних случаях культура поставляет их в изобилии, облегчая конструктивное учение по Пиаже, в других - нет. Например, сам факт, что многие из предметов обихода (ножи и вилки, мамы и папы, ботинки и носки) соотносятся друг с другом, становится «материалом» для построения интуитивного понятия число. Но в отличие от Ж. Пиаже, который объясняет более медленное формирование отдельных понятий их большой сложностью или абстрактностью, С. Пейперт считает, что решающим фактором в этом случае является плохая представленность в культуре тех материалов, которые могли бы превратить данные понятия в простые и доступные. ЛОГО как раз тот материал нашей современной культуры, который позволяет облегчить ребенку процесс освоения математических понятий, его работу зодчего в этом процессе.

    Во-вторых, на понимание того, что является «синтонным я» по З. Фрейду (из клинической психологии). Это термин использовался З. Фрейдом для описания инстинктов или представлений, приемлемых «я», т.е. совместимых с целостностью «я» и с его требованиями. «Синтонное я» означает созвучность представлениям детей о себе как людях с определенными целями, намерениями, желаниями, симпатиями и антипатиями. Работа с Черепашкой в среде ЛОГО соответствует уровню развития ребенка, нет элементов «тыканья лицом в грязь». Абстрактный совет Д. Пойа[15], «чтобы решить задачу, поищите, на что она похожа, и тогда вы ее поймете», превращается в геометрии Черепашки в конкретное действие: поиграй в Черепашку, чтобы понять, как бы ты это сделал сам. «Геометрия Черепашки пригодна для учения именно потому, что она синтонна. И она является средством изучения других вещей, поскольку поощряет ребенка к их сознательному, продуманному использованию при решении проблем».

    Работа в среде ЛОГО разрешает ошибаться. Можно сказать сильнее - любая работа за компьютером разрешает ошибаться. Программа как модель некоторой проблемы в представлении ребенка должна работать так-то и так. Компьютер «говорит», что она работает по-другому, есть ошибка или результат не соответствует предполагаемому - противоречие. Позволяя ошибаться, разрешая ошибаться, создавая возможности ошибаться, мы даем возможность познавать через противоречия, ибо ошибка - это источник противоречия. Система образования, по мнению С. Пейперта, отвергает «ошибочные теории» детей, а значит, отвергает путь, которым дети учатся. Однако Ж. Пиаже показал, что ошибочные теории детей являются существенной частью процесса овладения мышлением. Суть образовательного процесса многими педагогами видится в том, чтобы выявлять и исправлять ошибочные взгляды детей, в усиленном «пичканье» правильными теориями, прежде чем дети оказываются готовыми их воспринять.

    Среда ЛОГО создана С.Пейпертом, в первую очередь, для освоения математических понятий. Он безусловно достиг этой цели, сделав этот процесс естественным и удобным для ребенка. Основное отличие нашего подхода в том, что информатика сама по себе является базовым инструментом развития интеллектуальных способностей ребенка (его ума), без привязки к какому-либо конкретному школьному предмету, ибо она сама тот самый предмет. Например, освоение структурной парадигмы мышления или эвристических приемов решения проблем по Д. Пойа необходимо как историку, так и математику, как бизнесмену, так и слесарю - инструментальщику.

    1.4. Информатика - ключевой инструмент развития интеллекта школьника


    Всякое человеческое познание начинается с созерцания, переходит от них к понятиям и заканчивается идеями

    Кант И. Критика чистого разума, Соч., т.3. М.,1964.

    Определим понятие: интеллект - ум, рассудок, разум; мыслительная способность человека[17]. Цель наших рассуждений заключается в том, чтобы показать, что информатика, как никакой другой предмет, позволяет развивать ум. Если утверждение будет обосновано, то высказывания о «вспомогательной роли курса» информатики в цикле школьных предметов, об информатике как подспорье математики будут не убедительными.

    Понятие ума. Ум - или дар божий, или то, чему можно научить? Если дар божий (или дар природы), «то руки по швам». Есть такая точка зрения. Утверждают, что только 6 процентов людей умны, а остальные принадлежат к категории чистых дураков, или «репродуктивов», то есть способных исключительно на «репродукцию» - работу, заключающуюся в монотонном и однообразном воспроизведении одних и тех же, раз и навсегда заученных операций, правила которых разработаны для них «умными». Не останавливаясь на разборе различных точек зрения, их философском обосновании, обратимся к работе Э.В. Ильенкова[9]. «Ум - умение соотносить некоторые общие, усвоенные в ходе образования, пусть самого элементарного, пусть самого высшего, «истины» с фактически складывающимися в жизни и поэтому каждый раз неповторимыми, каждый раз непредусмотренными, каждый раз неожиданными и индивидуальными стечениями обстоятельств». Философским языком - умение «опосредовать общее с единичным, с индивидуальным, с особенным». Итак, определим ум как способность выносить суждения о единичном факте с высоты усвоенной человеком культуры. При этом чем больше запас усвоенных знаний, тем больше простора для обнаружения ума. Но, если нет способности (умения) самостоятельно выносить суждения - ума нет вообще. Есть его отсутствие - глупость, даже при огромном запасе знаний. Недаром говорят, «многознание уму не научает» (Гераклит). Но откуда берется эта способность выносить суждения, способность рассуждать? На основе работ И.А.Соклянского и А.И.Мещярикова со слепоглухими детьми Э.В.Ильенков делает вывод о том, что «ум - это не естественный дар, а результат социально-исторического развития человека...» и «построение процесса усвоения знаний должно быть таким, чтобы он одновременно был процессом развития той самой способности, которой эти знания обязаны своим рождением, - способности осмысливать ... объективную реальность...». Итак, вывод - в процессе познания (получения знаний) должна развиваться способность выносить суждения. Чтобы двигаться дальше, нам необходимо понять суть любого познавательного процесса, его основные характеристики и сущность способности рассуждать.

    Определим схему процесса познания по Р.Ф.Абдееву [1], она приведена на рисунке.



В основе данного процесса - активность, цикличность и два контура обратной связи. Первый контур обратной связи - область эмпирического знания. Второй контур - отбор и обобщение информации, попытка выявить очередную относительную истину, т.е. область теоретического знания. Другими словами, в первом контуре воспринимается явление, а во втором познается сущность, причем постижение сущности углубляется в ходе осуществления все более целенаправленного воздействия на объект. Схема процесса познания раскрывает суть информационного взаимодействия активного познающего субъекта и исследуемого объекта, отражая механизм движения познания от относительной истины к абсолютной. Каждый текущий результат оценивается на фоне все возрастающего уровня знаний. Это и есть процесс познания, «вечное, бесконечное приближение мышления к объекту», ко все большему соответствию наших представлений объективной природе вещей. Итак, чтобы развился интеллект, т. е. помимо знаний выработалась способность выносить суждения, требуются миллионнократные (миллиарднократные) «прогоны» по этой схеме.

Обратимся к дидактике. Проблемное обучение[12] - одна из схем развивающего обучения. Целью проблемного обучения, в отличие от традиционного, является усвоение не только результатов научного познания и системы знаний, но и поиск самого пути - процесса получения этих результатов, формирование познавательной самостоятельности ученика и развитие его творческих способностей. При традиционном обучении преподаватель излагает «готовые» знания, а учащиеся их пассивно усваивают. Затем, чтобы закрепить знания в памяти, они применяют их в процессе решения учебных задач (теоретических, практических). Проблемное обучение реализуется через создание соответствующих ситуаций на занятиях, повышающих активность учащихся и усиливающих степень взаимодействия ученика и учителя и учеников между собой, а также долей решаемых творческих (дидактических, по М.И. Махмутову) задач. Проблемное обучение - это оптимальное сочетание репродуктивной и творческой деятельности по передаче и усвоению системы научных понятий и приемов, способов логического мышления, это дидактический подход, учитывающий психологические закономерности мыслительной деятельности субъектов. Итак, мы видим, что проблемное обучение призвано развивать интеллект учащихся. Но как? Усиливая традиционный контур обратной связи «учитель - ученик» и вводя новый контур - «ученик - ученик», а также путем повышения активности учащихся. Результат почти полностью согласуется со схемой процесса познания. (Выскажем гипотезу: все, что есть в дидактике по развивающему обучению, так или иначе направлено на усиление и развитие традиционного контура обратной связи «учитель - ученик»). Цикличность присутствует, но она «растянута» (периодичностью занятий), нет того, что называют реальным масштабом времени. На уроках информатики есть компьютер. Но это не только компьютер сам по себе, это инструментарий нового контура обратной связи, повышающий активность на порядок, обеспечивающий цикличность в реальном масштабе времени, дающий индивидуализацию и дифференциацию обучения (один из ведущих принципов развивающего обучения). Появляются все условия для полной реализации схемы процесса познания.



Первый вывод. В школе впервые за годы ее существования появился инструмент для полной реализации схемы процесса познания.

Продолжим наши рассуждения. Необходимо ответить на второй вопрос - в чем сущность способности к рассуждениям (не в обычном житейском смысле)? Это владение приемами анализа и синтеза; дедукцией и индукцией; использование и соблюдение законов логики и т.д. Ограничимся этими утверждениями и вернемся к информатике. Владение структурной парадигмой мышления (обязательное свойство ума любого профессионала в информатике) требует от учащихся определенных умений и навыков. В частности, необходимо знание технологий нисходящего и восходящего проектирования программ, при этом должно быть полное соответствие по данным между программными компонентами различных уровней - без владения приемами анализа и синтеза это невозможно. В языках программирования третьего поколения любую программу можно логически построить, используя ограниченный набор конструкций и т. д. Главное заключается в том, что овладение структурной парадигмой - это так или иначе развитие способности к суждениям. Причем это овладение происходит только при написании программ, путем миллионнократных (сознательное повторение) действий по схеме процесса познания. И в целом, вспомним спираль развития технологий программирования. Каждый новый виток характеризуется новым уровнем абстрагирования, другими принципами построения иерархических структур. Последовательное «протаскивание» школьника по этой спирали - не есть ли это то самое, что называют развитием мыслительных способностей, ума.

Второй вывод. Изучение информатики формирует и развивает способность к суждениям.

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

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

1.5. Олимпиадная информатика


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

Нейгауз Г.. Об искусстве фортепьянной игры. 1958г.

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

Основное утверждение. Попытаемся разобраться, ответить на вопрос: кто может победить на олимпиаде по информатике? Напомним, что участник должен для победы за 4 - 5 часов найти алгоритмы решения нескольких, достаточно трудных задач, написать и отладить (проверить с помощью тестов) в общей сложности от 300 до 600 строк программного кода. Мыслимо ли это? Практика показывает, что да. Лет 25-30 тому назад считалось, что 5-10 строк кода в день - это хорошая производительность профессионального программиста. Критерий не однозначный, однако, даже при всем при этом, прогресс впечатляет. Начнем с самого простого условия - скорость набора текста. Она должна быть не менее 90-100 символов в минуту, причем набор должен быть «слепым». Далее - знание компьютера, системы программирования, предпочтительно Турбо Паскаля. На детальном анализе причин выбора именно этой системы программирования не будем останавливаться. Сошлемся лишь на тот факт, что большинство участников российских и международных олимпиад по информатике работают на Турбо Паскале. Оказывается, что просто знание, даже хорошее знание, даже отличное знание системы программирования, возможностей компьютера не решает проблемы. Школьник должен владеть на подсознательном уровне структурным стилем (парадигмой) мышления, плюс - классической алгоритмистикой - это залог успеха. Попытаемся раскрыть и обосновать данное утверждение.

Сложность программного обеспечения - отнюдь не случайное его свойство, скорее необходимое.

Способ управления сложными системами был известен еще в древности: divide et impera (разделяй и властвуй).

Буч Г. Объектно-ориентированное программирование с примерами применения. М., 1992.

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

Что касается алгоритмистики, то ограничимся перечислением основных разделов: арифметика целых чисел; комбинаторика (подсчет комбинаторных конфигураций, комбинаторика конечных множеств, перечислительные задачи комбинаторного анализа); поиск и сортировка; алгоритмы на графах (связность, кратчайшие пути, циклы, потоки в сетях и т.д.); перебор и методы его сокращения (динамическое программирование, метод ветвей и границ, метод «решета» и т.д.); геометрия (формулы геометрических преобразований на плоскости, скалярное и векторное произведения, уравнение прямой, нормальный вектор, нахождение прямой, проходящей через две точки, уравнения параллельной и перпендикулярной прямых, уравнение окружности по трем точкам, пересечение прямой и окружности, принадлежность точки многоугольнику, выпуклая оболочка и т. д.); элементы теории формальных грамматик и абстрактных автоматов (алгоритмы синтаксического разбора выражения и построения соответствующего дерева, формулы Бэкуса-Наура, понятие лексемы, машины Тьюринга). По каждой теме необходимо решить определенное количество (какое?) задач, довести их до уровня работающих программ. Но этого мало. Мы задумываемся над тем, чему равно 2 умножить на 2? Нет, вероятно, только в первом классе. Без участия нашего сознания правильный ответ откуда-то извлекается. А в нашем случае? Если, например, задача, независимо от ее содержательной «упаковки», сводится после ряда преобразований к алгоритму нахождения кратчайшего пути в графе, то все - она решена. Участник олимпиады (по-другому - профессионал в определенной части информатики), установив этот факт на сознательном уровне, всю остальную работу выполняет почти как автомат, она не должна требовать значительных усилий на сознательном уровне - можно переключаться на следующую задачу. Сколько раз ребенку требуется 2 умножить на 2, чтобы автоматически извлекать ответ? Столько же раз требуется использовать алгоритм Дейкстры для нахождения кратчайшего пути в графе при решении задач, чтобы ответ извлекался откуда-то с таким же количеством усилий, как и при умножении 2 на 2.

Для того, чтобы изобретать, надо быть в двух лицах. Один образует сочетания, другой выбирает то, что соответствует его желанию и что он считает важным из того, что произвел первый. То, что называют «гением», является не столько заслугой того, кто комбинирует, сколько характеризует способность второго оценивать только что произведенную продукцию и использовать ее.

Поль Валери

И тут в мой разум грянул блеск с высот,

Неся свершенье всех его усилий.

Данте, Рай, Песнь XXXIII. М., 1961.

О подсознательном. Механизм формирования высших функций мозга, таких, как сознание, творчество и мышление в целом, представляет собой одну из фундаментальных тайн природы, которая давно привлекает специалистов различных областей знания. Говорить о «подсознательном» - профессиональный удел психологов. Однако попробуем, ибо для этого есть причины. Работая со школьниками, приходится наблюдать у них моменты внезапного озарения, после которых фактически и начинается процесс программной реализации задачи. В зависимости от степени владения системой программирования этот процесс отнимает все силы и время или приводит к успеху (решению задачи или модификации метода решения). Назвать случайными эти «вспышки» озарения нельзя. Им предшествует значительная умственная работа и значительная ее часть выполняется на подсознательном уровне. Как сделать так, чтобы эти моменты открытия, озарения у школьников возникали как можно чаще? Как сделать так, чтобы успех при реализации задачи был стабильным? Это проблема из проблем для учителя, и без своей точки зрения, без понимания логики взаимодействия сознательных и подсознательных процессов в мозгу человека, без построения модели этих процессов вряд ли можно успешно работать. Итак, мы говорим о бессознательном в двух различных аспектах. Первый: это генерация (назовем это так) идеи (метода) решения задачи. Второй: реализация метода решения задачи на компьютере. Разумеется, говорить о том, что вся эта работа выполняется на подсознательном уровне, нонсенс. Это сложное взаимосплетение, взаимосвязь сознательных и подсознательных процессов. Попытаемся внести некоторую ясность, хотя бы для себя.

Анри Пуанкаре в докладе «Математическое творчество» (приведен в [2]) отмечает: «Я - подсознательное нисколько не является низшим по отношению к я - сознательному, оно не является чисто автоматическим, оно способно здраво судить, оно имеет чувство меры и чувствительность, оно умеет выбирать и догадываться ... оно преуспевает там, где сознание этого не может». То, что называют внутренним озарением, является результатом длительной неосознанной работы; роль ее несомненна и она плодотворна лишь в том случае, когда ей предшествует и за ней следует сознательная работа. Ж. Адамар [2] выделяет четыре стадии работы над проблемой: подготовка; инкубация; озарение; проверка (завершение). Первая и четвертая относятся к сознательной работе. Во время периода инкубации не заметно никакой сознательной работы ума, но в подсознании, как показал А. Пуанкаре, происходит «прокрутка» огромного количества различных комбинаций, сочетаний, соответствующих проблеме, сравнение их между собой. Творить - это значит не заниматься бесполезными сочетаниями, а исследовать только полезные, которые составляют лишь небольшое меньшинство. Когда и как осуществляется выбор? На стадии озарения и (по А. Пуанкаре) «среди бессознательных идей привилегированными, т. е. способными стать сознательными, становятся те, которые прямо или косвенно наиболее глубоко воздействуют на наши чувства». Действительно, как заметил Р. Фейнман, «истину можно узнать по ее красоте». Кто из специалистов по информатике не испытывал настоящее эстетическое чувство при виде хорошо сделанной программы?

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

Лосев А.Ф. Введение в общую теорию языковых моделей. М., 1968.

Модель интеллекта Предположим, что наше сознание и подсознание - две связанные между собой, но функционально различные системы обработки данных (вычислительные системы). Объем памяти и производительность подсознания как распределенной вычислительной системы с ассоциативными принципами работы на много порядков больше, чем аналогичные характеристики сознания. Основным условием сознательного состояния является способность обозревать свое внутреннее состояние посредством периодической передачи на вход имеющейся в памяти информации [21]. Ее не может быть много, поэтому производительность сознания как системы обработки информации и принятия решений небольшая. Потеря информации происходит по мере того, как она перестает активно использоваться. Повторение является эффективным способом удержания информации в оперативной памяти и важным условием ее перевода в долговременную память. Емкость долговременной памяти обеспечивает хранение всей информации, потенциально полезной для человека. В долговременной памяти подсознания содержатся глубоко усвоенные социальные нормы поведения, доведенные до автоматизма профессиональные и бытовые навыки и другие знания, выражающие личность и индивидуальность человека. Время хранения информации в долговременной памяти соответствует продолжительности жизни. Известно, что нейроны, в отличие от большинства других клеток организма, никогда не обновляются. Этим обеспечивается сохранение информации и вычислительной структуры мозга на протяжении длительного времени без искажений. Долговременная память имеет иерархическую организацию с различными временами выборки информации. В типичных случаях выборка информации осуществляется вне прямого контроля сознания в соответствии с целью и содержанием конкретной деятельности. В область же сознания пропускается лишь предварительно обработанная информация.

Процесс преобразования информации (по Ричарду Аткинсону - американскому психологу) в системе памяти выглядит следующим образом.





Процессы управления (основные):

  • повторение - скрытое (про себя) или открытое (вслух) неоднократное воспроизведение информации;

  • кодирование - подлежащая запоминанию информация вводится в виде условной, легко извлекаемой информации (мнемоническая - искусственно запомненная фраза, опорные сигналы В.Ф. Шаталова);

  • представление - вербальная (словесная) информация запоминается с помощью зрительного образа;

  • принятие решения, организующие схемы, методы решения задач, стратегия извлечения.

Из всей предъявленной (новой) информации человек выбирает «пробную информацию» и помещает ее в оперативную память. Затем из долговременной памяти извлекается и переносится в оперативную «поисковый набор информации, соответствующее подмножество информации, тесно связанное, по мнению человека, с «пробной информацией». Производится сопоставление «пробной информации» с «поисковым набором». Если искомый образ обнаружен, поиск прекращается. Если нет, то человек принимает решение либо о новом цикле поиска, либо о прекращении поиска ввиду бесперспективности.

Рассматриваемая модель интеллекта вполне согласуется с нейробиологическими данными о структуре и клеточных механизмах головного мозга. По данным [21], новая кора переднего мозга содержит 50 млрд. нейронов, организованных в 600 млн. вертикальных миниколонок, функционирующих параллельно. Очевидно, что производительность ассоциативного матричного процессора столь высокой размерности должна быть чудовищной.

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

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

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

Интуиция. Видимо, кульминационный момент в интуитивном процессе возникает тогда, когда все элементы ситуации, находившиеся до этого в разрозненном состоянии, замыкаются на неизвестном ранее звене наглядно в единую, целостную структуру, когда эти элементы и их связи становятся обозримыми. Может быть, это появление новой связи (или связей) между элементами во второй вычислительной структуре. Интуиция опирается на множество операций мышления, которые приводят к искомому результату. Однако своеобразие этого творческого процесса состоит в том, что новое знание появляется в голове еще до того, как найдены необходимые способы логического доказательства его истинности. Новое знание выступает при этом в виде некоторого положения (высказывания), которое не только логически не вытекает из существующей системы знаний, но иногда и не вписывается в нее. Знание, полученное посредством интуиции, возникает как «скачок» на основе удивительной «смеси», соединения сознательного и бессознательного.

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

Декарт Р. Избранные произведения, М., 1950

Структура творческого процесса при решении задачи. Итак, школьник приступает к решению задачи. Идет ее анализ. Лучше всего анализируются задачи небольшой размерности (вспомните высказывание: «голова пошла кругом» - сознание не справляется со сложностью, размерностью задачи, происходит его отказ как вычислительной системы, не хватает памяти или производительности). Если задача большой размерности, то так или иначе школьник пытается свести ее к более простой (подтверждение низкой производительности сознания) и создать некий «зрительный» образ задачи, другими словами, нарисовать картинку. Затем наступает этап как бы «ручной прокрутки» задачи. Не зная метода решения, делается попытка предсказать, найти ответ для этой простой вариации задачи. Подсознательные процессы запущены - период инкубации. В это время опытный участник олимпиады набрасывает «скелет» программы, делает стандартные процедуры ввода исходных данных из файла, вывода результата, общую схему перебора (при переборной задаче), анализирует следующую задачу и т.д. Он, как профессиональный «рыбак», ждет, ждет настоящую «поклевку», назовем это моментом озарения. У профессионала она обычно наступает как результат того, что заложено в долговременную память, какие структурные связи во второй вычислительной системе установлены на стадии обучения. Менее опытный - обычно сидит и рисует картинки (если собрать черновики после олимпиадного тура, то можно увидеть разнообразие рисунков, никоим образом, казалось бы, не связанных с задачами). Идея найдена, озарение произошло. Разрабатывается программа, точнее, ее решающая часть, все остальное у профессионала уже есть. Участие сознания на этом этапе минимально - структурный стиль, что называется, у него «в крови». На сознательном уровне идет проверка решения. И опять выигрыш по времени, ибо в каждый момент есть работающая версия программы. Вместо несделанных фрагментов стоят «заглушки». Есть возможность контроля за изменением данных, весь процесс их трансформации от исходных до результата на виду, под контролем. Структурный стиль разработки работает в полную силу.

Следует отметить, что описанная структура процесса решения задачи является лишь грубой схемой. В реальной деятельности взаимодействие между сознанием и подсознанием протекает непрерывно. Поэтому выделенные этапы работы мозга весьма условны. Так, например, в информатике известно [5,6], что правильно выбранные структуры данных - половина решения задачи, т. е. выделенные этапы: анализ, инкубация, озарение, проверка - неоднократно «прокручиваются» на первом этапе работы с задачей.

Литература

1. Абдеев Р.Ф. Философия информационной цивилизации. - М.: Владос, 1994.

2. Адамар Ж. Исследование психологии процесса изобретения в области математики. - М.: Сов. радио, 1970.

3. Болтянский В.Г. Информатика и преподавание математики// Математика в школе. 1989. № 4.-С.86-90

4. Вейценбаум Дж. Возможности вычислительных машин и человеческий разум. - М.: Радио и связь, 1982.

5. Вирт Н. Алгоритмы+Структуры данных=Программа. - М.:Мир, 1989

6. Вирт Н. Систематическое программирование: Введение. - М.: Мир, 1977.

7. Громов Г.Р. Очерки информационной технологии. - М.: ИнфоАрт, 1993.

8. Дейкстра Э. Дисциплина программирования. - М.: Мир, 1978.

9. Ильенков Э. В. Философия и культура. - М.: Полит. лит., 1991.

10. Йодан Э. Структурное проектирование и конструирование программ. - М.: Мир, 1979.

11. Майерс Г. Надежность программного обеспечения. - М.: Мир, 1980.

12. Махмутов М.И. Организация проблемного обучения в школе. - М., 1986.

13. О природе программирования// Вычислительные системы. №96. - Новосибирск, 1983. -. С.51-74

14.Пейперт С. Переворот в сознании: дети, компьютеры и плодотворные идеи. - М.: Педагогика, 1989.

15. Пойа Д. Математическое открытие. - М.: Наука, 1976.

16. Развитие определения «информатика» и «информационные технологии». - Препринт. АН СССР, Институт проблем информатизации; Под ред. И.А. Мизина. - М.: 1991.

17. Словарь иностранных слов. - М.: Русск. язык, 1990.

18. Смолян Г.Л. Человек и компьютер. - М.: Политиздат, 1981.

19. Федюшин Д. Парадигмы программирования// Информатика и образования. 1991. №4, 5.

20. Хоар Ч. Программирование как инженерная профессия// Микропроцессорные средства и системы. 1984, №4. - С. 53-60.

21. Эделмен Дж., Маунткаса В. Разумный мозг. - М., 1981.

22. Bohm C., Jacopini G. Flow Diagrams Turing Machines, and Languages with Only Two Formulation Rules, Communicatins of the ASM, May, 1966.







Скачать файл (723.6 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации