Глава 1 теоретические основы информатики
ПРЕДИСЛОВИЕ
Около трех с половиной десятилетии минуло с тех пор, как в педвузах введено в качестве учебной дисциплины программирование для ЭВМ.
За все это время педвузовские кафедры программирования и вычислительной математики, как и образованные позднее на их основе кафедры информатики и вычислительной техники, не были избалованы своевременным появлением специальных учебных изданий. При колоссальной скорости изменений в самом предмете, всегда существенно превышавшей скорость центральных издательских механизмов, специально ориентированные на программы педвузов книги выходили не чаще, чем раз в десятилетие - едва ли не соразмерно скорости смены поколений ЭВМ. Если к этому добавить непреходящую особенность книг о компьютерах и программах к ним устаревать еще в типографии, то можно с грустью утверждать, что нормальных учебников по Computer Science для педвузов пока - увы! - так и не было. И можно ли считать утешением тот безрадостный факт, что уровень компьютерного обеспечения большинства педвузов обычно с трудом «дотягивал» до содержания полуотсталых учебных пособий?
В наши дни многое изменилось. Во-первых, на месте узкого учебного курса программирования в учебных планах педвузов давно уже обосновался куда более обширный и многоаспектный учебный предмет «Информатика». Да и положение с источниками, конечно, стало другим - полки книжных торговцев сегодня ломятся от изданий по информатике.
Однако преподавателю (а более всего студенту) специальная учебная книга, содержание и направленность которой отвечают заданному учебному плану и программе (или, как сейчас говорят, стандарту образования), все-таки очень нужна. Сделать такую книгу непросто: с одной стороны - пугающая широта и вечная необустроенность предмета информатики, а с другой - динамичность, неуспокоенность самих стандартов педобразования, равно как и школьных стандартов, которые тоже именно сейчас находятся в состоянии активного переосмысления. Эти взаимосвязанные предпосылки достаточно долгое время оставляли мало надежд на то, что найдутся отважные авторы (преисполненные профессионального долга, а вовсе не амбициозного желания прославиться), которые возьмутся за такую работу и сделают ее. Те, кто держит в руках эту книгу, могут убедиться, что за дело взялись наиболее авторитетные и хорошо известные в кругу педагогов-информатиков ученые. Мне же приятно осознавать, что с этими замечательными людьми и специалистами нас не один год связывало Учебно-методическое объединение педагогических учебных заведений России по информатизации образования, в котором и родилась инициатива написания этого учебного пособия.
М. П. Лапчик, Действительный член
Академии информатизации
образования, профессор
ВВЕДЕНИЕ
Уважаемый читатель!
Эта книга - учебник информатики - прежде всего для тех, кто избрал областью профессиональной деятельности ее Преподавание. Такой выбор налагает двойную ответственность: знать все аспекты данного предмета на достаточно высоком уровне и уметь рассказать о нем, научить других.
Авторы надеются, что учебник будет полезен не только студентам педагогических вузов и «классических» университетов, избравших обучение информатике сферой своей будущей профессиональной деятельности, но и практикующим учителям информатики для самообразования и повышения квалификации.
Эта книга может быть полезна и многим другим, изучающим информатику. В первом приближении всех тех, кого информатика интересует, можно разбить на три категории. Представители первой, самой многочисленной, довольствуются несколькими широко распространенными информационными технологиями: обработки текстов и графической информации, работы в сетях и т.д., причем им не надо знать, как все это происходит. Таких можно назвать «принципиальными пользователями» (без малейших намерений обидеть, у большинства из них просто иная сфера профессиональных интересов). Для них наш учебник содержит слишком много теоретических сведений и недостаточно указаний о «кнопочной» стороне дела, за которой мы часто отсылаем читателей к специальной литературе. Вторая категория состоит из тех, кто интересуется не только реализацией информационных технологий, но и ответами на вопросы, «как это делается и почему именно так». Хочется верить, что на большую часть таких вопросов данный учебник дает ответ. Наконец, третья категория - будущие профессионалы, которые намереваются работать в одной из сфер информатики, - разработчики программного обеспечения (трансляторов, издательских систем, экспертных систем и т.п.), сетевики, администраторы крупных информационных систем и т.д. Для них по направлению избранной специализации, скорее всего, нужны более глубокие знания, а данное пособие может стать книгой для первого чтения и общим обзором, ибо трудно профессионально углубиться во все сферы информатики в равной мере.
Современная информатика очень велика по объему и очень динамична. Если изучаемые в вузах курсы математики, лингвистики, химии и большинства других наук практически не изменятся на протяжении многих лет будущей профессиональной деятельности сегодняшнего студента, то в информатике это полностью оформившееся ядро сравнительно невелико. Как же тогда быть с ее изучением?
Прежде всего, следует определиться, что такое информатика. В понимании некоторых людей это есть совокупность приемов и методов работы с компьютерами. На самом деле это не так: компьютеры являются лишь техническим средством, с помощью которого информатика реализует свой прикладной пользовательский аспект - правда, средством столь сложным и интересным, что оно способно поглотить массу внимания не только специалистов в области компьютерных технологий, но и непрофессионалов.
Информатика - комплекс научно-практических дисциплин, изучающих все аспекты получения, хранения, преобразования, передачи и использования информации. Более детальное обсуждение содержания информатики, отражение разных точек зрения, проводится ниже, в главе 1. Однако, из какого бы определения ни исходить, все согласны с тем, что у современной информатики есть два взаимодополняющих аспекта - научный и технологический. Первый является более устоявшимся, второй - весьма мобильным, хотя и в технологической части информатики есть вполне сформировавшееся ядро, которое мало подвержено изменениям.
Приведем примеры, опираясь на имеющийся у читателей опыт. Так, существует большое количество алгоритмических языков программирования, и допустим, что человеку, умеющему работать с Бейсиком или Паскалем, приходится браться за Си. Новая система обозначений, дополнительные возможности - на некоторое время это может полностью поглотить внимание, но постепенно приходит понимание: главное -навыки к алгоритмизации и структурированию данных, и если они есть, то кодирование алгоритмов на другом языке - дело не самое сложное. Или: исчерпаны возможности привычного текстового редактора (или он просто вышел из моды - тоже бывает), и нужно переходить на новый. Если человек понимает принципы работы программ такого рода, имеет устойчивые навыки работы с одной из них, то освоить другую, даже с большими возможностями, обычно несложно. Подтверждается известная истина: образование - это то, что остается, когда детали знаний забываются.
Итак, главное при изучении информатики - освоить фундаментальные понятия каждой из ее областей, ориентироваться в их взаимосвязи, приобрести навыки практической работы с важнейшими техническими и программными средствами. Добавим, что от того, кто хочет стать учителем, требуется в определенном смысле больше, чем, скажем, от инженера-разработчика ЭВМ или программиста - преподаватель должен знать практически все разделы информатики, владеть ее техническими средствами на уровне высококвалифицированного пользователя и уметь передавать свои знания и навыки другим людям.
Есть еще один, чрезвычайно важный аспект подготовки будущего бакалавра или специалиста - научиться самостоятельно осваивать новые знания и навыки. Никакой учебник, и наш в том числе, не может содержать всех необходимых сведений - тем более что в вашу подготовку будут входить, кроме базовых дисциплин, спецкурсы, выполнение курсовых и выпускных работ. Для того чтобы вам в этом помочь, в учебнике приводятся справочные материалы, ссылки на книги, в которых обсуждаемые вопросы излагаются более детально. Если вы привыкнете пользоваться этим справочным аппаратом, дополнительной литературой, то никакие перемены в содержании курсов, которые вы сами будете в будущем преподавать, не страшны.
Данный учебник охватывает основные разделы современной информатики. Чрезвычайно важна теоретическая база, закладываемая в главе 1, - это прочно устоявшееся ядро нашей науки, которому не грозят существенные перемены.
Глава 2 посвящена необъятному вопросу о программном обеспечении ЭВМ. Ее цель - ознакомление с основными классами базового и прикладного программного обеспечения, фундаментальными принципами, заложенными в их основу. Разумеется, в ходе изучения этих вопросов предполагается выработка практических навыков пользования типичными программами каждого класса.
Глава 3 специально названа не «языки программирования», а «языки и методы программирования». Будущий преподаватель не может себе позволить ограничиться глубоким изучением одного-двух языков, какими бы мощными и популярными они ни были; ему необходим широкий кругозор в этих вопросах. Различные методологии («парадигмы») программирования, описанные в этой главе, отражают различные стили, способы человеческого мышления.
Без отчетливого понимания основ функционирования вычислительной техники (глава 4) нельзя всерьез освоить многие другие разделы информатики.
Нижним уровнем этого понимания, который от вас требуется, является уровень архитектуры ЭВМ, но и он весьма глубок и предполагает проникновение в новую понятийную область. Понимание это невозможно без ознакомления с программированием на уровне команд микропроцессора. Необходимо также понимать принципы функционирования и уметь работать со многочисленными внешними устройствами ЭВМ.
Компьютерные сети и телекоммуникации - весьма популярный сегодня раздел прикладной информатики. Осознав возможность передачи текстовой, графической и иной информации на любые расстояния в кратчайшее время, получив экономическую возможность вовлечь в этот процесс миллионы людей, человечество буквально рванулось в мир компьютерных сетей. Этим вопросам посвящена глава 5.
В главе 6 рассказывается об информационных системах, без которых невозможно представить себе современную информатику. Базы и банки данных, информационно-поисковые системы и автоматизированные управляющие системы, равно как и многие другие виды информационных систем, обсуждаются в этой главе. Много внимания уделяется, в частности, информационным системам в образовании.
Могучей информационной технологией, которой полностью посвящена глава 7, является компьютерное моделирование - интегративная дисциплина, включающая выходы в самые различные науки. Моделирование является важным методом человеческого познания, в котором компьютеры выступают как мощное техническое средство.
Курс информатики, который охватывает данное учебное пособие, должен включать в себя большое число практических занятий и лабораторных работ. В ходе их выполнения вы приобретете навыки в пользовании ЭВМ, в работе со многими программными продуктами, в создании относительно несложных программ, освоитесь в современных информационных технологиях. Важную роль при этом играют смежные дисциплины предметной подготовки - в первую очередь, математика, физика. В некоторых их разделах будут существенно углублены сведения, непосредственно примыкающие к информатике, - по математической логике и теории алгоритмов, по электронике и физическим основам функционирования ЭВМ и другим.
Последовательность изучения регулярного курса информатики может отличаться от той, в которой расположен материал в данной книге. Информатика не столь формализована как, например, математика, и многие разделы информатики при изучении можно менять местами. Поэтому, встретив в книге новое для вас понятие, которое не объяснено в данном месте, поищите разъяснение в другом разделе или в справочнике, толковом словаре, которые хорошо бы всегда иметь на столе.
При отборе материала для пособия основой послужили важнейшие нормативные документы - Государственные образовательные стандарты высшего профессионального образования, определяющие требования к обязательному минимуму содержания и уровню подготовки бакалавров образования по направлению «Естествознание», профилю «Информатика», и специалистов - учителей информатики (тем более, что авторы данного пособия участвовали в разработке предметного блока стандарта подготовки учителя информатики). Хотя указанные стандарты должны периодически пересматриваться, их основа наверняка сохранится.
Процитируем общие требования, предъявляемые Стандартами к знаниям и умениям бакалавра образования по профилю «Информатика» и специалиста -учителя информатики по дисциплинам предметной подготовки.
Бакалавр должен
• иметь целостное представление об информатике как науке, ее месте в современном мире и в системе наук;
• владеть системой знаний о теоретических основах информатики;
• знать программное обеспечение ЭВМ;
• знать устройство ЭВМ, тенденцию развития архитектуры ЭВМ;
• обладать навыками программирования на нескольких проблемно- и машинно-ориентированных языках, отладки и тестирования программ;
• иметь навыки работы с ЭВМ нескольких типов, различными вспомогательными устройствами, с системными и прикладными программными средствами общего назначения;
• владеть методами работы в локальных сетях и системах телекоммуникаций;
• владеть методологией построения математических моделей и их компьютерных реализации, знать конкретные математические модели в различных областях.
Авторы учебного пособия - заведующие кафедрами информатики Воронежского, Красноярского и Пермского педагогических университетов, много лет отдавшие подготовке учителей информатики. В этой книге их коллективный опыт. В работе над пособием авторам оказывали помощь их коллеги. Особо следует отметить доцента Е.А.Еремина и А.П.Шестакова, которые приняли большое участие в написании глав 4 и 7, соответственно. Желаем успеха читателям!
ЧАСТЬ ПЕРВАЯ
ГЛАВА 1 ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ
Нет столь великой вещи, которую не превзошла бы еще большая.
Козьма Прутков
ВВЕДЕНИЕ
Практически в каждой науке есть фундамент, без которого ее прикладные аспекты лишены основ. Для математики такой фундамент составляют теория множеств, теория чисел, математическая логика и некоторые другие разделы; для физики - это основные законы классической и квантовой механики, статистической физики, релятивистской теории; для химии - периодический закон, его теоретические основы и т.д. Можно, конечно, научиться считать и пользоваться калькулятором, даже не подозревая о существовании указанных выше разделов математики, делать химические анализы без понимания существа химических законов, но при этом не следует думать, что знаешь математику или химию. Примерно то же с информатикой: можно изучить несколько программ и даже освоить некоторое ремесло, но это отнюдь не вся информатика, точнее, даже не самая главная и интересная ее часть.
Теоретические основы информатики - пока не вполне сложившийся, устоявшийся раздел науки. Он возникает на наших глазах, что делает его особенно интересным - нечасто мы наблюдаем и даже можем участвовать в рождении новой науки! Как и теоретические разделы других наук, теоретическая информатика формируется в значительной мере под влиянием потребностей обучения информатике.
Теоретическая информатика - наука математизированная. Она складывается из ряда разделов математики, которые прежде казались мало связанными друг с другом: теории автоматов и теории алгоритмов, математической логики, теории формальных языков и грамматик, реляционной алгебры, теории информации и др. Теоретическая информатика старается методами точного анализа ответить на основные вопросы, возникающие при работе с информацией, например вопрос о количестве информации, сосредоточенной в той или иной информационной системе, наиболее рациональной организации таких систем для хранения и поиска информации, а также о существовании и свойствах алгоритмов преобразования информации. Конструкторы устройств хранения данных проявляют чудеса изобретательности, увеличивая объем и плотность хранения данных на дисках, но в основе этой деятельности лежат теория информации и теория кодирования. Для решения прикладных задач существуют замечательные программы, но для того, чтобы грамотно поставить прикладную задачу, привести ее к виду, который подвластен компьютеру, надо знать основы информационного и математического моделирования и т.д. Только освоив эти разделы информатики, можно считать себя специалистом в этой науке. Другое дело - с какой глубиной осваивать; многие разделы теоретической информатики достаточно сложны и требуют основательной математической подготовки. В большинстве случаев они излагаются ниже, скорее, в ознакомительном порядке, с целью составить о них отчетливое представление.