Размерность такой таблицы равна пяти, и для однозначного отыскания данных об учащемся в подобной структуре надо знать все пять параметров (координат).
Иерархические структуры данных
Нерегулярные данные, которые трудно представить в виде списка или таблицы, часто представляют в виде иерархических структур. С подобными структурами мы очень хорошо знакомы по обыденной жизни. Иерархическую структуру имеет система почтовых адресов. Подобные структуры также широко применяют в научных систематизациях и всевозможных классификациях (рис. 1.11).
Рис. 1.11. Пример иерархической структуры данных
В иерархической структуре адрес каждого элемента определяется путем доступа (маршрутом), ведущим от вершины структуры к данному элементу. Вот, например, как выглядит путь доступа к команде, запускающей программу Калькулятор (стандартная программа компьютеров, работающих в операционной системе Windows 98):
Пуск → Программы → Стандартные → Калькулятор.
Упорядочение структур данных
Списочные и табличные структуры являются простыми. Ими легко пользоваться, поскольку адрес каждого элемента задается числом (для списка), двумя числами (для двумерной таблицы) или несколькими числами для многомерной таблицы. Они также легко упорядочиваются. Основным методом упорядочения является сортировка. Данные можно сортировать по любому избранному критерию, например: по алфавиту, по возрастанию порядкового номера или по возрастанию какого-либо параметра.
Несмотря на многочисленные удобства, у простых структур данных есть и недостаток — их трудно обновлять. Если, например, перевести студента из одной группы в другую, изменения надо вносить сразу в два журнала посещаемости; при этом в обоих журналах будет нарушена списочная структура. Если переведенного студента вписать в конец списка группы, нарушится упорядочение по алфавиту, а если его вписать в соответствии с алфавитом, то изменятся порядковые номера всех студентов, которые следуют за ним.
Таким образом, при добавлении произвольного элемента в упорядоченную структуру списка может происходить изменение адресных данных у других элементов. В журналах успеваемости это пережить нетрудно, но в системах, выполняющих автоматическую обработку данных, нужны специальные методы для решения этой проблемы.
Иерархические структуры данных по форме сложнее, чем линейные и табличные, но они не создают проблем с обновлением данных. Их легко развивать путем создания новых уровней. Даже если в учебном заведении будет создан новый факультет, это никак не отразится на пути доступа к сведениям об учащихся прочих факультетов.
Недостатком иерархических структур является относительная трудоемкость записи адреса элемента данных и сложность упорядочения. Часто методы упорядочения в таких структурах основывают на предварительной индексации, которая заключается в том, что каждому элементу данных присваивается свой уникальный индекс, который можно использовать при поиске, сортировке и т. п. После такой индексации данные легко разыскиваются по двоичному коду связанного с ними индекса.
С примерами индексации вы, конечно, знакомы. Обычная книга (например такая, как эта) имеет иерархическую структуру. Алфавитный указатель в конце книги — это пример индекса. С его помощью можно найти страницу, соответствующую нужному термину, не прибегая к просмотру всего содержания.
Адресные данные
Если данные хранятся не как попало, а в организованной структуре (причем любой), то каждый элемент данных приобретает новое свойство (параметр), которое можно назвать адресом. Конечно, работать с упорядоченными данными удобнее, но за это приходится платить их размножением, поскольку адреса элементов данных — это тоже данные; и их тоже надо хранить и обрабатывать.
Самое обидное явление — это когда размер адресных данных становится больше, чем размер самих данных, на которые указывает адрес. В этом случае структура данных напоминает книгу, в которой оглавление занимает большую часть книги. Чтобы избежать такой ситуации, используются специальные методы организации хранения данных.
1.8. Файлы и файловая структура
Единицы представления данных
Существует множество систем представления данных. С одной из них, принятой в информатике и вычислительной технике, двоичным кодом, мы познакомились выше. Наименьшей единицей такого представления является бит (двоичный разряд).
Совокупность двоичных разрядов, выражающих числовые или иные данные, образует некий битовый рисунок. Практика показывает, что с битовым представлением удобнее работать, если этот рисунок имеет регулярную форму. В настоящее время в качестве таких форм используются группы из восьми битов, которые называются байтами.
Понятие о байте как о группе взаимосвязанных битов появилось вместе с первыми образцами электронной вычислительной техники. Долгое время оно было машиннозависимым, то есть для разных вычислительных машин длина байта была разной. Только в конце 60-х годов понятие байта стало универсальным и машиннонезависимым.
Выше мы видели, что во многих случаях целесообразно использовать не восьмиразрядное кодирование, а 16-разрядное, 24-разрядное, 32-разрядное и более. Группа из 16 взаимосвязанных битов (двух взаимосвязанных байтов) в информатике называется словом. Соответственно, группы из четырех взаимосвязанных байтов (32 разряда) называются удвоенным словом, а группы из восьми байтов (64 разряда) — учетверенным словом. Пока, на сегодняшний день, такой системы обозначения достаточно.
Единицы измерения данных
Существует много различных систем и единиц измерения данных. Каждая научная дисциплина и каждая область человеческой деятельности может использовать свои, наиболее удобные или традиционно устоявшиеся единицы. В информатике для измерения данных используют тот факт, что разные типы данных имеют универсальное двоичное представление, и потому вводят свои единицы данных, основанные на нем.
Наименьшей единицей измерения является байт. Поскольку одним байтом, как правило, кодируется один символ текстовой информации, то для текстовых документов размер в байтах соответствует лексическому объему в символах (пока исключение представляет рассмотренная выше универсальная кодировка UNICODE).
Более крупная единица измерения — килобайт (Кбайт). Условно можно считать, что 1 Кбайт примерно равен 1000 байт. Условность связана с тем, что для вычислительной техники, работающей с двоичными числами, более удобно представление чисел в виде степени двойки, и потому на самом деле 1 Кбайт равен 210 байт (1024 байт). Однако всюду, где это не принципиально, с погрешностью до 3% «забывают» о «лишних» байтах.
В килобайтах измеряют сравнительно небольшие объемы данных. Условно можно считать, что одна страница неформатированного машинописного текста составляет около 2 Кбайт.
Более крупные единицы измерения данных образуются добавлением префиксов мега-, гига- тера-; в более крупных единицах пока нет практической надобности.
1 Мбайт = 1024 Кбайт = 220 байт
1 Гбайт = 1024 Мбайт = 230 байт
1 Тбайт = 1024 Гбайт = 240 байт
Особо обратим внимание на то, что при переходе к более крупным единицам погрешность, связанная с округлением, накапливается и становится недопустимой, поэтому на старших единицах измерения округление производится реже.
Единицы хранения данных
При хранении данных решаются две проблемы: как сохранить данные в наиболее компактном виде и как обеспечить к ним удобный и быстрый доступ (если доступ не обеспечен, то это не хранение). Для обеспечения доступа необходимо, чтобы данные имели упорядоченную структуру, а при этом, как мы уже знаем, образуется «паразитная нагрузка» в виде адресных данных. Без них нельзя получить доступ к нужным элементам данных, входящих в структуру.
Поскольку адресные данные тоже имеют размер и тоже подлежат хранению, хранить данные в виде мелких единиц, таких, как байты, неудобно. Их неудобно хранить и в более крупных единицах (килобайтах, мегабайтах и т. п.), поскольку неполное заполнение одной единицы хранения приводит к неэффективности хранения.
В качестве единицы хранения данных принят объект переменной длины, называемый файлом. Файл — это последовательность произвольного числа байтов, обладающая уникальным собственным именем. Обычно в отдельном файле хранят данные, относящиеся к одному типу. В этом случае тип данных определяет тип файла.
Проще всего представить себе файл в виде безразмерного канцелярского досье, в которое можно по желанию добавлять содержимое или извлекать его оттуда. Поскольку в определении файла нет ограничений на размер, можно представить себе файл, имеющий 0 байтов (пустой файл), и файл, имеющий любое число байтов.
В определении файла особое внимание уделяется имени. Оно фактически несет в себе адресные данные, без которых данные, хранящиеся в файле, не станут информацией из-за отсутствия метода доступа к ним. Кроме функций, связанных с адресацией, имя файла может хранить и сведения о типе данных, заключенных в нем. Для автоматических средств работы с данными это важно, поскольку по имени файла они могут автоматически выбрать наиболее адекватный метод для извлечения информации из него.
Понятие о файловой структуре
Требование уникальности имени файла очевидно — без этого невозможно гарантировать однозначность доступа к данным. В средствах вычислительной техники требование уникальности имени обеспечивается автоматически — создать файл с именем, тождественным уже имеющемуся, не может ни пользователь, ни автоматика.
Хранение файлов организуется в иерархической структуре, которая в данном случае называется файловой структурой. В качестве вершины структуры служит имя носителя, на котором сохраняются файлы. Далее файлы группируются в каталоги (папки), внутри которых могут быть созданы вложенные каталоги (папки). Путь доступа к файлу начинается с имени устройства и включает все имена каталогов (папок), через которые он проходит. В качестве разделителя используется символ «\» (обратная косая черта).
Уникальность имени файла обеспечивается тем, что полным именем файла считается собственное имя файла вместе с путем доступа к нему. Понятно, что в этом случае на одном носителе не может быть двух файлов с тождественными полными именами.
Пример записи полного имени файла:
<имя носителя >\< имя каталога-1>\...\<имя каталога-N>\<собственное имя файла>
Вот пример записи двух файлов, имеющих одинаковое собственное имя и размещенных на одном носителе, но отличающихся путем доступа, то есть полным именем. Для наглядности имена каталогов (папок) напечатаны прописными буквами.
С:\ЭЛЕКТРОННАЯ КОММЕРЦИЯ \ ДОКЛАДЫ\ БЕЗОПАСНОСТЬ \ Цифровая подпись
С:\ПРАВО\ГРАЖДАНСКОЕ ПРАВО \ ПРОЕКТЫ\ Цифровая подпись
В данных примерах мы имеем два файла с одинаковым собственным именем Цифровая подпись. Однако это разные файлы. Они различаются полными именами, в состав которых кроме собственного имени входит также и путь доступа. Забегая вперед, скажем, что не только на одном носителе, но и на одном компьютере не может быть двух файлов с одинаковыми полными именами, так как все носители имеют разные имена. А если заглянуть дальше, в Интернет, то можно сказать, что и во всем мире не может быть двух файлов с одинаковыми полными именами, так как в масштабах Всемирной сети каждый компьютер имеет уникальный адрес.
О том, как на практике реализуются файловые структуры, мы узнаем несколько позже, когда познакомимся со средствами вычислительной техники и с понятием файловой системы.
1.9. Информатика
Предмет и задачи информатики
Информатика — это техническая наука, систематизирующая приемы создания, хранения, воспроизведения, обработки и передачи данных средствами вычислительной техники, а также принципы функционирования этих средств и методы управления ими.
Из этого определения видно, что информатика очень близка к технологии, поэтому ее предмет нередко называют информационными технологиями.
Предмет информатики составляют следующие понятия:
• аппаратное обеспечение средств вычислительной техники;
• программное обеспечение средств вычислительной техники;
• средства взаимодействия аппаратного и программного обеспечения;
• средства взаимодействия человека с аппаратными и программными средствами.
Как видно из этого списка, в информатике особое внимание уделяется вопросам взаимодействия. Для этого даже есть специальное понятие — интерфейс. Методы и средства взаимодействия человека с аппаратными и программными средствами называют пользовательским интерфейсом. Соответственно, существуют аппаратные интерфейсы, программные интерфейсы и аппаратно-программные интерфейсы.
Основной задачей информатики является систематизация приемов и методов работы с аппаратными и программными средствами вычислительной техники. Цель систематизации состоит в выделении, внедрении и развитии передовых, наиболее эффективных технологий, в автоматизации этапов работы с данными, а также в методическом обеспечении новых исследований.
Информатика — практическая наука. Ее достижения должны проходить подтверждение практикой и приниматься в тех случаях, когда они соответствуют критерию повышения эффективности. В составе основной задачи информатики сегодня можно выделить следующие направления для практических приложений:
архитектура вычислительных систем (приемы и методы построения систем, предназначенных для автоматической обработки данных);
интерфейсы вычислительных систем (приемы и методы управления аппаратным и программным обеспечением);
программирование (приемы, методы и средства разработки компьютерных программ);
преобразование данных (приемы и методы преобразования структур данных);
защита информации (обобщение приемов, разработка методов и средств защиты данных);
автоматизация (функционирование программно-аппаратных средств без участия человека);
стандартизация (обеспечение совместимости между аппаратными и программными средствами, а также между форматами представления данных, относящихся к различным типам вычислительных систем).
На всех этапах технического обеспечения информационных процессов для информатики ключевым понятием является эффективность. Для аппаратных средств под эффективностью понимают отношение производительности оборудования к его стоимости (с учетом стоимости эксплуатации и обслуживания). Для программного обеспечения под эффективностью понимают производительность лиц, работающих с ним (пользователей). В программировании под эффективностью понимают объем программного кода, создаваемого программистами в единицу времени.
В информатике все жестко ориентировано на эффективность. Вопрос, как сделать ту или иную операцию, для информатики является важным, но не основным. Основным же является вопрос, как сделать данную операцию эффективно.
Истоки и предпосылки информатики
Слово информатика происходит от французского слова Informatique, образованного в результате объединения терминов Informacion (информация) и Automatique (автоматика), что выражает ее суть как науки об автоматической обработке информации. Кроме Франции, термин информатика используется в ряде стран Восточной Европы. В то же время, в большинстве стран Западной Европы и США используется другой термин — Computer Science (наука о средствах вычислительной техники).
В качестве источников информатики обычно называют две науки: документалистику и кибернетику. Документалистика сформировалась в конце XIX века в связи с бурным развитием производственных отношений. Ее расцвет пришелся на 20-30-е годы XX в., а основным предметом стало изучение рациональных средств и методов повышения эффективности документооборота.
Основы близкой к информатике технической науки кибернетики были заложены трудами по математической логике американского математика Норберта Винера, опубликованными в 1948 г., а само название происходит от греческого слова (kyberneticos — искусный в управлении).
Впервые термин - кибернетика ввел французский физик Андре Мари Ампер в первой половине XIX в. Он занимался разработкой единой системы классификации всех наук и обозначил этим термином гипотетическую науку об управлении, которой в то время не существовало, но которая, по его мнению, должна была существовать.
Сегодня предметом кибернетики являются принципы построения и функционирования систем автоматического управления, а основными задачами — методы моделирования процессов принятия решений, связь между психологией человека и математической логикой, связь между информационным процессом отдельного индивидуума и информационными процессами в обществе, разработка принципов и методов искусственного интеллекта. На практике кибернетика во многих случаях опирается на те же программные и аппаратные средства вычислительной техники, что и информатика, а информатика, в свою очередь, заимствует у кибернетики математическую и логическую базу для развития этих средств.
Подведение итогов
Все процессы в природе сопровождаются сигналами. Зарегистрированные сигналы образуют данные. Данные преобразуются, транспортируются и потребляются с помощью методов. При взаимодействии данных и методов образуется информация.
Все процессы в неживой природе протекают в виде непрерывного энергетического обмена. Процессы, характерные для живой природы, отличаются тем, что кроме энергетического обмена в них протекает также направленный обмен веществ. Между процессами обмена веществ и энергетического обмена возможна взаимосвязь — она происходит в виде информационного обмена.
Информационный обмен протекает в виде информационных процессов. Информация — это динамический объект, образующийся в ходе информационного процесса. Он отражает диалектическую связь между объективными данными и субъективными методами. Свойства информации зависят как от свойств данных, так и от свойств методов.
Данные различаются типами, что связано с различиями в физической природе сигналов, при регистрации которых данные образовались. В качестве средства хранения и транспортировки данных используются носители данных. Для удобства операций с данными их структурируют. Наиболее широко используются следующие структуры: линейная, табличная и иерархическая — они различаются методом адресации к данным. При сохранении данных образуются данные нового типа — адресные данные.
Вопросами систематизации приемов и методов создания, хранения, воспроизведения, обработки и передачи данных средствами вычислительной техники занимается техническая наука — информатика. С целью унификации приемов и методов работы с данными в вычислительной технике применяется универсальная система кодирования данных, называемая двоичным кодом. Элементарной единицей представления данных в двоичном коде является двоичный разряд (бит). Другой, более крупной единицей представления данных является байт.
Основной единицей хранения данных является файл. Файл представляет собой последовательность байтов, имеющую собственное имя. Совокупность файлов образует файловую структуру, которая, как правило, относится к иерархическому типу. Полный адрес файла в файловой структуре является уникальным и включает в себя собственное имя файла и путь доступа к нему.
Вопросы для самоконтроля
Как вы можете объяснить бытовой термин «переизбыток информации»? Что имеется в виду: излишняя полнота данных; излишняя сложность методов; неадекватность поступающих данных и методов, имеющихся в наличии?
Как вы понимаете термин «средство массовой информации»? Что это? Средство массовой поставки данных? Средство, обеспечивающее массовое распространение методов? Средство, обеспечивающее процесс информирования путем поставки данных лицам, обладающим адекватными методами их потребления?
Как вы полагаете, являются ли данные товаром? Могут ли методы быть товаром?
На примере коммерческих структур, обеспечивающих коммуникационные услуги, покажите, как взаимодействуют между собой маркетинг данных и маркетинг методов? Можете ли вы привести примеры лизинга данных и методов?
Как вы понимаете диалектическое единство данных и методов? Можете ли вы привести примеры аналогичного единства двух понятий из других научных дисциплин: экономических, правовых?
Как вы понимаете динамический характер информации? Что происходит с ней по окончании информационного процесса?
Можем ли мы утверждать, что данные, полученные в результате информационного процесса, адекватны исходным? Почему? От каких свойств исходных данных и методов зависит адекватность результирующих данных?
Как вы понимаете следующие термины: аппаратно-программный интерфейс, программный интерфейс, аппаратный интерфейс? Как бы вы назвали специальность людей, разрабатывающих аппаратные интерфейсы? Как называется специальность людей, разрабатывающих программные интерфейсы?
На основе личных наблюдений сделайте вывод о том, какими средствами может пользоваться преподаватель для обеспечения интерфейса с аудиторией. Можете ли вы рассмотреть отдельно методические и технические средства, имеющиеся в его распоряжении? Может ли преподаватель рассматривать вашу тетрадь и авторучку как свое средство обеспечения интерфейса? Если да, то в какой мере?
Глава 2. Вычислительная техника
2.1. История развития средств вычислительной техники
От ручных приспособлений к механизации и автоматизации
Если рассмотреть историю развития производительных сил и производственных отношений, можно увидеть, как менялся характер производства: от ручного труда человечество перешло к использованию примитивных орудий труда, затем к механизации труда и далее к автоматизации труда. На последнем этапе XX в. мы наблюдаем новые тенденции гибкой автоматизации труда.
Простейшие ручные приспособления. Аналогичную картину мы можем наблюдать и в области вычислений. С самого начала зарождения рыночных отношений людям потребовались средства для исполнения взаиморасчетов. Простейшим вычислительным приспособлением стал абак. Он первоначально представлял собой глиняную пластину с желобами, в которых раскладывались камни, представляющие числа. Появление абака относят к четвертому тысячелетию до н. э. Местом появления считается Азия.
В средние века в Европе абак сменился разграфленными таблицами. Вычисления с их помощью называли счетом на линиях. Такие таблицы наносили на поверхность стола (не случайно сегодня в английском языке понятия «стол» и «таблица» обозначаются одним словом — «table»). В некоторых случаях счетные таблицы наносили не на поверхность стола, а на его скатерть. Подобными приспособлениями в первую очередь пользовались ростовщики и менялы. Возможность смены скатерти с таблицей они использовали для быстрого перехода от операций с одними денежными системами к операциям с другими системами.
В России счет на линиях не прижился. Здесь еще в средние века на основе абака было разработано другое приспособление — русские счеты. С точки зрения производительности труда, это чрезвычайно эффективное приспособление намного опередило уровень, достигнутый в средневековой Западной Европе. В отдельных случаях оно продолжает использоваться и по сей день.
Механические приспособления. Механизация вычислительных операций началась в XVII в. На первом этапе для создания механических вычислительных устройств использовались механизмы, аналогичные часовым. Первое в мире механическое устройство для выполнения операций сложения было создано в 1623 г. Его разработал Вильгельм Шикард, профессор кафедры восточных языков в университете Тьюбингена (Германия). В наши дни рабочая модель устройства была воспроизведена по чертежам и подтвердила свою работоспособность. Сам изобретатель в письмах называл машину «суммирующими часами».
В 1642 г. французский механик Блез Паскаль (1623-1662) разработал более компактное суммирующее устройство (рис. 2.1), которое стало первым в мире механическим калькулятором, выпускавшимся серийно (главным образом для нужд парижских ростовщиков и менял). В 1673 г. немецкий математик и философ Г. В. Лейбниц (1646-1717) создал механический калькулятор, который мог выполнять операции умножения и деления путем многократного повторения операций сложения и вычитания.
Рис. 2.1. Суммирующая машина Паскаля
На протяжении XVIII в., известного как эпоха Просвещения, появились новые, более совершенные модели, но принцип механического управления вычислительными операциями оставался тем же.
Автоматизация вычислений. Идея автоматизации вычислительных операций пришла из той же часовой промышленности. Старинные монастырские башенные часы были настроены так, чтобы в заданное время включать механизм, связанный с системой колоколов. Такое программирование было жестким — одна и та же операция выполнялась в одно и то же время.
Гибкая автоматизация вычислительных операций. Идея гибкой автоматизации механических устройств с помощью перфорированной бумажной ленты впервые была реализована в 1804 г. в ткацком станке Жаккарда, после чего оставался только один шаг до гибкого управления вычислительными операциями. Этот шаг был сделан выдающимся английским математиком и изобретателем Чарльзом Бэббиджем (1792-1871) в его Аналитической машине, которая, к сожалению, так и не была до конца построена изобретателем при жизни, но была воспроизведена в наши дни по его чертежам, так что сегодня мы вправе говорить об Аналитической машине, как о реально существующем устройстве.
Рис. 2.2. Чарльз Бэббидж
Особенностью Аналитической машины стало то, что здесь впервые был реализован принцип разделения информации на команды и данные. Аналитическая машина содержала два крупных узла: «склад» и «мельницу». Данные вводились в механическую память «склада» путем установки блоков шестерен, а потом обрабатывались в «мельнице» с использованием команд, которые вводились с перфорированных карт.
► Исследователи творчества Чарльза Бэббиджа непременно отмечают особую роль в разработке проекта Аналитической машины графини Огасты Ады Лавлейс (1815-1852), дочери известного поэта лорда Байрона. Именно ей принадлежала идея использования перфорированных карт для программирования вычислительных операций (1843). В частности, в одном из писем она писала: «Аналитическая машина точно так же плетет алгебраические узоры, как ткацкий станок воспроизводит цветы и листья». Леди Аду можно с полным основанием назвать самым первым в мире программистом. Сегодня ее именем назван один из известных языков программирования.
Идея Ч. Бэббиджа о раздельном рассмотрении команд и данных оказалась необычайно плодотворной. В XX в. она была развита в принципах Джона фон Неймана (1941 г.), и сегодня в вычислительной технике принцип раздельного рассмотрения программ и данных имеет очень важное значение. Он учитывается и при разработке архитектур современных компьютеров, и при разработке компьютерных программ.
В какой-то степени благодаря этому принципу функционирует современный Интернет. В состав Всемирной компьютерной сети входит множество самых разных моделей компьютеров, аппаратно несовместимых между собой, на которых работает множество несовместимых программ. Однако, тем не менее, это не мешает нам получать информацию, через какие бы компьютерные системы она ни транслировалась. Это возможно только благодаря тому, что данные рассматриваются отдельно от программ и несовместимость компьютеров и программ не влечет за собой несовместимость в данных. Удивительно, но еще 150 лет назад Чарльз Бэббидж, придумавший взаимодействие «мельницы» и «склада» в ходе автоматических вычислений, предвосхитил современный подход к информации как к продукту взаимодействия методов и данных.
Аналитическая машина Чарльза Бэббиджа может считаться первым в мире механическим компьютером. Как и всем механическим устройствам, ей были присущи такие недостатки, как конструктивная сложность, громоздкость, малая производительность. Однако, тем не менее, это все-таки был компьютер, поскольку машина была способна выполнять вычисления автоматически. Именно отсутствие автоматичности не позволяет рассматривать такие устройства, как абак и русские счеты, в качестве предшественников компьютера.