Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YAZbIki.doc
Скачиваний:
8
Добавлен:
16.03.2015
Размер:
758.78 Кб
Скачать

Вопрос 1

ЭВМ определяется как программно управляемое устройство обработки данных в числовой форме. Кроме устройств обработки данных в числовой форме (ЦВМ) существуют устройства обработки информации и в аналоговой форме. Классическая концепция вычислительных машин фон-Неймана. Эта архитектура ЭВМ, поддерживающие следующие принципы:

  • двоичного кодирования,

  • программного управления,

  • однородности памяти,

  • адресности памяти.

Классический вариант этой машины (рис.1) по концепции Д. фон Неймана должна содержать блоки:

  • оперативную памяти,

  • арифметико-логическое устройство,

  • устройство управления,

  • устройства ввода-вывода

  • внешние запоминающие устройства.

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

  • внешней памяти,

  • ввода,

  • вывода,

  • связи с внешним объектом.

Устройства внешней памяти – это устройства энергонезависимой памяти, обычно на основе записи на магнитную поверхность или электронных схемах с использованием МДП транзистров с плавающим затвором (флеш-память) для хранения и/или передачи данных на другие цифровые устройства. Устройство ввода – это любое устройство ввода данных и программ в оперативную память ЭВМ (клавиатура, перфокарты, магнитные ленты, магнитные диски и т.д.). Устройство вывода – это любое устройство вывода данных и программ из оперативной памяти (принтер, магнитная лента, магнитные диски и т.д.). В большинстве современных ЭВМ оперативная память – энергозависимая. По этой причине операции ввода/ выводы необходимы при включении и выключении ЭВМ. Устройство связи с внешним объектом – это любое устройство, подключенное к ЭВМ, включая сетевые объекты. В дальнейшем, по мере развития ЭВМ устройства УУ и АЛУ, как сильно связанные между собой устройства стали рассматриваться как одно устройство программной обработки данных под названием – процессор. В первых ЭВМ использовали чисто программные методы организации процедуры ввода/вывода. По этой причине на рис.1 устройств ввода/вывода соединены с оперативной памятью, не на прямую, а через процессор. Процессор осуществлял операции ввода/вывода, выбирая каждую единицу передаваемых данных на свои регистры по одной команде программы драйвера, а затем, по другой команде, пересылал ее по адресу приемника, подсчитывая количество передаваемых данных и модифицируя адреса источника и приемника. В более поздних моделях для организации процедур ввода/вывода (вместо процессора) стали использовать дополнительные специализированные процессоры ввода/вывода. Примером может служить модели семейства ЭВМ IBM 360.

Под программным обеспечением (Software) понимается совокупность программ,

выполняемых вычислительной системой.

К программному обеспечению (ПО) относится также вся область деятельности по проектированию и разработке ПО:

технология проектирования программ (например, нисходящее проектирование, структурное и объектно-ориентированное проектирование и др.);

методы тестирования программ [ссылка, ссылка];

методы доказательства правильности программ;

анализ качества работы программ;

документирование программ;

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

Программное обеспечение — неотъемлемая часть компьютерной системы. Оно является логическим продолжением технических средств. Сфера применения конкректного компьютера определяется созданным для него ПО. Сам по себе компьютер не обладает знаниями ни в одной области применения. Все эти знания сосредоточены в выполняемых на компьютерах программах. Программное обеспечение современных компьютеров включает миллионы программ — от игровых до научных.

В первом приближении все программы, работающие на компьютере, можно условно разделить на три категории (рис. 6.1):

  1. прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ;

  2. системные программы, выполняющие различные вспомогательные функции, например:

  • управление ресурсами компьютера;

  • создание копий используемой информации;

  • проверка работоспособности устройств компьютера;

  • выдача справочной информации о компьютере и др.;

  • инструментальные программные системы, облегчающие процесс создания новых программ для компьютера.

    Язы́к программи́рования— формальнаязнаковая система, предназначенная для записикомпьютерных программ. Язык программирования определяет наборлексических,синтаксическихисемантическихправил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.

    Со времени создания первых программируемых машинчеловечество придумало более двух с половиной тысяч языков программирования.[1]Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

    Машинные команды

    Настоящее программирование в современном понимании началось с момента создания первой электронной вычислительной машины.

    Первые ЭВМ позволяли выполнять программы на машинном языке, который является единственным языком, понятным ЭВМ. Он реализуется аппаратно: каждую команду выполняет некоторое электронное устройство.

    Машинные команды пишутся в двоичном коде. Логику работы подобных программ очень трудно понять из-за того, программа представляет собой сплошной набор нулей и единиц. Например, какие-то группы обозначали числа, другие – операции над ними.

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

    Мнемокоды

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

    Переменная– в программировании это буквенное обозначение области памяти, в которой хранится некоторое значение.

    Для перевода мнемокодов в машинные инструкции и имен переменных в адреса ячеек памяти использовалась специальная программа – транслятор. Языки мнемокодов получили названиеассемблеров.

    Структурное программирование

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

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

    Современное программирование

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

    Широкое распространение получили объектно-ориентированные языки программирования (ООП), на которых легче реализовать большие и сложные проекты. Их отличие от языков высокого уровня заключается в возможности отстранения от алгоритма выполнения программы. С помощью таких языков разработчик как бы оперирует виртуальными объектами.

    Некоторые причины и тенденции развития языков программирования

    1. Потребность в решении более сложных и разнообразных задач.Первые ЭВМ имели ограниченные возможности, следовательно, и программы были простыми. В процессе эволюции вычислительной техники от нее требовалось решение все более сложных и разнообразных задач. Следовательно, язык программирования должен был позволять писать программы для решения этих новых задач.Это способствовало появлению и развитию в языках программирования различных новых технологий.Например, пользуется широкой популярностью технология объектно-ориентированного программирования.

    2. Программы становились сложнее и больше по объему.Появилось стремление к повышению эффективности процесса создания программ.Поэтому существует тенденция в развитии языков программирования к быстрому написанию программ.Здесь также следует отметить появление множества систем визуального программирования, в какой-то степени облегчающие труд программиста.

    3. Желание, чтобы программы работали на разных платформах, привело кразвитию независимости от ЭВМ языков системного программирования. Языки системного программирования, на которых создаются операционные системы, трансляторы и другие системные программы, развиваются в направлении независимости от ЭВМ. Так, например, большая часть операционных систем написана на языке C, а не на ассемблере. Например, операционная система Unix практически полностью написана на C.

    4. Большие проекты предусматривают совместный труд множества программистов. В возможности легкой командной работы хорошо себя зарекомендовалатехнология объектно-ориентированного программирования. Поэтому большинство современных языков программирования поддерживают ООП.

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

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

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

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

    Примеры: C, C++, Java, Python, PHP, Ruby, Perl, PureBasic, Delphi, Lisp. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинстве из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.

    Первым языком программирования высокого уровня считается компьютерный язык Plankalkül, разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 гг. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).

    Трансля́тор — программа или техническое средство, выполняющее трансляцию программы[1][2][3][4].

    Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т. д.[1]

    Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.[1]

    Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.

    Понятие трансляции относится не только к языкам программирования, но и к другим компьютерным языкам, вроде языков разметки, аналогичных HTML, и к естественным языкам, вроде английского или русского (см.: перевод).

  • Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]