Пятница, 02 Ноябрь 2012 01:00

Принципы работы компьютера. Языки программирования.

Оцените материал
(10 голосов)

1.1. Двоичная система работы процессора

Прежде чем начинать создавать программы, нужно понять, как работает компьютер. Любой программист должен понимать, как будет выполняться программа. Это позволит эффективнее использовать все доступные ресурсы и лучше писать код.

 

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

Однако основные принципы работы компьютера, заложенные во времена их рождения, действуют до сих пор. Данные пере даются с помощью сигнала методом "имеется сигнал или нет". Так появился "бит". Бит - это единица информации, которая может принимать значение 0 или 1. Восемь бит объединяются в байт, один байт равен 8 битам. Число 8 появилось из-за того что первые компьютеры были восьмиразрядными и могли работать одновременно только с 8 разрядами, например, 01011001. Первые нули можно убирать.

В один байт можно записать любое число от 0 до 255. Указанный диапазон чисел очень мал, поэтому чаще используют более крупные диапазоны: два байта = слово, два слова = двойное слово.

Компьютер стал работать в двоичной системе счисления. Любое десятичное число можно записать как двоичное. Подробное преобразование рассматривать не будем, если кому-то интересно, пишите в комментариях – расскажу.

В компьютере принято вести расчет в двоичной или шестнадцатеричной систе­ме. Вторая стала использоваться, когда компьютеры стали 16-разрядными. При написании программ на Delphiбудем использовать привычную десятичную систему, потому что компилятор сам переведет все числа в нужный процессору вид, но понимать, с какими числами работает процессор, очень важно.

Шестнадцатеричная система выглядит по-другому. Каждый разряд со­держит шестнадцать состояний. Поэтому один разряд может принимать значения: 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F. Буква "А" соответствует цифре 10 в десятичной системе, "В" - 11 и т. д.

Например, число 1B в шестнадцатеричной системе равно 27 в десятичной.

На протяжении всех материалов мы будем иногда встречаться с шестнадцатеричной сис­темой исчисления. В этом случае, чтобы отличать шестнадцатеричное число от десятичного, перед ним будет стоять знак #, например, #25, так принято в Delphi.

С числами с плавающей точкой работа идёт совершенно не так, рассматривать это мы не будем.

Теперь разберемся отрицательными числами. Если заранее предусмотрено, что число может быть отрицательным, то его длина сокращается на один бит, который отводится под знак числа. Если первый бит равен 1, то число отрицательное, иначе положительное.

В дробных числах один байт может быть отведен для целой части и один для дробной. За счет это­го дробные числа всегда будут занимать больше памяти, и операции с ними будут проходить дольше.

 

1.2. Машинный язык

Все данные на диске, в том числе и текстовые файлы, хранятся в двоичном виде. Точно так же выглядит и любая программа, толь­ко ее называют машинным кодом. Рассмотрим его подробнее.

Любая программа – это последовательность команд, которые называются процессорными инструкциями. Во время запуска программы компьютер загружает ее машинный код в оперативную память и начинает выполнять команду за командой. Задача программиста – написать эти ин­струкции так, чтобы компьютер понял, что от него хотят.

Реальная программа, которую выполняет компьютер, представляет собой по­следовательность единиц и нулей. Такую последовательность называют машинным языком.

Например, команда сложения двух регистров в шестнадцатеричной системе выглядит так: $03С3. Это мало о чем го­ворит, и запомнить такую команду очень тяжело. Намного проще написать "сло­жить число 1 и число 2".

Сначала программисты писали программы в машинных кодах, затем появился первый компилятор — программа, которая переводила текст программ в машинный код. Таким образом, пользователи стали писать программы более осмысленно, а всю рутинную работу по переводу текста программы в машинный байт-код стал выполнять сам компьютер.

 

1.3. История языков программирования

Язык, на котором пишется программа, называется языком программирования.

Первым компилятором был Assembler(переводится как "сборщик"). Писать на нем почти так же сложно, как и в ма­шинных кодах, но теперь уже использовались не числа, а понятные человеку слова.

Текст на рисунке можно разделить на три колонки:

·адрес инструкции;

·машинный код инструкции;

·код на языке Ассемблера.

 

Например, команда копирования регистров выглядела так: movеах, ebx.В данном случае mov— это команда языка программирования, еах и ebx— имена регистров.

На языке Assemblerпро­грамму писать легче, но программа, написанная в машинных кодах, ра­ботала быстрее и более гибко. При написании программы в машинных кодах программист ничем не ограничен, а при работе с ассемблером есть ограничения. Не всегда возможно повлиять на результат.

После создания ассемблера языки программирования стали появляться один за другим. Так появились С, ADA, FoxPro, Fortran, Basic, Pascalи др. Некоторые из них были предназначены только для обучения, другие были ориентиро­ваны на профессиональных программистов.

Язык Assemblerв настоящее время в основном используется только в качестве вставок для языков высоко­го уровня, а машинные коды используются для написания того, что не может сделать компилятор.

Затем получило развитие объектно-ориентированное программирование. Язык С превратился в C++, Pascalв ObjectPascalи т. д.

Последней крупной революцией, происходящей в программировании, считается переход на визуальное программирование. Этот переход происходит в настоящее время. Визуальность дает еще более удобные средства разработки для бы­строго написания кода, но проигрывает ООП по быстроте работы. Одни из часто используемых языков, поддерживающих визуальное программирование, являются Delphiи C#, хотя прогресс не стоит на месте и визуальные компоненты появляются для многих других языков.

Выбрать лучший язык невозможно. Каждый из них подходит для определённого круга задач, и программист должен сам выбрать наиболее удобный для себя язык.

 

