Компьютер - это очень просто. Часть 2.

Продолжение. Начало см. здесь

Итак, картинка состоит из точек, еще их в мире компьютеров могут называть пикселями (от анг. pixel). Кстати, идея составления изображения из точек стара как мир – вспомните мозаику.
Давайте проведем эксперимент: возьмите детские кубики и попробуйте из них сложить какую-нибудь простую картинку, например домик. Получилось грубовато? – отойдите на пару метров. Получше? А теперь возьмите кубики или пуговицы поменьше и на то же площади, что и домик только что выложенный, повторите картинку. Получилось не так грубо и уже даже похоже на домик? Отлично!

Только что мы воочию познакомились с понятием разрешения. Разрешение – это количество точек (кубиков) на единицу длины. Поскольку США впереди планета всей по информатизации, то разрешение принято указывать в количестве точек на дюйм. Чем больше точек может поместиться в дюйме, тем качественнее картинка. Таким образом, если один принтер (это такая «печатная машинка» подключаемая к компьютеру) может печатать с разрешение 300 точек на дюйм, а второй – 600 точек, то именно второй способен более точно отобразить картинку.

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

Кстати, по поводу фотографий. Важно. Когда говорят о разрешении фотографии имеют в виду не количество точек на дюйм, а количество точек по горизонтали и вертикали. Например фотоснимок с разрешением 640х480 или 3264x2448 пикселя. Понятно, что во втором случае можно получить более качественный отпечаток, чем в первом, так как для отображения одного и того же фрагмента используется большее количество элементов (точек).

Однако вернемся к методам хранения фотографии. Достаточно описать сколько точек составляют ширину и длину фотоизображения, а затем последовательно записывать информацию о каждой точке – ее цвет. При отображении картинки компьютер считывает точку за точкой и начинает новую строку основываясь на информации о количестве точек в строке. Все просто! Но, на самом деле, просто, да не совсем приемлемо. Чем больше пикселей (при разрешении 640х480 это 307 200 точек, а при 3264x2448 - это уже 7 990 272 точек!, что больше в 26 раз) тем больше места требуется для хранения фотоснимка. Выделим для хранения каждой точки 1 байт (8 бит). Тогда для хранения даже первого снимка из 307 200 точек необходимо 307 200*8=2 457 600 ячеек памяти. Но в таком случае наш рисунок будет иметь максимум 256 цветов, ведь мы помним, что 1 байт может принимать 256 различных значений. А современные цифровые фотографии несут информацию о десятках тысяч или миллионах цветов (вернее оттенков, так как основных цветов, как мы знаем, всего семь). И каждая точка (пиксель) кодируется не одним байтом, а, как минимум двумя (при 2-х байтном кодировании, как я уже упоминал выше, можно получить 65 536 различных состояний), а то и 3-мя или 4-мя байтами. А это означает, что места для хранения необходимо в два, три или четыре раза больше. Поэтому разработаны специальные довольно сложные алгоритмы сжатия информации о фотоснимке. Как правило, при сжатии качество фотоснимка несколько ухудшается так как некоторая информация выбрасывается из первоначальной картинки, однако ощутимо на визуальное качество фотоснимка это не влияет, а вот количество необходимых ячеек памяти для хранения картинки уменьшается в разы!

Все вышеприведенное справедливо и для хранения видео, ведь, недаром, видео еще иногда называют движущейся картинкой и каждый кадр можно рассматривать как фотографию. Но, опять же, не все так просто: если каждый кадр рассматривать в отдельности и сжимать по методам обработки изображений, то получается все равно достаточно много информации, ведь каждая секунда видео может содержать 25 кадров, к примеру. Поэтому для сжатия движущегося изображения применяют алгоритмы, разработанные специально для видео с учетом изменения картинки. Рассмотрим простой пример. Пусть есть сюжет длиной 5 000 кадров где на заднем плане декорации, а на переднем диктор. Причем декорации неподвижны относительно камеры, и только диктор один меняет свое положение. Так зачем 5 000 раз сохранять информацию о декорациях, если можно сделать это один! раз, а потом в 5 000 кадрах использовать?! Конечно, на практике применяемые алгоритмы намного сложнее и используют сложный математический аппарат, но идею, думаю, вы уловили.

