|
Книги, рекомендуемые вместе с этой книгой:
Разделы каталога:
|
О КОМПЬЮТЕРНЫХ НАУКАХПредисловие ответственного редактора Виктора Штонды Рецензия на книгу в журнале PC WEEK (№34, 24 сентября) ПредисловиеДанная книга представляет собой введение в область компьютерных наук. В ней сочетается необходимая широта обзора предмета с достаточно глубоким проникновением в сущность излагаемого материала. Я писал эту книгу для двух категорий читателей. Для будущих специалистов по компьютерным наукам и вычислительной техникеПервая категория читателей включает студентов начальных курсов, которые по окончании учебного заведения станут специалистами в области компьютерных наук и вычислительной техники. Как правило, на этом этапе обучения студенты склонны отождествлять весь спектр компьютерных наук с программированием и просмотром Web-страниц в Internet, поскольку это, в сущности, именно то, что они видели раньше и с чем им приходилось сталкиваться. Однако область компьютерных наук — это нечто существенно большее. Поэтому студентам необходимо продемонстрировать всю глубину и обширность той области знаний, к изучению которой они приступают и в которой планируют специализироваться. В предоставлении этой, столь необходимой им информации и состоит назначение данной книги. Она познакомит студентов с обзором всего спектра компьютерных наук, что создаст основу для правильной оценки различных курсов, которые им предстоит изучать впоследствии. Для студентов других дисциплинКроме того, эта книга разработана с учетом интересов учащихся других специальностей. Данный курс компьютерных наук позволит им заложить фундамент для понимания основ этой области наук в целом. Подобная база необходима всем студентам, чтобы научиться адаптироваться к тому техногенному обществу, в котором они живут, и в случае необходимости самостоятельно продолжить изучение этих наук, что на сегодняшний день очень важно. Поэтому данную книгу можно использовать в качестве учебника для ознакомительного курса компьютерных наук, рассчитанного на студентов различных естественных наук. После изучения данного курса студенты получат необходимые знания обо всех направлениях компьютерных наук, которые будут работать на них и в будущем. Структура книгиМатериал книги упорядочен в соответствии с восходящим подходом, предусматривающим переход от конкретного к абстрактному. Именно такой способ изложения обеспечивает ясную и доступную подачу материала, когда одна тема плавно переходит в другую. Часть I включает обсуждение вопросов, связанных с аппаратным обеспечением. Она начинается с объяснений, как информация представляется и записывается в машинах и как выбранные способы представления влияют на свойства этих машин (глава 1). Затем описывается, как машины обрабатывают данные с помощью программ на машинных языках (глава 2). В части II обсуждаются вопросы, связанные с программным обеспечением, как функционирование машины координируется операционной системой и как это координирование может быть распространено на всю компьютерную сеть, а также на межсетевые взаимодействия (глава 3). На этой стадии обучения студенты получают информацию, необходимую для понимания принципов построения и функционирования типичной компьютерной системы. По сути, главы 1–3 могут использоваться как основа для краткого курса лекций "Что должен знать каждый грамотный пользователь компьютера". В последующих главах этой части рассматриваются вопросы разработки программного обеспечения, включая разработку и анализ алгоритмов (глава 4), применение языков программирования и используемые ими парадигмы (глава 5), а также проектирование программного обеспечения (глава 6). В части III детально рассматриваются темы, затронутые в предыдущей части, и обсуждается взаимосвязь между алгоритмами и построением структур хранения данных. В частности, здесь дано введение в теорию структур данных (глава 7), приводятся элементарные сведения о методах файлового хранения информации (глава 8) и представлен общий обзор систем баз данных (глава 9). Курс достигает своей кульминации в части IV, включающей рассмотрение наиболее впечатляющих достижений в области вычислительной техники. Эта часть начинается с главы об искусственном интеллекте, в которой обсуждаются технологии создания вычислительных машин, способных к восприятию и проведению рассуждений (глава 10). Заканчивается данная часть рассмотрением ограничений, присущих алгоритмическим системам, и тех пределов, которые эти ограничения устанавливают в отношении возможностей вычислительных машин (глава 11). Кроме того, существует ряд тем, которые красной нитью проходят через всю книгу. Первая — это то, что компьютерные науки являются весьма динамичной областью знания. Все рассматриваемые темы подаются в исторической перспективе, обсуждается достигнутый на данный момент уровень развития и указываются основные направления текущих исследований. Вторая тема состоит в пояснении значения абстрактных методов и способов применения различных абстрактных инструментов для управления уровнем сложности. Фактически даже само построение книги отвечает раскрытию этой темы за счет представления материала в порядке прогрессирующей абстракции — аппаратное оборудование предоставляет абстрактные инструменты, используемые системным программным обеспечением, а системное программное обеспечение, в свою очередь, предоставляет абстрактные инструменты, используемые прикладным программным обеспечением. СтудентуВпервые я познакомился с областью компьютерных наук во время службы в военно-морских силах США, в конце 60-х – начале 70-х годов. (Я сознаю, что это признание старит меня в глазах читателя, однако и с вами это тоже когда-нибудь произойдет.) Большую часть всего срока службы я занимался тем, что содержал в исправности системное программное обеспечение компьютеров военно-морского флота, установленных в Лондоне. По окончании службы я вернулся к учебе и в 1975 году закончил аспирантуру. С тех пор я преподаю компьютерные науки и математику. Многое изменилось за эти годы в компьютерных науках, однако многое осталось и неизменным. В частности, компьютерным наукам всегда была и по-прежнему присуща некоторая притягательная сила. В этой области знаний постоянно происходит множество увлекательных событий. Развитие и повсеместное распространение Internet, прогресс в области искусственного интеллекта, уникальные возможности сбора и распространения информации в неслыханных размерах — это только некоторые из аспектов, способных воздействовать на вашу жизнь. Вы живете в замечательном, изменяющемся мире, и вам предоставляется реальная возможность стать участником происходящих событий. Воспользуйтесь же ею! Чем больше вы узнаете, тем лучше будете подготовлены. Эта книга позволит вам заложить основу, но это отнюдь не предел. Прочтите ее, а потом совершенствуйтесь дальше и дальше. Одно из наиболее достойных качеств, которое вы можете развить в себе, — это умение учиться самостоятельно. ПреподавателюОбъем материала этой книги превосходит тот, который может быть изучен за один семестр, поэтому не бойтесь пропускать темы, которые не соответствуют задачам вашего курса. Я написал книгу для того, чтобы она служила основой для проведения курса обучения, а не определяла его содержание. Несмотря на то что изложение материала следует определенной схеме, каждая из тем подается в независимой манере, что позволит вам сделать выбор в соответствии с вашими вкусами. В начале каждой из глав звездочками отмечены те разделы, которые я считаю факультативными, однако желание навязать вам свое мнение не входило в мои намерения. Я также предлагаю рассматривать некоторые темы как задания для домашнего чтения. Мне кажется, что зачастую мы недооцениваем студентов, когда считаем необходимым объяснять абсолютно все непосредственно на занятиях. Я часто задаю моим студентам целую главу для чтения на дом, а затем использую время занятий для того, чтобы разъяснить определенные вопросы или подробно осветить некоторые части текста, исходя из собственного опыта. Я уже указывал, что книга построена по восходящему принципу, от конкретного к абстрактному, однако позвольте мне остановиться на этом подробнее. Как ученые мы слишком часто полагаем, что студенты непременно оценят наш подход к предмету, который вырабатывался нами на протяжении многих лет работы в этой области. Однако как преподаватели мы поступим лучше, если будем подавать материал, ориентируясь на точку зрения студента. Именно поэтому книга начинается с освещения темы представления и хранения данных, которая выбрана мною в качестве отправной точки для изложения последующего материала. Современные студенты уже знакомы с магнитными дисками, модемами, компакт-дисками, и я обнаружил, что они проявляют интерес к тому, как эти устройства работают. Я часто наблюдал, как они находят ответы на многие свои "почему?", после чего начинают воспринимать этот курс скорее как практический, нежели как теоретический. После такого начала книга естественно подходит к раскрытию вопросов о программном обеспечении, которое контролирует эти устройства. Далее рассматривается, как можно разработать собственное программное обеспечение. Затем обсуждение переходит к таким абстрактным вопросам, как разработка алгоритмов, способ представления функций, а также сложность, что и является основным содержанием большинства традиционных вводных компьютерных курсов. Всем нам известно, что студенты познают гораздо больше того, чему мы их обучаем, и те знания, которые они получают окольным путем, зачастую воспринимаются лучше, чем те, которые подаются им непосредственно. Эта особенность становится особенно важной, когда приходит время "учить" решать задачи. Студенты не учатся решать проблемы как отдельную дисциплину путем изучения методологий по решению задач. Они учатся справляться с проблемами, решая их. Поэтому по всему тексту книги я включил многочисленные задания. Я настоятельно рекомендую вам использовать их и подробно пояснять методы их решения. Еще одна тема, которую я отнес к этой же категории, — это профессионализм, этика и социальная ответственность. Я не считаю, что подобный материал может быть представлен как отдельный предмет. Напротив, он должен выходить на поверхность там, где это уместно, и именно такой подход выбран в данной книге. В частности, в разделы 0.5, 3.7, 6.1, 10.1 и 10.7 включены такие темы, как безопасность, конфиденциальность, ответственность, социальные аспекты, обсуждаемые в контексте работы в сети, использование баз данных, разработка программного обеспечения и применение искусственного интеллекта. Кроме того, каждая глава включает ряд вопросов (раздел "Общественные и социальные вопросы"), побуждающих студентов к размышлениям об отношении представленного в книге материала к жизни того общества, частью которого они являются. Педагогические аспектыЭта книга является плодом моей многолетней практики преподавания, благодаря чему она богата разнообразным педагогическим материалом. В частности, весьма существенным фактором является обилие поставленных задач, решение которых требует активного участия обучающихся. Каждый раздел главы заканчивается пунктом "Вопросы для самопроверки", назначение которого — стимулировать обучающихся к самостоятельному мышлению. С помощью предлагаемых задач закрепляется пройденный материал, приведенное выше обсуждение расширяется дополнительными аспектами и даются ссылки на связанный материал, рассмотрение которого будет проводиться позднее. Ответы на предлагаемые вопросы вынесены в приложение Е. Более того, каждая глава (за исключением вступительной) заканчивается двумя группами задач. Первая включает подборку задач под заголовком "Упражнения", разработанных для использования в качестве "домашнего задания", поскольку они относятся к содержанию всей главы и в тексте прямо не рассматриваются. Вторая группа содержит вопросы под заголовком "Общественные и социальные вопросы", которые предназначены для обдумывания и обсуждения. Многие из этих вопросов могут быть использованы в качестве небольших заданий на проведение исследований, результаты которых должны быть представлены в виде письменных или устных отчетов. Каждая глава завершается списком рекомендуемой литературы, включающим ссылки на материал, имеющий отношение к теме данной главы. Кроме того, хорошим источником дополнительной информации по каждой теме является Web-узел, речь о котором пойдет в следующем разделе. Web-узелДанная книга дополняется материалом, собранным на специальном Web-узле, предназначенном для ее информационной поддержки. Его адрес http://www.awlonline.com/brookshear. На этом узле представлен материал как для студентов, так и преподавателей, включая вспомогательное программное обеспечение, руководства к лабораторным работам по разнообразным языкам программирования, ссылки на дополнительные темы по интересам, а также на материалы, разработанные другими читателями этой книги. Замечания к шестому изданиюНесмотря на то что это издание имеет ту же структуру построения по главам, что и предыдущее, в него добавлены некоторые новые темы, а часть существовавших ранее удалена. Большинство предлагаемого материала было переработано в целях адекватного представления современного состояния в области компьютерных наук. Ниже приведен обзор основных изменений, которые были внесены в данное издание. Тема сжатия данных была перенесена из главы 2 в новый раздел 1.8. Этот раздел также содержит сведения о программе LZ77 и методах представления изображений, включая обсуждение форматов GIF и JPEG. Материал по анализу алгоритмов, который раньше рассматривался в главе 11, был расширен и перемещен в главу 4 "Алгоритмы". Глава 4 стала более доступной для понимания после удаления обсуждения методов быстрой сортировки. В главу 5 "Языки программирования" был добавлен раздел 5.5, посвященный объектно-ориентированному программированию. Часть этого материала входила раньше в главу 7. Большая часть главы 6 "Технология разработки программного обеспечения" была полностью переписана. Теперь она включает введение в шаблоны проектирования и новый раздел по тестированию. В главе 7 "Структуры данных" появился новый раздел 7.7, содержащий сведения об использовании косвенной адресации на уровне машинных языков. Глава 8 "Файловые структуры" была полностью переписана в целях лучшего восприятия материала (за счет удаления излишних примеров по конкретным языкам программирования). Раздел 9.4 по объектно-ориентированным базам данных был переписан, и появился новый раздел 9.6, посвященный социальным аспектам использования технологии баз данных. В главу 10 "Искусственный интеллект" включены два новых раздела — 10.5 "Генетические алгоритмы" и 10.7 "Осмысливание последствий". Кроме того, прежние разделы 10.3, 10.4 и 10.5 были упрощены и объединены. В главу 11 "Теория вычислений" был добавлен раздел 11.6 "Криптография с использованием открытых ключей". Помимо упомянутых выше изменений, я добавил в книгу некоторую изюминку, поместив в ее текст врезки, содержание которых позволяет лучше осознать связь излагаемого материала с реальным миром. Многие из этих врезок содержат ссылки на источники в Internet, предоставляющие дополнительную информацию по обсуждаемой теме. СОДЕРЖАНИЕ
|
Copyright © 1992-2007 Издательская группа "Диалектика-Вильямс"
|