1.4. Исполнение машинных команд

Кроме байта существуют и другие размерности:

·1 килобайт = 1024 байт;

·1 мегабайт = 1024 килобайт;

·1 гигабайт = 1024 мегабайт.

·1 терабайт = 1024 гигабайт.

·и т.д.

 

В компьютере большинство значений являются степенью числа 2, потому что компьютер оперирует двоичной системой, и таким образом можно максимально эффективно использовать его воз­можности. Именно из-за этого при расчёте размерностей используется 1024 (2 в степени 10).

Рассмотрим некоторые понятия.

Сегмент— это область внутренней памяти компьютера.

Когда операционные системы были 16-битными, процессор не мог работать с памя­тью размером более 64 килобайт, потому что это максимальный размер области памяти, который можно адресовать, используя в этих целях адрес длиной в два байта. Поэтому память делилась на сегменты по размеру и по назначению. В дан­ный момент используются 32-разрядныю ОС, которая может адресовать до 4 Гбайт оперативной памяти и 64-разрядные ОС. Поэтому можно сказать, что память стала сплошной. Однако деление ее по назначению все-таки осталось.

Существуют следующие сегментsы памяти:

·сегмент кода — область памяти, в которую загружается машинный код, который бу­дет потом выполняться процессором;

·сегмент данных — область памяти для хранения данных;

·сегмент стека — область памяти для хранения временных данных и адресов возврата из процедур.

Каждой запущенной программе отводится свой сегмент кода, данных и стека. Поэтому данные одной программы не могут пересекаться с данными или кодом другой программы.

Регистр — ячейка памяти в процессоре. Её размер зависит от разрядно­сти. В 32-разрядных процессорах ячейки 32-битные, но есть и 64-битные. Таких регистров у процессора несколько, и каждый из них предназначен для определен­ных целей. Существуют также регистры общего значения, которые программа мо­жет использовать на свое усмотрение.

 

Прочитано 29620 раз

Комментарии   

 
# Guest 28.07.2013 17:05
Комментарий был удален администратором
 
 
# Guest 07.08.2013 15:35
Комментарий был удален администратором
 
 
# Guest 08.08.2013 13:55
Комментарий был удален администратором
 
 
# Guest 08.08.2013 14:04
Комментарий был удален администратором
 
 
# Guest 09.08.2013 10:51
Комментарий был удален администратором
 
 
# Guest 09.08.2013 19:26
Комментарий был удален администратором
 
 
# Guest 10.08.2013 11:17
Комментарий был удален администратором
 
 
# Guest 10.08.2013 19:36
Комментарий был удален администратором
 
 
# Guest 11.08.2013 04:26
Комментарий был удален администратором
 
 
# Guest 11.08.2013 20:16
Комментарий был удален администратором
 
 
# Guest 12.08.2013 04:25
Комментарий был удален администратором
 
 
# Guest 12.08.2013 12:09
Комментарий был удален администратором
 
 
# Guest 12.08.2013 20:05
Комментарий был удален администратором
 
 
# Guest 13.08.2013 04:31
Комментарий был удален администратором
 
 
# Guest 13.08.2013 12:15
Комментарий был удален администратором
 
 
# Guest 13.08.2013 20:48
Комментарий был удален администратором
 
 
# Guest 14.08.2013 04:33
Комментарий был удален администратором
 
 
# Guest 14.08.2013 12:40
Комментарий был удален администратором
 
 
# Guest 15.08.2013 07:00
Комментарий был удален администратором
 
 
# Guest 15.08.2013 15:16
Комментарий был удален администратором
 
 
# Guest 15.08.2013 23:22
Комментарий был удален администратором
 
 
# Guest 16.08.2013 07:13
Комментарий был удален администратором
 
 
# Guest 17.08.2013 18:22
Комментарий был удален администратором
 
 
# Guest 18.08.2013 06:08
Комментарий был удален администратором
 
 
# Guest 19.08.2013 03:09
Комментарий был удален администратором
 
 
# Guest 19.08.2013 04:32
Комментарий был удален администратором
 
 
# Guest 19.08.2013 15:37
Комментарий был удален администратором
 
 
# Guest 19.08.2013 17:37
Комментарий был удален администратором
 
 
# Guest 20.08.2013 03:55
Комментарий был удален администратором
 
 
# Guest 21.08.2013 00:45
Комментарий был удален администратором
 
 
# Guest 21.08.2013 15:28
Комментарий был удален администратором
 
 
# Guest 22.08.2013 03:19
Комментарий был удален администратором
 
 
# Guest 22.08.2013 15:16
Комментарий был удален администратором
 
 
# Guest 22.08.2013 23:22
Комментарий был удален администратором
 
 
# Guest 23.08.2013 15:00
Комментарий был удален администратором
 
 
# Guest 23.08.2013 15:49
Комментарий был удален администратором
 
 
# Guest 24.08.2013 04:46
Комментарий был удален администратором
 
 
# Guest 24.08.2013 16:14
Комментарий был удален администратором
 
 
# Guest 24.08.2013 22:40
Комментарий был удален администратором
 
 
Макс
0 # Макс 25.12.2014 13:05
Очень интересная статья для меня, как человека совсем в предмете не сведущего :)
Спасибо автору!
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
 
 
Алексей
0 # Алексей 22.03.2015 20:49
Спасибо, ценная информация. Немного начинаю врубаться в суть этих интересных процессах.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
 
 
Семён
0 # Семён 13.05.2016 18:42
Здравствуйте! Есть интересное предложение по поводу Вашего участия в создании проекта! Буду рад если выйдете на связь:)
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
 

Добавить комментарий


Защитный код
Обновить

Поиск

Материалы

Счётчики