Вернемся к нашим битам и байтам. Как можно было понять из вышесказанного – байт, довольно мелкая единица информации, раз для несжатой картинки при разрешении 640х480 и 256 цветах необходимо 307 200 байт. Поэтому на практике используются величины с приставками кило-, мега-, гига-, а, с недавнего времени, и терабайт. Так, наши 307 200 байт можно записать как 300 килобайт, или, сокращенно - 300 КБ. Внимательный читатель, наверно, заметил некоторую неувязку, не 307,2 КБ, а именно! 300 кБ. Это от того, что 1 килобайт равен не 1000 байт, как принято для граммов, метров и т.п. с приставкой кило, а 1024 байтам.

-И тут эти программисты решили все запутать! – воскликнет кто-то

Однако, не показалось ли вам странным, что 640 умноженное на 480 в переводе на килобайты (с учетом 1 КБ = 1024 б) получается круглым числом в десятичной системе, а именно 300-м? А все из-за того, что десятичная система счисления не является столь удобной для расчета в мире битов и байтов как в повседневной жизни. И то, что мы называем «круглым» в десятичной системе, совсем не является таковым на «языке компьютера». Для удобства разработки программ вообще применяют так называемую 16-тиричную систему счисления. В ней используются арабские цифры от 0 до 9 и буквы латинского алфавита A,B,C,D,E,F. Для того чтобы не путать с десятеричной системой обычно ставят 0х перед числом в 16-тиричной системе. Таким образом 10 и 0х10 – разные числа в компьютерной документации. Если перевести 0xFF в десятеричную систему получим… 255, а 65 535 (в обоих случаях именно пятерка в конце – если учитывать 0 то получаем 256 или 65 536 вариантов соответственно) в 16-тиричной системе, как не трудно догадаться, будет 0хFFFF. А как в 16-тиричной системе будут писаться десятичные 256 и 65 536 ? – 0х100 и 0х1000 соответственно. Не оправдали, получается круглая арифметика?

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

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

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

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

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

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

Свойство магнитной записи уже тогда использовалось для построения устройств хранения данных, но они были громоздки, дороги и позволяли хранить очень маленькие объемы данных, поэтому широко применялись другие носители двоичной информации, как, например, перфолента или перфокарта. Перфокарта – это как правило картонная карта на которой пробиты дырочки. Перфолента, соответственно, лента с дырочками в несколько рядов. Как вы уже, несомненно, догадались – наличие дырочки – это единица, нет дырочки – ноль. Дешевизна, доступность и небольшой вес материалов для перфоленты, простота устройств для перфорации, легкость считывания, сделали в свое время популярными эти картонки с дырочками. Были и недостатки: при ошибке в подготовке данных для перфорации приходилось выбрасывать одну или несколько перфокарт и перебивать дырочки заново на новых; для выполнения серьезных расчетов требовалась целая стопка, а то и несколько стопок; времени на перфорацию и считывание уходило много.

Шли годы, совершенствовалась технология записи на магнитные носители, и появились так называемые жесткие диски (HDD – Hard Disk Drive) размером с большую книгу, а также гибкие магнитные диски, или, в простонародье, дискеты. Первые представляют собой электронное устройство внутри которого смонтировано несколько дисков с нанесенным на них магнитным слоем, электромоторы, головки для считывания и записи информации, электроника для управления всем вышеперечисленным. И хотя HDD очень сложное устройство – принцип работы стар как мир и известен со времен патефонных пластинок – диски вращаются, поверхность разбита на дорожки, а магнитные головки (как и игла в патефонах, только не касаясь самих дисков) считывают информацию и передают дальше в недра компьютера.

Дискета – это один гибкий диск с магнитной поверхностью в защитном корпусе. Для записи или считывания используются устройства которые называют приводами гибких дисков (FDD – floppy disk drive). Дискеты имеют небольшой размер, легко транспортируются, однако не долговечны, подвержены влиянию сильных магнитных полей (поэтому не подносите дискету к магниту или акустической системе) и вмещают очень мало информации по сегодняшним меркам. На данный момент дискеты практически вышли из употребления, уступив место оптическим дискам (CD, DVD, Blue Ray) или еще более компактным так называемым флешкам (Flash Drive) – устройствам на твердотельных полупроводниках не требующих постоянной подачи напряжения для сохранения того или иного состояния.

В заключение по способам представления и хранения информации подытожу: двоичная система представления и хранения информации оказалась настолько универсальной, что с ее помощью можно закодировать практические любые данные, а хранить самыми различными способами, от дырочек в картоне, до намагниченных молекул, – ведь необходимо запомнить всего два состояния – 1 или 0.

До новых встреч!
Продолжение см. здесь