Не старайтесь рассмотреть "на просвет" дискету. Информация на ней записана таким мелким шрифтом, что вряд ли вы что-либо на ней увидите
Вид материала | Документы |
- Сценарий праздника «Пою моё Отечество», 86.04kb.
- Мирзаевой Ольгой Омаровной учителем биологии сош №4 сочи 2004 г пояснительная записка, 214.73kb.
- Сценарий к школьному мероприятию «Города-герои», 103.86kb.
- Макроэкономический анализ инфляции: её виды, причины и последствия, 2256.72kb.
- Книге, и оказалось что-нибудь такое, что против моего ожидания может кого-либо обидеть,, 7908.01kb.
- Название. Год. Цвет. Хронометраж, 1090.94kb.
- Инфляция. Антиинфляционная политика государства. Роль цкб, 183.1kb.
- Спрятанная война артем боровик, 2084.95kb.
- Августин о философии, 80.38kb.
- Викторина для учащихся младших классов Квитко Л. А викторина «Портреты героев сказок», 30.59kb.
Введение
Не старайтесь рассмотреть "на просвет" дискету. Информация на ней записана таким мелким шрифтом, что вряд ли вы что-либо на ней увидите.
Это, естественно, шутка. Но ведь в каждой шутке есть доля правды.
Мы не становимся программистами с молоком матери. Либо мы слушаем курс лекций, либо "продираемся" сквозь один (или не один) учебник. Но интуитивно мы довольно хорошо знакомы с принципами алгоритмизации, а именно она и является "родным языком" программиста. Да и не только программиста, а любого человека. Мы знаем, что все крупные действия разлагаются на более мелкие, элементарные. Знаем, что, выполняя маленькие действия, в некоторые моменты приходится принимать решение - в каком направлении идти дальше. Иногда группы действий приходится повторять, иногда объединять в нечто единое целое и т.д.
Никаких совсем уж принципиальных новшеств при знакомстве с алгоритмизацией мы не встречаем. Однако, для успешного с нею знакомства нам, как правило, не хватает самой малости - букваря. Той самой элементарной книги, которая рассказала бы основы, азы. Причем, не разбавленные лишней информацией. Конечно, книг по "основам" очень много. И все они разные: и для крутых программистов и пользователей, и для начинающих. Каждая из таких книг, как правило, посвящена какой-либо одной теме: либо языку программирования, либо устройству компьютера, либо чему-то еще. А если она действительно обзорная (обо всем по порядку), то, наверняка, для детей: с цветными картинками, с птичками и бабочками. Бесспорно, такие книги нужны. Но нужны они детям...
Хорошо бы иметь одну большую книгу, в которой было бы собрано практически все необходимое, без лишней, ненужной информации, написанную на среднем уровне сложности и организованную таким способом, чтобы в ней можно было легко отыскать то, что нужно. Еще было бы хорошо, если бы эта книга была написана не на языке племени Суахили, чтобы не тратить времени на перевод.
Именно такая цель и преследовалась при создании книги.
Разумеется, охватить всё невозможно. За деревьями не увидишь леса. Приоритет темам назначался исходя из примерной тематики школьного курса и программы вступительных вузовских экзаменов.
О том, что конкретно содержится в книге, можно понять по содержанию.
Если в ней что-либо и содержится, то это факты, множество фактов, и я искренне надеюсь, что все они верны.
P.S.
1. Хочется дать совет тем, кто только начинает изучать программирование: не бойтесь ошибиться, экспериментируйте, и вы будете вознаграждены за свои старания пониманием того, как работает ваш персональный компьютер.
2. Приношу свои извинения тем читателям, которые сочтут оскорбительным для своего интеллекта читать некоторые примитивные вещи, которые будут изложены в начале книги. Надеюсь, вы будете сполна реабилитированы, если (все-таки оскорбившись) дочитаете хотя бы до середины.
К сожалению, очень много наших соотечественников не имеют ни малейшего понятия о том, как работать с компьютером, ни тем более о том, как он устроен. В разговорах часто слышишь режущие слух фразы. Причем, от людей, которых никак не назовешь невежественными. И не их в том вина: Большая Советская Энциклопедия шестидесятых (!) годов издания трактует кибернетику как лженауку...
Глава I
Устройство и работа компьютера
Современная жизнь общества диктует нам свои законы. Не за горами тот день, когда без элементарного знания компьютерной техники нельзя будет ступить и шагу. И вполне обоснованно, если, желая получить хорошую работу, вы постоянно натыкаетесь на следующую фразу: «ПК, приложения Windows обязательно…»
Постичь же эти азы (вернее, начать их постигать) порой мешает чисто субъективная причина. Между человеком и компьютером (точнее, представлениями о нем) встает психологический барьер. Он-то как раз и не позволяет взглянуть на проблему с достойной оценкой своих собственных возможностей. Чтобы в какой-то мере ликвидировать этот барьер, попробуем поговорить о некоторых простых вещах.
«Что заложено в компьютере?»
Не случайно слово «Заложено» напечатано без кавычек. Дело в том, что когда разговариваешь с начинающим, обязательно услышишь это слово. Причем, повторяется оно очень часто.
Давайте раз и навсегда договоримся: слова "заложено" нет!!! Вообще-то, оно, конечно, есть в русском языке, но применять его в таком контексте, мягко говоря, вульгарно. Нужно говорить "записано" (да и то, не «в компьютере», а на дисках, лентах и т.д.).
« Что может этот компьютер?» (Опять же традиционный вопрос).
Не будем придираться к такому применению слова. Может, хотя и оно здесь звучит как-то неестественно: придает некоторую одушевленность этой, хоть и электронной, но все-таки железяке.
Компьютер может все. Компьютер не может ничего... Оба этих высказывания, как ни парадоксально, справедливы. Все возможности компьютера определяются в первую очередь программой, по которой этот компьютер работает. Составляет программу человек, записывает ее в память компьютера и "предлагает" ему эту самую программу выполнить. А тот уже ее выполняет. Ту же самую работу мог бы выполнить и сам человек, но ему потребовалось бы для этого гораздо больше времени (раз, эдак, в несколько миллиардов больше, чем компьютеру). К тому же, человек (почему-то) иногда ошибается, иногда хочет есть, пить, спать, он иногда устает, да и вообще человек - не вполне надежное "устройство".
Итак, компьютер без программы не может ничего. С программой... Стоп. Нет, не все. Для начала, компьютеры бывают разные. Одни с трудом выполняют простенькие арифметические программы, другие в мгновение ока решают сложнейшие. У одних памяти - о-го-го! У других - кот наплакал. У всех свои способности. Есть, однако, "прокол" у всех без исключения компьютеров. Они не умеют думать, мыслить. У них нет интеллекта. Они выполняют (беспрекословно, последовательно, шаг за шагом) волю человека. И эту самую волю человек сообщает компьютеру с помощью программы. Поэтому, слово "может" старайтесь, по возможности, не произносить применительно к компьютерам, а уж если обронили, то относите его (слово) к программе.
« Ну и глупая же эта машина!!!» (Часто встречающаяся реплика).
Да. Глупая. Только говорить так о машине - не совсем правильно. Разве может быть глупым телевизор или, например, холодильник? А отличаются они от компьютера тем, что "делают" одно и то же изо дня в день, в то время как функции компьютера программирует человек. Он сообщает компьютеру программу действий и заставляет его по этой программе работать. А впечатление создается такое, будто бы компьютер выполняет работу сам, без участия человека, без его воли. Это неверно.
Скорее, программа глупая (коли уж кто-то глупый!). Компьютеру что "сказали", то и делает. Он не умеет думать!!! Еще раз: у него нет интеллекта. Он раб программы. Научитесь создавать "умные" программы и машина с ними станет "умной".
Мы тут обронили слово * Память *. Да, в компьютере есть память. Выглядит она в виде маленьких пластмассовых кирпичиков - микросхем. Если память, то, наверное, должна что-то запоминать? Да. Именно так. Она запоминает напряжения. В простейшем случае: подключили к выводу микросхемы напряжение, потом отключили, а на ней напряжение осталось. Запомнила. На практике, конечно, немного сложнее, но смысл тот же.
А напряжения эти микросхема не измеряет. Для нее напряжение либо есть (обычно это плюс 5 вольт) либо его нет (около нуля). Если напряжение есть, то говорят, что это Логическая Единица. Если нет - то Логический Ноль.
Одна такая микросхема памяти может запомнить до полумиллиона и больше таких напряжений (нулей или единиц). Естественно, каждое напряжение запоминается и хранится отдельно, в своей ячейке (там, внутри микросхемы). Такая ячейка называется Битом. Восемь таких ячеек (обычно смежных) называются Байтом. Количество таких восьмерок бит (количество байт) характеризует объём памяти компьютера.
Бит хранит одно из двух значений: 0 или 1. Поэтому, говоря об устройстве компьютера, удобно пользоваться двоичной системой счисления, у которой "в арсенале" только 2 цифры: 0 и 1. Используются также более близкие к двоичной (чем привычная нам десятичная) системы с основаниями 8 (восьмеричная) и 16 (шестнадцатеричная). Для детального (не поверхностного) изучения, конечно же, нужно иметь представление об этих системах счисления. Нет смысла излагать их здесь. Они прекрасно описаны во многих учебниках и по информатике, и по математике.
Байт - очень маленькая единица, неудобная в обращении (согласитесь, было бы неудобно, если бы сегодня были в ходу копейки, и хлеб стоил бы 600 копеек). На практике применяют другие, более крупные единицы: Килобайт (обозначается буквой К). Содержит не 1000, как подсказывает интуиция, а 1024 байта (2 в 10 степени). Мегабайт содержит 1024 килобайта (обозначается буквой М). Гигабайт (G) содержит 1024 мегабайта. Конечно же, существуют и другие единицы, как, например Терабайт и т.д.
Простейшие компьютеры имеют десятки килобайт памяти, а современные персональные ЭВМ – десятки гигабайт.
Разумеется, все байты пронумерованы. Причем, нумерация начинается с нуля, а при записи номера обычно пользуются шестнадцатеричными числами. Такой номер ячейки (байта) называется его Адресом.
Биты (внутри байта) тоже пронумерованы от 0 до 7. При этом нулевой бит называется младшим, а седьмой - старшим.
Часто рассматривают два рядом "стоящие" Байта как одно целое. Такая пара называется словом. Слово - это 2 Байта (16 смежных Бит памяти). Двойное слово - это 32 смежных бита (или 4 байта).
Назначение памяти - хранение информации. От того, как велик объём памяти компьютера, зависят его "способности" выполнять большие программы, обрабатывать большое количество данных. Программа, выполняемая компьютером, всегда находится в его памяти. Бывает, что вся программа целиком не помещается в памяти, тогда ее выполняют по частям.
О том, что еще находится внутри компьютера, поговорим позже. Здесь же пока ограничимся памятью.
Итак, в компьютере есть память. В эту память можно (каким-то образом) записать программу и заставить компьютер ее выполнять. Выполняет программу процессор (о нем позже). Поговорим в двух словах о том, как это делается.
Процессор считывает из памяти очередную ячейку (байт). Комбинации нулей и единиц в байте "говорят" процессору о том, что теперь нужно делать. Такая комбинация распознается процессором (так уж он устроен) и выполняется. Приведем простейший пример (гипотетический). Пусть комбинация 01011001 означает "сложить содержимое первой и третьей ячеек памяти". Такое указание процессору называется машинной командой, а набор таких команд (которые распознает процессор) называется системой команд. Каждый процессор имеет свою систему команд (правда, бывают одинаковые системы команд). Эти команды описаны в справочниках по процессорам и еще во многих книгах.
Выполнив очередную команду, процессор принимается за следующую и т.д. Конечно, возникает вопрос: но ведь команды когда-то закончатся. Ведь память не бесконечна. Совершенно верно. Но... однажды процессор может встретить такую команду: "перейти к выполнению команды по адресу 0000", и опять все сначала. Вообще, процессор практически никогда не стоит без дела.
В списке машинных команд различных процессоров, как правило, присутствуют команды пересылки данных из одной ячейки в другую, команды сложения и вычитания, часто бывают команды умножения и деления, команды оценки результата операций, команды перехода к выполнению другого участка программы и другие. Каждая команда проста по своему содержанию и выполняет элементарные операции. Однако из этих команд складываются огромные программы для решения сложнейших задач.
Теперь несколько слов о программах. Программа представляет собой последовательность машинных команд, состоящих из нулей и единиц. Вся эта последовательность называется машинным кодом программы (или объектным кодом). Каждая команда "приказывает" процессору выполнить какие-то действия.
Это не значит, что нужно запоминать все эти комбинации нулей и единиц для каждой команды (хотя профессионалу неплохо бы!). Каждая команда имеет свое название (мнемокод). Достаточно записать программу в виде названий команд, а потом компьютер (опять же по специальной программе) сам "переведет" каждую строку такой программы в нули и единицы. Такая программа, состоящая из мнемокодов машинных команд, называется ассемблерной (а язык мнемокодов - ассемблером). Процесс перевода с языка (какого угодно, не обязательно ассемблера) в машинный код называется компиляцией. А программа, которая переводит другую программу на машинный язык, называется компилятором.
На языке Ассемблера программа записывается мнемокодами команд процессора. Писать такие программы - очень трудоемкое дело. Нужно досконально знать компьютер во всех его тонкостях. Представлять взаимодействие его отдельных узлов, знать распределение памяти и многое-многое другое.
Писать программы на языке Ассемблера - почти одно и то же, что писать их в машинных кодах (нулями и единицами). Одному "слову" на языке ассемблера соответствует одна машинная команда. Программы на ассемблере пишут только профессионалы. И то, лишь такие программы, которые невозможно написать на других языках. Здесь можно реализовать все возможности компьютера. Естественно, уровень такого языка программирования считается низким (обратите внимание – «низкий» не значит плохой!!! Разделение языков на низкий и высокий уровень нужно только для того, чтобы определить, как он «относится» к процессору).
Кроме ассемблера есть еще много-много других языков для написания программ.
Программа, написанная на другом языке (более высокого уровня), тоже может быть транслирована (компилирована) в объектный код. И делают это другие программы - компиляторы. Таких языков много, и для каждого языка есть своя программа-компилятор, которая переводит программу, написанную на этом языке, в программу на языке, понятном процессору, т.е. в нули и единицы (в объектный код).
Каждому "слову" из такого языка соответствует несколько машинных команд (до нескольких тысяч). И компилятор занимается именно тем, что переводит эти программы на язык машинных команд.
Программа в виде предложений языка программирования называется исходной программой. Есть такой термин – «исходный текст» (или в разговорном - «исходник»). Когда так говорят, то имеют в виду программу, написанную на каком-либо языке программирования высокого уровня. После компиляции исходного текста получается Объектный Код программы.
Мы не будем интересоваться объектным кодом программы, ее представлением в виде нулей и единиц. Нам достаточно знать, что он существует, и что процессор выполняет именно эту программу. Ее создает компилятор по образу и подобию исходного текста программы: переводит с какого-то языка на машинный, чтобы потом процессор мог ее выполнить.
Не будем мы интересоваться также и расположением программы в памяти, ее размером. Все эти вопросы решаются с помощью других программ, причем, без нашего участия. Как именно это происходит - будет понятно чуть позже.
И, наконец, еще одно очень важное замечание: компилятор никогда не ошибается: если программа не работает, то виноват программист, а не компилятор.
Теперь несколько слов о том, как попадают программы в память, как заставить процессор выполнять программы... Здесь может возникнуть огромное множество вопросов, на большинство из которых один ответ: об этом позаботились разработчики архитектуры компьютера. Заполнить многие пробелы нам поможет рассмотрение процесса включения компьютера.
Итак, включили компьютер. Процессор (проверив память...) начал выполнять программу - загрузчик. Так задумали разработчики и записали эту программу в специальную отдельную память, которая не стирается, даже если выключить питание. Эта программа включает дисковод (и о нем позже), считывает с диска (с заранее договоренного места) другую программу и запускает ее на выполнение. Эта другая программа уже позволяет нам вводить в память (загружать) следующие программы, в том числе и компиляторы, работать с диском, с клавиатурой и т. д.
Дальнейшее наше общение с компьютером происходит уже под управлением каких-то других программ, которые помогают нам вводить в память машины информацию, тексты своих программ, компилировать свои программы и запускать их на выполнение.
w1.1.1. В чем состоит основное отличие компьютера от других электронных устройств?
w1.1.2. Для чего в компьютере нужна память?
w1.1.3. Каков объем памяти современных компьютеров?
w1.1.4. Что такое система команд?
w1.1.5. Что представляет из себя программа?
w1.1.6. Что такое компилятор? Каковы его функции?
Hardware и Software
Подобно тому, как все живое не земле являет собой неделимое единство материального и нематериального, духовного, - компьютеры "существуют" в виде двух неделимых составляющих: «железа» (hardware) и программного обеспечения (software).
Спорный вопрос, "может ли духовное существовать отдельно от материального" в некотором смысле применим и для компьютеров. Программу можно написать на листе бумаги, записать на диск. Но будет ли это программа? Скорее это будет ее изображение, проекция на материальный мир. А в полном смысле программа станет таковой лишь "внутри" компьютера в процессе его работы.
То же можно сказать и о «железе». Без программы компьютер - это ящик с красивыми яркими детальками. Куча интересных безделушек для детей младшего возраста.
Рассматривая устройство и принцип работы компьютера, тем не менее, будем четко разделять обе стороны этого единства, т.к. во-первых, для комплексного изучения проблемы нужно иметь специальные знания в области электроники, а во-вторых, - эта книга не по устройству компьютера, но больше по программированию. И все главы и главки, программированию не посвященные, представляют собой скорее обзор вопроса, нежели его рассмотрение.
«Железо»
В этом параграфе попробуем разобраться, что находится внутри компьютера, для чего нужен тот или иной узел, блок, плата, как они взаимодействуют. Без этого материала будет тяжело разобраться со многими задачами в следующих главах. Знать или, по крайней мере, иметь представление об устройстве компьютера просто необходимо (хотя бы поверхностно, для общего развития).
Итак, что же внутри? Посмотрим, приоткрыв крышку современного компьютера. Одна плата сравнительно больших размеров, называемая материнской платой, установлена на дне (если, конечно, корпус горизонтального типа). На ней расположены большие микросхемы и несколько разъемов, в которые вставлены другие платы, размером поменьше. Это интерфейсные платы. Несколько выше материнской платы расположены дисководы (как правило, их три). Один из них имеет выведенные наружу прорези для вставки дискет. Второй дисковод – CD-ROM – предназначен для считывания или записи информации на лазерные диски. Третий размещен целиком в корпусе компьютера и доступ к нему возможен только после открытия корпуса системного блока. Это винчестер. Рядом с дисководами - блок питания. Все устройства соединены между собой проводами в виде лент. Так устроено большинство из современных IBM PC - наиболее популярных и распространенных в настоящее время компьютеров.
Теперь несколько слов о структурной схеме. В различной литературе по компьютерам структурную схему изображают по-разному. При этом порой приводятся различные доказательства, что именно эта схема является единственно правильной. Различаются же они в основном степенью подробности, углубленности. Часто встречается критика авторов по поводу вопроса о том, в каком квадратике расположить тот или иной компонент. Например, входит ли память в состав процессорного блока, либо же ее нужно изображать как отдельное, самостоятельное устройство.
Все эти споры представляются абсолютно бессмысленными, т.к. сама по себе структурная схема - это "...условное изображение...". Еще раз подчеркнем - УСЛОВНОЕ. Теперь о подробности схемы. Для чего же мы тогда здесь так много об этом говорим? А для того, чтобы вы знали что ответить, если вас однажды упрекнут в том, будто бы ваша схема слишком примитивна.
НГМД
(флоппи)
Монитор