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

Надо ли учить программированию?

Архив
автор : ВЛАДИМИР СИГУНОВ    20.12.1997

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


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

   Физика - тоже наука. Да еще гораздо более сложная, чем математика. В физике математика является просто аппаратом для решения проблем.

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

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

   Я не считаю, что такой разрыв между теорией и практикой в программировании - это плохо. Скорее хорошо. Это стимулирует к творческому мышлению, к поиску нестандартных ходов. Когда программа начинает работать, ты испытываешь больше чем удовлетворение. А с другой стороны я при желании могу с головой уйти в теоретические аспекты написания программ, понять и выучить теоремы о неподвижной точке или теоремы Черча-Россера о возможности реализации редукции нормального порядка. Только зачем мне это в прикладных задачах? Программирование - это искусство, которое не терпит в своем развитии застывших холодных форм, чем очень напоминает молодую, бурно эволюционирующую науку.

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

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

   Но давайте откроем какой-нибудь справочник для поступающих в ВУЗы. Например, ко мне в руки попал "Справочник для поступающих в ВУЗы 96", изданный в 1996 году НТЦ "Университетский". Среди прочей интересной и важной информации, содержащейся в справочнике, есть в нем и примерные программы по предметам для проведения вступительных экзаменов. В качестве типовой программы по информатике напечатана программа, принятая в ГАУ (Государственная академия управления). Внимательно прочитав эту программу, можно обнаружить, что "не программистских" вопросов в ней просто нет. Единственное, что удается найти - это "прикладное программное обеспечение". Вопрос, который, как Вы понимаете, с одинаковым успехом можно свести как к рассказу об использовании текстового процессора при написании письма к подруге, так и к рассказу об алгоритмах, примененных для повышения эффективности редактирования текста и о методах их реализации.

   Что же получается? Чтобы сдать экзамен, выпускник школы должен знать программирование, причем на довольно высоком уровне? Но тогда причем здесь информатика? Традиционно программирование включают в информатику, как один из разделов, но никто и никогда не сводил всю информатику только к программированию!

   Другой пример. Девушка поступает на экономическую специальность в весьма престижный ВУЗ. Зачем, объясните, девушке-экономисту знать шестнадцатиричную систему счисления и уметь переводить числа из нее в троичную? Это просто, этому можно научить, только зачем это ей, потенциальному пользователю! Спросите у нее на экзамене чем "мышь" отличается от текстового редактора, если ответит, то замечательно - значит обучаемая, а значит можно учить.

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

   А если ребенок не пойдет в технический ВУЗ? Если ему ближе литература или история? Такому ученику и подавно все программирование с его тонкостями абсолютно не нужно. А вот вводный курс по редактору WORD ему очень даже не повредит, равно как и общий обзор WINDOWS 3.xx, а еще лучше WINDOWS 95 или WINDOWS NT.

   А сколько выпускников не попадает в институт. Конечно жалко, конечно обидно, но год до следующего поступления надо прожить. На шее у родителей сидеть можно, но уже стыдно. Идем искать работу, а на работу берут, если компьютер знаешь. Вот и идут вчерашние выпускники с пятерками по информатике на курсы по изучению примитивного программного обеспечения типа Norton Commander. Вроде и программа простая, и откровений на курсах никаких не говорят, но деньги платить приходится и большие. А виновата в этом школа. Не должен человек с аттестатом зрелости в кармане устраивать себе компьютерный ликбез в коммерческих фирмах. В них он может только повышать свой уровень и становиться специалистом экстра класса, а не книжки типа "MS-DOS для чайников" учить.

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

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

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

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

   Так вот, я предлагаю Вашему вниманию задачку, которую я предложил своим ученикам из групп компьютерной графики Лицея Информационных технологий. Сама задача взята из сборника Бортаковский и др. "Сборник задач по математике для поступающих в ВУЗы".

   В кубе ABCDA1B1C1D1 через точки A1, D и середину ребра CC1 проведена плоскость. На ребре BC взята точка K так, что BK:KC = 1:2. В каком отношении эта плоскость делит отрезок D1K?

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

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

   В последнее время Рубен увлекся Автодесковским продуктом 3D-Studio. Довольно известная штука. Одна из прелестей, которую она таит в недрах своих алгоритмов - это возможность различных движений (в геометрическом понимании) трехмерных объектов. В частности - возможность поворота. Придя домой, мой ученик начал играть (ребенок же!) в 3DS на листе бумаги, поворачивая всеми возможными способами куб из задачи. С седьмого раза попал на необходимую картинку. Открытие сделано. Осталось выполнить арифметические действия, доказать, что все правильно и похвастаться преподавателю и соученикам, что и было сделано потрясающе качественно. Что ж, осталось поблагодарить фирму АвтоДеск за ее великолепный программный продукт, а преподавателей специальности - за то, что смогли привить ребенку интерес к творческой работе с компьютером.

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

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

   А пока наша задача - это не придумывать, как учить детей с помощью компьютера, а учить их пользоваться этим самым компьютером. Учить, несмотря на отсутствие литературы, на отсутствие специалистов, готовых придти в школу, несмотря на отсутствие денег, чтобы эти компьютеры, если не модернизировать до "пентиумов", то хотя бы отремонтировать. Чтобы он стал компьютер для сегодняшних учеников старших классов таким же естественным инструментом познания, как для нас с Вами были в пятнадцать лет шариковая ручка и калькулятор МК 51! Давайте попробуем.



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