Что такое компьютер? Какие процессы в нем происходят? Как он работает? Нам нужно хоть немного понимать основные принципы чтоб научиться программированию.
Вы, вероятно, слышали, что вся информация, находящаяся в компьютере представлена в виде чисел. Но не в виде привычных нам с вами чисел от 0 до 9. Этих чисел всего два — единица и ноль. Из них состоят другие числа, символы, рисунки, фильмы, программы, все что угодно, любая информация.
Итак, как же единицы и нули кодируют информацию?
Единица информации, то есть число которое может быть 1 или 0 называется бит. От английского BInary digiT — (двоичная цифра)
Это минимальная единица информации.
Почему именно единица и ноль? Дело в том что компьютер это по сути сложный механизм, цифровая машина, состоящая из транзисторов и проводов. А самое простое и надежное средство представление информации в механизме — это включить чтото или выключить чтото. Включенный тумблер или выключенный тумблер. Включенное это 1, а выключенное это 0. Например, заряженный конденсатор это 1, не заряженный — 0.
Просто о битах, байтах и о том, как хранится информация #2
Эти единицы и нули (биты) объединяются в блоки информации — байты. 1 байт = 8 бит
То есть пример байта это: 10101110
Сколько возможных вариантов значений может хранить 1 байт?
Это количество переборок различных положений 1 и 0 внутри него. Всего символов 8, число возможных вариантов для каждого числа 2. Значит общее количество различных вариантов (положений) которое хранит байт это 2 в восьмой степени то есть 256
То есть если мы хотим закодировать число с помощью байта, то мы можем закодировать числа в диапазоне от 0 до 255 или например от -128 до 127
Как преобразовать из двоичного вида (10101110) в десятичный, привычный человеку? Прошу вас, гуглите «двоичная система счисления»
Для примера скажу что 10101110 это 174
Как кодируются, допустим, символы?
Существует некая таблица (зовется она ASCII) соответствия чисел и символов. Вот 72 это символ ‘H’
Итак, байты. Что дальше?
Далее байты объединяются в килобайты (1024 байт). Килобайты — в мегабайты (1024 кб). Мегабайты — в гигабайты (1024 мб) и так далее.
Почему 1024?
Потому что как мы сказали все в компьютере представлено в виде единиц и нулей, это два состояния. Соответственно в два раза больше — 4, еще в два раза — 8 и так далее. Все размеры являются степенями двойки. 1024 — наиболее близкая к привычному 1000 степень двойки. Это 2 в 10й степени.
Итак, все является единицами и нулями. Жесткий диск хранит их на железных пластинах разделенных на ячейки у каждой из которых два состояния — намагничена и не намагничена. Оперативная память — в виде ячеек, которые могут быть заряжены или не заряжены. И так далее.
Приведу пример. Вот примеру как хранится картинка, какой нибудь файл «фотка.bmp» на компьютере:
Изображение состоит из разноцветных точек (квадратов) называемых пикселями
Двоичная система счисления — самое простое объяснение
Такая вот к примеру смешная рожица
Как видите, каждое изображение это по сути таблица размером ШИРИНА х ВЫСОТА. Каждая клеточка имеет свой цвет.
То есть для хранения изображения в файле нужно хранить размер картинки (ширина, высота) и цвет каждой ее клетки по очереди
В компьютере цвета кодируются как смесь цветов Red Green Blue.
Пусть каждый цвет имеет насыщенность от 0 до 255
Тогда для кодирования цвета нам потребуется
1 байт на количество красного
1 байт на количество зеленого
1 байт на количество синего
То есть нам нужно три байта для кодирования цвета клетки
Таким образом в нашем случае для хранения картинки 9 * 17 точек (пикселей) потребуется
1 байт кодирующий высоту
1 байт на ширину
и 3 байта на каждую из точек количество которых ровно ШИРИНА*ВЫСОТА
В нашем случае это будет 1+1+3*9*17 = 1379 байт
Так хранится информация.
Теперь давайте рассмотрим что заставляет компьютер работать и превращает из мертвого набора микросхем в некое «живое» устройство
Как работает компьютер?
Наверняка вы слышали что сердцем компьютера является процессор. Процессор выполняет команды.
Название его не случайно. Потому он и называется процессором, что выполняет некий процесс 🙂
Процесс примерно такой:
— взять команду
— выполнить команду
— сделать запрос на получение следующей команды из оперативной памяти
Команды процессора состоят из единиц и нулей. Примером такой команды может быть 1011011100010101010100111101001010001111 010010111 — к примеру так может выглядеть команда распечатывания на экран какого-нибудь символа
Последовательность команд называется программой. Процесс составления называется программированием, а люди, составляющие программы — программистами
Вначале программисты использовали только эти машинные команды. Программировали с помощью единиц и нулей. Можете себе представить, насколько легкой была эта работа
Программы были записаны на так называемые перфокарты или перфоленты. Перфокарта это бумажная лента с отверстиями. Есть отверстие значит единица. Нет дырки — значит ноль.
Процесс программирование представлял собой долгое и утомительное нанесение отверстий на длинной бумажной ленте. И я не советую вам ошибаться. Представьте себе процесс поиска ошибки.
В общем, это было долго и неудобно. Программирование развивалось и следующим шагом в развитии стал assembler. Первый язык программирования.
Ассемблер это те же самые единицы и нули, но переведенные на человеку более менее понятный язык
То есть команды из набора 1 и 0 превращались что — то вроде mov ax, bx (переместить число из одной области памяти в другую)
Программы составлялись уже из этих читабельных и более понятных человеку команд.
Мы не будем останавливаться на ассемблере. Это обширная и не простая тема. Нам важен только смысл происходящего. Интересующиеся могут поискать дополнительную информацию по ассемблеру
В общем, команды приобрели человеческий вид и это очень ускорило разработку и облегчило труд программистам
C и Pascal
В процессе программирования люди часто повторяли одну и ту же последовательность действий. Например, вывести строчку на экран. Это был некий готовый набор команд, который программист должен был повторять каждый раз, когда нужно было распечатать строку
Все полезные блоки информации сгруппировали, поименовали и создали языки программирования 2-го поколения.
Это такие языки как C, Pascal
В этих языках уже не было команд ассемблера и тем более не было единиц и нулей. Эти программы состояли из набора операторов. Каждый оператор скрывал в себе какие-то команды ассемблера, которые скрывали в себе команды процессора состоящий из единиц и нулей
Пример, приведенный выше сократился до
print(«Hello World!») — ‘напечатать на экране Hello World’
Как проходил процесс программирования:
1. Программист писал текст программы. Также называемый «исходный код». По английски source
Пример такой программы print(«Hello World!»)
2. Программист запускал программу преобразования текста в набор машинных команд для компьютера. Такой процесс называется компиляцией
3. Пользователь запускал полученную программу. Программа выполнялась.
Программы таким образом представляли собой наборы операторов.
Следующим эволюционным витком развития языков программирования стало появление объектов
Дело в том что программы состоящие из наборов команд стали громозкими, большими.
Множество операторов путалось друг с другом, было не понятно какая информация к чему относиться.
Объекты были призваны навести порядок в коде и классифицировать его.
Что такое объект?
Вот, к примеру мы программируем модель квартиры. У нас будут объекты ОКНО, ДВЕРЬ, ПОЛ и так далее. Каждый объект будет хранить в себе информацию касательно себя самого. Дверь будет хранить команды открывания и закрывания. Хранить информацию о своем размере и цвете.
Пол будет хранить информацию о цвете и покрытии, например. И так далее.
До внедрения такого подхода вся информация была в куче, что создавало кучу неудобств. Внедрение понятия объектов очень упростило жизнь программистам и ускорило разработку. Появились такие языки как C++, Delphi и так далее. Объектные языки программирования
А стиль программирования получил название ООП — объектно-ориентированное программирование. Именно его мы и будем изучать.
Что это такое?
Примерно следующее: программа представлена в виде объектов, которые взаимодействуют друг с другом. Примерно как в жизни. Дверь это объект, петля это объект. Они взаимодействуют.
Таким образом программирование приобрело оттенок древней классической философии. Нужно было выделять сущности, описывать их свойства, как бы работать с неким миром идей
Java, C# и другие.
Люди программировали объекты, все было хорошо, на дворе кончался 20-й век.
Что такое объект с точки зрения информации и внутреннего устройства компьютера? Объекты представлены в компьютере как некая область в оперативной памяти, хранящая информацию об этом объекте.
Соответственно, эту память для объекта нужно выделить.
А после использования — освободить. Потому что иначе компьютер будет думать что эта память занята, не отдаст ее под другие объекты этой программы или под другие программы и. память просто кончится.
И если с созданием объекта проблем не возникало — люди всегда создавали его, когда он им был нужен, но с уничтожением все было не так просто.
Дело в том что один объект мог быть нужен во множестве мест сразу, было не просто определить когда он действительно уже никому не нужен. Да и часто просто забывали сделать нужное и правильное удаление в нужном и правильном месте.
В общем, проблема удаления объектов требовала очень много времени для ее решения. Чуть ли не 70% всех ошибок были связаны именно с этим.
И тут появилась идея управляемого (managable) кода. В чем она заключалась?
Рассмотрим процесс выполнения программы точнее. Чуть выше я сказал что программа обращается непосредственно к компьютеру, но это не совсем так. Кроме этого программа также обращается к операционной системе (ОС).
Итак раньше программа самостоятельно обращалась к ОС, занимала и освобождала память и другие ресурсы. Программа могла навредить, случайно или по злому умыслу. Могла занять память и не освободить ее после завершения работы. Могла быть инфицированной вирусом и таким образом вредить другим программам или всей системе..
Сутью новой идеи было внедрение некого посредника называемого «виртуальная машина» (virtual machine)
В этом случае все команды в ОС выполняла виртуальная машина. А программа стала набором команд к виртуальной машине.
Какие преимущества дал этот подход?
1. Виртуальная машина сама следит за всеми объектами и уничтожает ненужные. Как только вы перестали использовать объект, он автоматически будет удален виртуальной машиной. Этот процесс получил название «сборка мусора» или «garbage collection»
2. Виртуальная машина написала серьезной фирмой и исполняет только те команды на ОС которые безопасны и разрешены. Таким образом программа не может навредить другим программам или системе
3. Так как раньше программы выполнялись непосредственно в ОС и на неком оборудовании, программа могла выполнять только те инструкции которые предоставляла ОС и только те инструкции которые позволяло оборудование. С приходом виртуальной машины инструкции программы не зависят от ОС и аппаратной части. То есть ваша программа сможет работать на существенно бОльшем количестве различных компьютеров
Первопроходцем такого подхода стал язык Java, который мы будем изучать. Он до сих пор является лидером рынка языков программирования и занимает самую большую нишу.
Источник: javalessons.livejournal.com
9.Что такое машинный код?
Команды, поступающие в процессор, являются совокупностью нулей и единиц, т.е. числами, поэтому программа представляет собой последовательность чисел, называемую машинным кодом.
Язык самой машины – машинный код – очевиден и однозначен для каждого вида компьютеров. Но эта последовательность нулей и единиц противоестественна для памяти человека, хотя несколько поколений программистов работали только в машинных кодах.
Программа может состоять из миллионов комбинаций единиц и нулей, и ошибка лишь в одном знаке приведет к неправильной работе всей программы. При всех различиях языков программирования все они, в конечном счете, сводятся к языкам высокого и низкого уровня. «Низкий» не значит «плохой». Операторы такого языка близки к машинному коду.
К ним относятся языки ассемблера, в которых двоичные последовательности были заменены символами (мнемониками). Первым таким языком был ассемблер компьютера «Эдсак», созданный в 1949 г. английским математиком М. Уилксом. Разумеется, ассемблеры проще машинных кодов, в них можно создавать инструкции для определенных действий. Однако применение ассемблера оставляет нерешенными ряд задач:
-во-первых, программирование на языке ассемблера требует хорошего знания архитектуры машины, на которой программа будет выполняться. Это значительно сужает круг потенциальных разработчиков программного обеспечения. Например, для разработки программного обеспечения для решения экономических задач программист должен одинаково хорошо разбираться как в предметной области, так и в архитектуре компьютера; наладить совместную работу двух разных людей, каждый из которых является специалистом в одном из этих вопросов, значительно сложнее;
-во-вторых, как следствие, низкий уровень языка вынуждает программиста мыслить не категориями предметной области, а в терминах ячеек памяти, индексных и базовых регистров и т.п.;
-в-третьих, язык ассемблера вследствие жесткой привязки к архитектуре определенного компьютера делает программы
непереносимыми: на другой тип компьютеров, делает непригодными все ранее разработанные программы, поскольку новый компьютер имеет другие мнемоники и формат команд, другие методы адресации аргументов и т.п. Кроме того, переучивание программистов на новую систему команд также потребует определенного времени, что делает переход на другую архитектуру еще более трудным
11.Что такое транслятор
Ограниченность ассемблеров была преодолена в языках высокого уровня. Первым распространенным языком высокого уровня явился Фортран, разработанный в 1954-1957 гг. Дж. Бекусом в фирме IBM и до сих пор применяемый для научных расчетов.
Поскольку его применение занимало много времени «тихоходных» в то время машин, для него был создан компилятор, переводивший его программы в машинный код. Это положило начало особым видам программ – трансляторам, которые для каждого типа компьютеров переводят программы, написанные на языке высокого уровня, в их машинный код.
Трансляторы бывают двух видов – компиляторы и интерпретаторы
Компилятор транслирует в ходе непрерывного процесса всю программу, написанную на языке высокого уровня. При том создается полная программа в машинных кодах, которую затем ЭВМ выполняет без участия компилятора
Интерпретатор последовательно анализирует по одному оператору программы, превращая при этом каждую синтаксическую конструкцию, записанную на языке высокого уровня, в машинные коды и выполняя их одна за другой. Интерпретатор должен постоянно присутствовать в зоне основной памяти вместе с интерпретируемой программой, что требует значительных объемов памяти. Следует заметить, что любой язык программирования может быть как интерпретируемым, так и компилируемым, но в большинстве случаев у каждого языка есть свой предпочтительный способ реализации. Языки Фортран, Паскаль в основном компилируют; язык Ассемблер почти всегда интерпретирует; языки Бейсик и Лисп широко используют оба способа.
Источник: studfile.net
Уроки 1 — 2
Техника безопасности при работе за компьютером. Инструктаж по ТБ. Алгоритм и его формальное исполнение
Выше мы говорили о возможности формального исполнения алгоритма. Это означает, что выполнение алгоритма может быть автоматически реализовано техническими устройствами, среди которых особое место занимает компьютер. При этом говорят, что компьютер исполняет программу (последовательность команд), реализующую алгоритм.
Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой.
Машинный язык. На заре компьютерной эры, в 40-50-е годы XX века, программы писались на машинном языке и представляли собой очень длинные последовательности нулей и единиц. Составление и отладка таких программ являлись чрезвычайно трудоемким делом. Программы на машинных языках были машинно-зависимыми, т. е. для каждой ЭВМ необходимо было создавать свою собственную программу, так как в ней в явной форме учитывались аппаратные ресурсы ЭВМ.
Ассемблер. В начале 50-х годов XX века были созданы языки программирования, которые называются ассемблерами. Вместо одних только нулей и единиц программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т. д.), которые были похожи на слова английского языка. Для преобразования текста программы на ассемблере в понятный компьютеру машинный код использовался компилятор. Программы на ассемблере были также машинно-зависимыми, т. е. ассемблеры для различных процессоров существенно различались между собой.
Языки программирования высокого уровня. С середины 50-х годов XX века начали создаваться первые языки программирования высокого уровня. Эти языки были машинно-независимыми, так как использовали универсальную компьютерную логику и не были привязаны к типу ЭВМ. Однако для каждого языка и каждого типа ЭВМ должны были быть разработаны собственные компиляторы. Одним из первых языков программирования высокого уровня был созданный в 1964 году Бейсик (Basic).
С конца 50-х годов XX века начали создаваться языки программирования, которые позволили программистам перейти к структурному программированию. Отличительной чертой этих языков было использование операторов ветвления, выбора и цикла и отказ от хаотического использования оператора goto. Такие языки позволяют легко кодировать основные алгоритмические структуры. Наибольшее влияние на переход к структурному программированию оказал язык ALGOL (АЛГОЛ), а затем Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля). Компания Microsoft создала язык QBasic, а в настоящее время язык OpenOfFice.org Basic встроен в мультиплатформенную (операционные системы Windows, Linux, Mac OS) интегрированную офисную систему OpenOffice.org.
Существуют различные стили программирования. Перечисленные выше языки поддерживают процедурный стиль. Программа, составленная в соответствии с этим стилем, представляет собой последовательность операторов (инструкций), задающих те или иные действия.
Объектно-ориентированные языки. С 70-х годов XX века начали создаваться объектно-ориентированные языки программирования, на которых было удобно программировать в объектно-ориентированном стиле. В основу этих языков были положены программные объекты, которые объединяли данные и методы их обработки. С течением времени для этих языков были созданы интегрированные среды разработки, позволяющие визуально конструировать графический интерфейс приложений:
язык Object Pascal был разработан компанией Borland на основе языка Pascal. После создания интегрированной среды разработки система программирования получила название Delphi;
язык Visual Basic был создан корпорацией Microsoft на основе языка QBasic для разработки приложений с графическим интерфейсом в среде операционной системы Windows;
язык Gambas был создан по аналогии с языком Visual Basic для разработки приложений с графическим интерфейсом в среде операционной системы Linux.
Java. В 90-е годы XX века в связи с бурным развитием Интернета был создан язык Java, обеспечивающий межплатформенную совместимость. На подключенных к Интернету компьютерах с различными операционными системами (Windows, Linux, Mac OS и др.) могли выполняться одни и те же программы. Исходная программа на языке Java компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной.
Платформа .NET. Выпущена компанией Microsoft в 2002 году. Эта система предоставляет возможность создавать приложения в различных системах объектно-ориентированного программирования, в которых для составления программного кода используются объектно-ориентированные языки программирования (Visual Basic .NET, Delphi .NET и др.).
На рис. 1.1. показана краткая история развития языков программирования.
Краткая история развития языков программирования
Рис. 1.1. История развития языков программирования
Программы-трансляторы. Для того чтобы программа, записанная на языке программирования, могла быть выполнена компьютером, она должна быть переведена на машинный язык. Эту функцию выполняют программы-трансляторы.
Программы-трансляторы с языков программирования бывают двух типов: интерпретаторы и компиляторы.
Интерпретатор — это программа, которая обеспечивает последовательный «перевод» команд программы на машинный язык с одновременным их выполнением. Поэтому при каждом запуске программы на выполнение эта процедура повторяется. Достоинством интерпретаторов является удобство отладки программы (поиска в ней ошибок), так как возможно «пошаговое» ее исполнение, а недостатком — сравнительно малая скорость выполнения.
Компилятор действует иначе, он переводит весь текст программы на машинный язык и сохраняет его в исполняемом файле (обычно с расширением ехе). Затем этот уже готовый к исполнению файл, записанный на машинном языке, можно запускать на выполнение. Достоинством компиляторов является большая скорость выполнения программы, а недостатком большинства из них — трудоемкость отладки, так как невозможно пошаговое выполнение программы.
Системы объектно-ориентированного программирования Visual Basic и Gambas позволяют работать как в режиме интерпретатора, так и в режиме компилятора. На этапе разработки и отладки программы используется режим интерпретатора, а для получения готовой исполняемой программы — режим компилятора.
Система процедурного программирования OpenOffice.org Basic позволяет работать только в режиме интерпретатора.
Контрольные вопросы
1. Подготовьте сообщение о преимуществах машинно-независимых языков программирования перед машинно-зависимыми языками.
2. В чем состоят достоинства и недостатки интерпретаторов и компиляторов?
Cкачать материалы урока
Источник: xn—-7sbbfb7a7aej.xn--p1ai
Учебники. Программирование для начинающих.
Programm.ws — это сайт, на котором вы можете почитать литературу по языкам программирования , а так-же посмотреть примеры работающих программ на С++, ассемблере, паскале и много другого..
Программирование — в обычном понимании, это процесс создания компьютерных программ.
В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Более точен современный термин — «программная инженерия» (также иначе «инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.
Программирование на Ассемблере
Глава 2 Основы компьютерных вычислений
Машинный язык и язык Ассемблера
Мы уже видели, как из нулей и единиц, хранимых в ЭВМ, формируются числа.Теперь мы посмотрим как комбинации тех же значений 0 и 1 могут быть использованы для программирования компьютера.
Машинная программа представляет собой последовательность команд (инструкций). Эти команды «объясняют» компьютеру, что он должен делать. Это похоже на рецепты в кулинарной книге. В рецепте имеется описание действий, которые необходимы для приготовления определенного блюда.
Подобным образом, компьютер имеет последовательность команд, которые точно описывают ему последовательность действий. Этот набор команд называется программой. Процесс построения корректного набора команд называют программированием компьютера. В нашей аналогии с рецептом рецепт является программой, а тот кто его написал — программистом. Роль компьютера здесь играет повар, готовящий еду.
Реальная программа, которую выполняет компьютер, это последовательность единиц и нулей, связанных с памятью компьютера. Эту строку бит принято называть машинным языком. Машинный язык — это тот язык который машина понимает. Компьютер извлекает команды машинного языка из памяти точно определенным способом.
Затем компьютер выполняет команду, обозначенную данной конфигурацией бит. Этот цикл изв- лечения и исполнения будет разобран в одном из последующих разделов данной главы.
Однако машинный язык мало о чем говорит людям. Если вы хотите сложить два числа в 8088 (например, содержимое регистров AX BX — краткое описание регистров сейчас последует), команда будет выглядеть таким образом:
0000001111000011B (или 03C3H)
Эти два байта точно указывают компьютеру какую операцию произвести. Аналогично, для вычитания двух чисел (вычитание регистра BX из регистра AX) мы будем иметь в машинном языке
0010101111000011B (или 2BC3H)
Здесь необходимо коротко пояснить, что такое регистры, поскольку в обсуждении основ работы 8088 с ними приходится часто сталкиваться. Регистр — это часть процессора, предназначенная для сохранения данных. К данным, сохраненным в регистре, процессор получает доступ очень быстро — намного быстрее, чем к данным, хранимым в памяти.
Возможно еще специальное использование регистров в некоторых командах. В третьей главе будет дано полное описание регистров 8088. Хотя машинный язык — это действительно прекрасно, если вы являетесь компьютером, он труден для программистов — людей. К счастью, существует более простой способ программирования. Этим методом, более близким людям, чем машинам, является программирование на языке ассемблера.
Язык ассемблера, как язык программирования, т.е. более понятный программисту, чем машинный, язык, все еще сохраняет все значения машинного языка. Компьютер читает программы на языке ассемблера и переводит их в машинный язык, в ту форму, которая понятна ЭВМ. Этот процесс, называемый «ассемблированием» программы, фактически является переводом с одного языка на другой. Операцию перевода с языка ассемблера на машинный язык выполняет программа, называемая ассемблером.
Чтобы лучше понять разницу, давайте взглянем на примеры, которыми мы уже пользовались выше. Ассемблерная команда для сложения содержимого регистров AX и BX проста:
Аналогично, для вычитания регистра BX из регистра AX мы напишем:
Ассемблер превращает эти предложения в форму, которую мы видели выше. Компьютер сам управляется с проблемой превращения файла с понятным человеку текстом в программу на машинном языке, которую мог бы выполнить процессор.
Язык ассемблера не похож на языки типа Фортран, Кобол или Паскаль. Эти языки, как и многие подобные им, являются языками высокого уровня. Языки высокого уровня разработаны для того, чтобы можно было иметь дело непосредственно с задачей, решаемой программой. В этом качестве они иногда называются процедурными языками, поскольку описывают процедуру, используемую для решения задачи.
Языки высокого уровня машинно-независимы. Программа, написанная на Фортране для IBM PC будет правильно работать и давать те же самые результаты при выполнении на IBM/370. язык программирования не зависит от машины.
Программы же на языке ассемблера непосредственно относятся к той машине, на которой они должны выполняться. Язык ассемблера машиннозависимый. Язык ассемблера для IBM PC принципиально отличен от языка ассемблера для IBM/370.
Это связано с тем, что команды языка ассемблера почти один к одному переводятся в команды машинного языка т.е. каждая команда языка ассемблера обычно преобразуется точно в одну команду машинного языка. Поскольку машинные языки разных компьютеров различны, то различаются и языки ассемблера. Обычно каждое утверждение языка ассемблера генерирует одну команду машинного языка. В некоторых случаях это не так, потому что существуют команды, которые не являются частью выполняемой программы, а предназначены для ассемблера. Они описывают действия ассемблера, который должен выполнять их во время ассемблирования. Пример директивы ассемблеру (такой предназначенной только для него команды) —
TITLE Пример Программы
Эта инструкция сообщает ассемблеру заголовок программы. После трансляции ассемблером программы этот заголовок — «Пример программы»- появляется в верхней части каждой страницы сообщений ассемблера. Эта инструкция имеет смысл только для ассемблера. В 8088 нет команды, которая могла бы выполнить эту операцию.
Источник: programm.ws
Программный принцип работы компьютера
Алгоритм– последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд.
Исполнителем алгоритма может быть человек или автоматическое устройство – компьютеры, роботы, станки, спутники, сложная бытовая техника и даже детские игрушки. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Компьютер, как исполнитель, любую работу выполняет по программе. Программы пишут люди, а компьютер формально их выполняет.
Разработчики систем искусственного интеллекта пытаются научить машину, подобно человеку, самостоятельно строить программу своих действий, исходя из условия задачи. Ставится цель превращения компьютера из формального исполнителя в интеллектуального исполнителя. Работа обоих исполнителей состоит из четырёх блоков, но формальный исполнитель работает по уже готовой программе, а интеллектуальный – сам составляет программу и получает результат.
Информация для компьютера — данные, представленные в форме, приемлемой для её передачи и обработки на компьютере. Для работы с данными компьютеру необходимы инструкции (команды, правила действия). Команды формируются в перечень команд.
Алгоритм – это последовательность действий (команд) для достижения цели.
В XIX веке английским математиком и инженером Чарльзом Бэббиджем был разработан проект вычислительной машины, которая предназначалась для автоматического проведения длинных цепочек вычислений. Главной особенностью конструкции этой машины является программный принцип работы.
Чарльза Беббиджа считают изобретателем компьютера – он впервые соединил механический арифмометр с идеей программного управления. По своему назначению компьютер – это универсальный прибор для работы с информацией.
В основу работы компьютеров положен программный принцип управления. Любой компьютер представляет собой автоматическое устройство, работающее по заложенным в него программам.
Первая вычислительная машина, способная хранить программу в своей памяти, разрабатывалась в 1943—1948 гг. в США под руководством Джона Мочли и Преснера Экерта.
В 1945 г. к работе был привлечен знаменитый математик Джон фон Нейман, который сформулировал общие принципы функционирования универсальных вычислительных устройств.
Первый компьютер, в котором были полностью реализованы эти принципы, был построен в 1949 г. английским исследователем Морисом Уилксом. Изменяется элементная база, компьютеры становятся все более и более мощными, но до сих пор большинство из них соответствуют тем принципам, которые изложил в своем докладе в 1945 г. Джон фон Нейман.
Согласно фон Нейману, ЭВМ состоит из следующих основных блоков:
— арифметико-логическое устройство, выполняющее арифметические и логические операции;
— устройство управления, которое организует процесс выполнения программ;
— запоминающее устройство, или память, для хранения программ и данных;
— внешние устройства для ввода-вывода информации.
В современных компьютерах это:
— память (запоминающее устройство — ЗУ), состоящая из перенумерованных ячеек;
— процессор, включающий в себя устройство управления (УУ) и арифметико-логическое устройство (АЛУ);
Эти устройства соединены между собой каналами связи, по которым передается информация.
Функции памяти: — прием информации из других устройств; — запоминание информации; — выдача информации по запросу в другие устройства машины. | Функции процессора: — обработка данных по заданной программе путем выполнения арифметических и логических операций; — программное управление работой устройств компьютера. |
Одна часть процессора, которая выполняет команды, называется арифметико-логическим устройством, а другая его часть, выполняющая функции управления устройствами, — устройством управления. Обычно эти устройства выделяются чисто условно, конструктивно они не разделены.
В составе процессора имеется ряд специализированных дополнительных ячеек памяти, называемых регистрами. Регистр выполняет функцию кратковременного хранения числа или команды. Основным элементом регистра является электронная схема, называемая триггером. Регистр представляет собой совокупность триггеров, связанных друг с другом определенным образом общей системой управления.
Существует несколько типов регистров, отличающихся видом выполняемых операций. Некоторые важные регистры имеют свои названия, например:
— сумматор — регистр АЛУ, участвующий в выполнении каждой операции;
— счетчик команд — регистр УУ, содержимое которого соответствует адресу очередной выполняемой команды. Он служит для автоматической выборки программы из последовательных ячеек памяти;
— регистр команд — регистр УУ для хранения кода команды на период времени, необходимый для ее выполнения. Часть его разрядов используется для хранения кода операции, остальные — для хранения кодов адресов операндов.
Компьютер является универсальным исполнителем по обработке информации. Значит, для него, как для любого исполнителя, существует определённая система команд (СКИ). Такая система команд для компьютера называется языком машинных команд (ЯМК)
Программный принцип работы компьютера
Программа для компьютера – это алгоритм, разработанный на ЯМК. Или, Программа управления компьютером – это последовательность команд ЯМК, где каждая команда – директива для процессора на выполнение определённого действия.
Рассмотрим этапы выполнения программы.
Согласно принципам Джона фон Неймана, программа во время её исполнения и данные, которые она обрабатывает, находятся в оперативной памяти (принцип хранимой в памяти программы). Процессор исполняет программу начиная с первой команды и заканчивая последней.
— Какое основное свойство оперативной памяти? (энергозависимость, работает с данными, активными в текущий момент времени)
Какие есть особенности в восприятии информации человеком и компьютером? (человек воспринимает информацию с помощью органов чувств, в виде знаков и сигналов, а компьютер воспринимает информацию в виде цифр (0 и 1).)
— Как сделать так, чтобы программа, написанная человеком была понятна компьютеру? (нужен способ перевода)
Для компьютера вся информация должна быть представлена в двоичных кодах, т.е. необходим способ перевода. Такой способ перевода называется трансляцией, а выполняет это транслятор. Устройством, которое обрабатывает информацию в компьютере, является процессор, следовательно, алгоритм должен использовать систему команд процессора, или другими словами записан на машинном языке, представляющем собой последовательности нулей и единиц
Сначала программисты, работавшие на компьютерах первого поколения (50-е – 60-е г.г.), составляли программы на ЯМК (в двоичных кодах), но это довольно сложная работа, поэтому для облегчения программирования были созданы языки программирования высокого уровня (ЯПВУ) — это искусственно созданные языки с несколькими десятками слов (операторов) и строгими правилами синтаксиса. Составление программ на ЯПВУ намного проще. Примеры ЯПВУ: Фортран, Паскаль, Бейсик, Си и др.
Для того чтобы процессор мог выполнить программу, написанную на языке программирования, она и данные с которыми она работает должны быть загружены в оперативную память. Программа написана и загружена в оперативную память и для того чтобы процессор ее выполнил в оперативной памяти, должна быть еще и программа переводчик (транслятор), который переводит программу с языка высокого уровня на язык машинных команд
Таким образом, цепочка событий от составления программы на ЯПВУ до получения результатов решения задачи выглядит так
Человек всегда должен понимать ограниченность возможность компьютера как исполнителя, необходимость предусмотреть все тонкости команд, поручаемых компьютеру. Человек разрабатывает алгоритм, записывает его на ЯПВУ и анализирует результаты выполнения программы.
Компьютер является формальным исполнителем программ. Итак, компьютер не может обойтись без программы и исходных данных, подготовить их может только человек. Поэтому можно говорить,что решение задач компьютером- это формальное исполнение алгоритма (программы), а компьютер является формальным исполнителем. Компьютер может быть использован для решения самых разнообразных задач, поэтому, исходя из условия задачи, человек решает, каким программным средством пользоваться. Если в состав ПО входят программы, подходящие для решения задач человека, то удобнее ими воспользоваться (текстовый редактор, электронные таблицы, базы данных, презентации).
В случае если нельзя воспользоваться готовым программным обеспечением, приходится прибегать к программированию (операционные системы, доработка ОС, трансляторы, драйверы, архиваторы, антивирусы).
В XIX веке английским математиком и инженером Чарльзом Бэббиджем был разработан проект вычислительной машины, которая предназначалась для автоматического проведения длинных цепочек вычислений. Конструкция его аналитической машины включала 50 тысяч деталей: зубчатых колес, рычагов и пружин, взаимодействовавших определенным образом. Совершенствуя и уточняя конструкцию машины, Бэббидж первым смог выделить необходимые для ее работы части:
- устройство для хранения чисел, как исходных, так и получающихся в результате вычисления;
- специальный вычислительный блок — процессор;
- устройство для ввода и вывода информации.
В качестве средства хранения информации в аналитической машине использовалась перфокарта — картонная прямоугольная пластина с рядами пробитых в ней дырочек. Каждый ряд состоял из двух частей, разделенных столбцом, содержащим отверстия во всех рядах. Первая часть представляла собой запись числа, вторая — код команды, указывающей, что делать с числом.
В созданной Бэббиджем аналитической машине присутствовала хранимая в памяти машины программа ее работы. Меняя программу (перфокарту), можно было изменять порядок вычислений, то есть переходить от одной задачи к другой.
Главной особенностью конструкции этой машины является программный принцип работы. Принцип программы, хранимой в памяти компьютера, считается важнейшей идеей современной компьютерной архитектуры. Суть идеи заключается в том, что
1) программа вычислений вводится в память ЭВМ и хранится в ней наравне с исходными числами;
2) команды, составляющие программу, представлены в числовом коде по форме ничем не отличающемся от чисел.
В основу работы компьютеров положен программный принцип управления, состоящий в том, что компьютер выполняет действия по заранее заданной программе. Этот принцип обеспечивает универсальность использования компьютера: в определенный момент времени решается задача соответственно выбранной программе. После ее завершения в память загружается другая программа и т.д.
Программа — это запись алгоритма решения задачи в виде последовательности команд или операторов языком, который понимает компьютер. Конечной целью любой компьютерной программы является управление аппаратными средствами. Для нормального решения задач на компьютере нужно, чтобы программа была отлажена, не требовала доработок и имела соответствующую документацию. Поэтому, относительно работы на компьютере часто используют термин программное обеспечение (software), под которым понимают совокупность программ, процедур и правил, а также документации, касающихся функционирования системы обработки данных.Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и взаимодействии. Состав программного обеспечения вычислительной системы называется программной конфигурацией.
Прямо сейчас студенты читают про:
Тема 5. Правонарушения и юридическая ответственность Контрольные вопросы по теме 1. Разъясните смысл понятия толкования.
Теория естественного права Как научное течение эта теория имеет длительную историю. Ее основные положения формировались еще в древности. Фундаментальную.
БЕЗВОЛЬНЫЙ ТИП ЛИЧНОСТИ Основной личностной характеристикой этих осужденных является недостаток волевых качеств.
ФИЛОСОФСКИЕ ВЗГЛЯДЫ НИКОЛАЯ КУЗАНСКОГО: СТРУКТУРНО-МАТЕМАТИЧЕСКИЙ МЕТОД, УЧЕНИЕ ОБ УЧЕНОМ НЕЗНАНИИ И ПРОБЛЕМА ИСТИНЫ Николай Кузанский (1401-1464) – философ эпохи Ренессанса.
Понятие и виды государственной службы в РФ. Государственная гражданская служба в РФ. Вопросы прохождения гражданами РФ государственной службы регулирует Федеральный закон https://studopedia.ru/22_42396_programmniy-printsip-raboti-kompyutera.html» target=»_blank»]studopedia.ru[/mask_link]