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

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

В статьях цикла "Компьютер - это очень просто" я постараюсь "на пальцах", а, точнее, на более привычных далекому от информационных технологий обывателю примерах и аналогиях объяснить, что на самом деле представляет собой компьютер, зачем он нужен и то, что, хотим мы того или нет, за компьютерными системами не просто будущее, а самое, что ни на есть настоящее, и, даже, хотя не такое уж и далекое, прошлое.
Данный материал также будет полезен тем, кто умеет «нажимать пимпочки» на компьютере, но хотел бы побольше узнать о том, как устроен компьютер.

Глава первая. Информация и ее представление.

Кто владеет информацией — тот владеет миром.
Ротшильд

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

Однако, представим, что необходимо посчитать сумму заработной платы каждому из 1000 сотрудников в зависимости от отработанных часов? Задача, на самом деле, мало чем, отличается от задачи с чаепитием: также необходимы некоторые начальные данные (оклад, количество отработанных часов, процент налогов и т.п.) на основе которых будет принято решение о сумме выплаты конкретному сотруднику. Задача для опытного бухгалтера тоже не очень сложная, но трудоемкая, и, чем больше сотрудников, тем больше времени необходимо на обработку информации и выдачи результата. А если сотрудников не 1000, а 5000 или 20 000? Вот тут-то на помощь и приходят специальные устройства, которые в обиходе называют компьютерами или ЭВМ (электронно-вычислительными машинами). Компьютеры играючи справляются с расчетами огромных чисел и по быстроте вычислений давно оставили позади самого проворного бухгалтера. Однако, не стоит думать, что компьютеры можно использовать только для числовых вычислений. На самом деле в настоящий момент ЭВМ выполняют обширный круг задач - от развлечения на дому до запуска в космос ракет. Все зависит от того, как подготовить информацию и насколько верным является алгоритм ее обработки. Так как же удается "запихнуть" в компьютер, к примеру, "Войну и мир"?

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

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

Шли годы, развивалась электроника и ученые пришли к выводу, что лучше всего для обработки и хранения информации в электронных устройствах подходит так называемая двоичная система представления информации. Данный вывод вытекает из самой природы электричества: протекает ток, значит можно говорить, что это единица, не протекает - это ноль (или наоборот, все зависит от того, как договориться). И назвали такую единицу информации БИТ. Запомните: бит – это самая маленькая единица измерения информации в компьютере и может принимать значение «0» или «1».

Если с информацией и ее представлением все ясно, перейдем к рассмотрению вопроса хранения информации. Если не все ясно – оставляйте вопросы в комментариях – постараюсь ответить на все.

Глава вторая. Хранение информации.

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

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

Можно договориться, что, к примеру, строчная латинская буква «а» будет обозначена числом 97 (по привычной нам десятичной системе счисления), или, если перевести в двоичную (нолики и единицы): 01100001. Если опять вернуться к кранам, то это означает, что необходимо перекрыть 1-й, 4-й, 5-й, 6-й, 7-й краны. И это будет верно, да не совсем. Дело в том, что для усложнения жизни простым обывателям компьютерные гении условились начинать счет не как простые смертные с единицы, а с нуля (надо же было как-то выделиться среди остальных  ). Поэтому, если уж быть до конца точным, то необходимо перерыть 0-й, 3-й, 4-й, 5-й и 6-й краны. Те, кто только начинает изучать программирование, часто делают ошибки, не принимая во внимание особенности системы нумерации в компьютерном мире.

С представлением буквы «а» в мире компьютеров мы, надеюсь, разобрались. Но программисты решили всех запутать и в таком, казалось бы таком простом деле, как кодирование букв. И если с пресловутой строчной латинской буквой «а» все более-менее стандартно в различных системах, то, к примеру, с кириллической буквой «ю» уже не все так просто: одна группа программистов решила обозначить ее как 11000000, а другая как 11111110. И возникли кодировки. Таким образом, понятие кодировки применительно к отображению компьютером текстовой информации можно рассматривать как тот или иной набор правил по отображению символов в зависимости от числовой последовательности, с помощью которой закодировали ту или иную букву. Те, кто работал с компьютером наверняка сталкивались с ситуацией, когда электронное письмо или сайт в Интернете отображается «кракозябликами» (т.е. нечитаемым набором символов) - причина в том, что компьютер выбрал неправильную кодировку для отображения информации. К счастью современные компьютерные программы достаточно «умны» чтобы самостоятельно распознать, что к чему и правильно отобразить символы, однако, это случается не всегда. Тогда необходимо помочь компьютеру и вручную указать (часто методом перебора) необходимую кодировку (обычно это делается через меню «Вид->Кодировка» в используемой программе).

Мы рассмотрели ситуацию, когда символов алфавита не много (не более 256), а как быть с китайскими иероглифами? Ведь их там тысячи! Поэтому придумали кодировки, состоящие из двух последовательностей по 8 бит. А это 16 бит. Два в степени 16 не много ни мало 65 536 различных комбинаций! (напомню, что для того, чтобы узнать возможное количество вариантов необходимо основание системы счисления – в данном случае двойка так как система двоичная, возвести в степень по количеству элементов. Таким образом для двух цифр в десятичной системе счисления количество возможных вариантов равно 100 – т.е. это 10 в степени 2 - если не верите – напишите на листочке последовательность 00,01,02…99 и посчитайте, только чур «0» тоже считать :) (может, начиная счет с «0» программисты не так уж и начудили? :)) ). Но вернемся к символам. С помощью 65 536 можно закодировать (представить) все известные основные символы использующихся людьми букв и иероглифов.
На данный момент кодировки на основе 8 бит считаются устаревшими, а более современные на основе 16 бит были названы UNICODE или, сокращенно, UTF. Данный подход избавляет от необходимости подбирать кодировки, так как все необходимые символы собраны в одной таблице. К сожалению, даже по прошествии почти 20 лет с момента когда был придуман UNICODE, далеко не вся текстовая информация кодируется 16 битами.

Вернемся к нашим кранам. Я не зря выбрал именно 8 (не семь или 10 кранов). Дело в том, что 8 бит приняли также за единицу информации и назвали БАЙТ. На самом деле компьютер не оперирует битами, а, как минимум, байтами. Как мы увидели выше с помощью байта можно закодировать 256 различных состояний (или все символы кириллицы), а с помощью двух байтов – практически все буквы, иероглифы, символы греческого алфавита и т.д.
Если с буквами и другими символами все понятно, то интересующийся читатель может задать вполне резонный вопрос: а как же закодировать фотографию? Фотография не состоит из букв и тире. Правильно, из букв не состоит. Фотография состоит из… точек! Взгляните на фотографию в газете под увеличительным стеклом и увидите, что на самом деле рисунок не сплошной, а состоит из маленьких близкорасположенных точек. На расстоянии точки сливаются и глазу предстает картинка во всей своей красе (ну, или посредственности :)). Те, кто догадался как картинки хранятся в компьютере могут ставить себе большой «+», а остальным заинтересовавшимся придется ждать продолжения.

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