Автор работы: Пользователь скрыл имя, 27 Апреля 2016 в 09:27, лекция
Языки программирования: эволюция, классификация
1.2.Этапы разработки прикладных программ в среде системы программирования
1.3.Разработка программного обеспечения (ПО)
1.4.Системы программирования
1.5. Этапы подготовки и решения задач на компьютере
Лекция 1 (1 час)
Тема: Программное обеспечение ПК
1.2.Этапы
разработки прикладных
1.3.Разработка программного
1.4.Системы программирования
1.5. Этапы подготовки и решения задач на компьютере
Одной из самых революционных идей, приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века Ч.Бэббиджем мысль о предварительной записи порядка действий машины для последующей автоматической реализации вычислений - программе. И, хотя использованная Бэббиджем запись программы на перфокартах, придуманная для управления ткацкими станками французским изобретателем Жозефом Мари-Жаккаром, технически не имеет ничего общего с современными приемами хранения программ в ЭВМ, принцип здесь по-существу один. С этого момента начинается история программирования.
Аду Лавлейс, одну из немногих современников Чарльза Бэббиджа, кто сумел по достоинству оценить аналитическую машину, называют первым в мире программистом. Она теоретически разработала некоторые приемы управления последовательностью вычислении, которые используются в программировании и по сей день, описала одну из важнейших конструкций практически любого современного языка программирования - цикл.
Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли, сотрудником Пенсильванского университета. Система кодирования, предложенная Моучли, увлекла одну из сотрудниц его компании - Грейс Мюррей Хоппер, которая посвятила всю свою жизнь компьютерам и программированию. Она вспоминает, что стала «третьим в мире программистом первого в мире большого цифрового компьютера». Г.Хоппер доказала, чего она стоит как программист. Впоследствии она писала: «Я имела то преимущество, что изучала как технику, так и математику и знала, как работает машина от начала и до конца».
1.1.Языки программирования: эволюция, классификация
В развитии инструментального программного обеспечения (т.е. программного обеспечения, служащего для создания программных средств в любой проблемной области) рассматривают пять поколений языков программирования (ЯП).
Первые три поколения ЯП характеризовались более сложным набором зарезервированных слов и синтаксисом. Языки четвертого поколения все еще требуют соблюдения определенного синтаксиса при написании программ, но он значительно легче для освоения. Естественные ЯП, разрабатываемые в настоящее время, составят пятое поколение и позволят определять необходимые процедуры обработки информации, используя предложения языка, весьма близкого к естественному и не требующего соблюдения особого синтаксиса (табл. 1.6)
Таблица 1 Поколения ЯП
Поколения |
Языки программирования |
Характеристика |
Первое |
Машинные |
Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ |
Второе |
Ассемблеры, Макроассемблеры |
Более удобны для использования, но по-прежнему машинно-зависимы |
Третье |
Языки высокого уровня |
Мобильные, человеко-ориентированные, проще в освоении |
Четвертое |
Непроцедурные, объектно-ориентированные, языки запросов, параллельные |
Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой |
ЯП первого поколения представляли собой набор машинных команд в двоичном (бинарном) или восьмеричном формате, который определялся архитектурой конкретной ЭВМ. Каждый тип ЭВМ имел свой ЯП, программы на котором были пригодны только для данного типа ЭВМ. От программиста при этом требовалось хорошее знание не только машинного языка, но и архитектуры ЭВМ.
Второе поколение ЯП характеризуется созданием языков ассемблерного типа (ассемблеров, макроассемблеров), позволяющих вместо двоичных и других форматов машинных команд использовать их мнемонические символьные обозначения (имена). Являясь существенным шагом вперед, ассемблерные языки все еще оставались машинно-зависимыми, а программист все также должен был быть хорошо знаком с организацией и функционированием аппаратной среды конкретного типа ЭВМ. При этом ассемблерные программы все так же затруднительны для чтения, трудоемки при отладке и требуют больших усилий для переноса на другие типы ЭВМ. Однако и сейчас ассемблерные языки используются при необходимости разработки высокоэффективного программного обеспечения (минимального по объему и с максимальной производительностью).
Третье поколение ЯП начинается с появления в 1956 г. первого языка высокого уровня — Fоrtran, разработанного под руководством Дж. Бэкуса в фирме IВМ. За короткое время Fоrtran становится основным ЯП при решении инженерно-технических и научных задач.
Языки четвертого поколения носят ярко выраженный непроцедурный характер, определяемый тем, что программы на таких языках описывают только что, а не как надо сделать. В программах формируются скорее соотношения, а не последовательности шагов выполнения алгоритмов. Типичными примерами непроцедурных языков являются языки, используемые для задач искусственного интеллекта (например, Ргоlog).
1.2.Этапы разработки прикладных программ в среде системы программирования
Трансляция. Трансляция исходной программы есть процедура преобразования исходного модуля в промежуточную, так называемую объектную форму. Трансляция в общем случае включает в себя препроцессинг (предобработку) и компиляцию.
Препроцессинг - необязательная фаза, состоящая в анализе исходного текста, извлечения из него директив препроцессора и их выполнения.
Директивы препроцессора представляют собой помеченные спецсимволами (обычно %, #, &) строки, содержащие аббревиатуры или другие символические обозначения конструкций, включаемых в состав исходной программы перед ее обработкой компилятором.
Данные для расширения исходного текста могут быть стандартными, определяться пользователем либо содержаться в системных библиотеках ОС.
Компиляция — в общем случае многоступенчатый процесс, включающий следующие фазы:
синтаксический анализ — проверка правильности конструкций, использованных программистом при подготовке текста;
семантический анализ — выявление несоответствий типов и структур переменных, функций и процедур;
генерация объектного кода — завершающая фаза трансляции.
Выполнение трансляции (компиляции) может осуществляться в различных режимах, установка которых производится с помощью ключей, параметров или опций. Может быть, например, потребовано только выполнение фазы синтаксического анализа и т.п.
Объектный модуль представляет собой текст программы на машинном языке, включающий машинные инструкции, словари, служебную информацию.
Объектный модуль не работоспособен, поскольку содержит неразрешенные ссылки на вызываемые подпрограммы библиотеки транслятора (в общем случае — системы программирования), реализующие функции ввода-вывода, обработки числовых и строчных переменных, а также на другие программы пользователей или средства пакетов прикладных программ.
Построение исполнительного модуля. Построение загрузочного модуля осуществляется специальными программными средствами — редактором связей, построителем задач, компоновщиком, основной функцией которых является объединение объектных и загрузочных модулей в единый загрузочный модуль с последующей записью в библиотеку или файл. Полученный модуль в дальнейшем может использоваться для сборки других программ и т.д., что создает возможность наращивания программного обеспечения.
Загрузка программы. Загрузочный модуль после сборки либо помещается в качестве раздела в пользовательскую библиотеку программ.
1.3.Разработка программного обеспечения (ПО)
Общие принципы разработки ПО. Программное обеспечение различается по назначению, выполняемым функциям, формам реализации. В этом смысле ПО — сложная, достаточно уникальная система. Однако существуют некоторые общие принципы, которые следует использовать при разработке ПО.
Частотный принцип. Основан на выделении в алгоритмах и в обрабатываемых структурах действий и данных по частоте использования. Для действий, которые часто встречаются при работе ПО, обеспечиваются условия их быстрого выполнения. К данным, которым происходит частое обращение, обеспечивается наиболее быстрый доступ, а подобные операции стараются сделать более короткими.
Принцип модульности. Под модулем в общем случае понимают функциональный элемент рассматриваемой системы, имеющий оформление, законченное и выполненное в пределах требований системы, и средства сопряжения с подобными элементами или элементами более высокого уровня данной или другой системы.
Способы обособления составных частей ПО в отдельные модули могут быть существенно различными. Чаще всего разделение происходит по функциональному признаку. В значительной степени разделение системы на модули определяется используемым методом проектирования ПО.
Принцип функциональной избирательности. Этот принцип является логическим продолжением частотного и модульного принципов и используется при проектировании ПО, объем которого существенно превосходит имеющийся объем оперативной памяти. В ПО выделяется некоторая часть важных модулей, которые постоянно должны быть в состоянии готовности для эффективной организации вычислительного процесса. Эту часть в ПО называют ядром или монитором. При формировании состава монитора требуется удовлетворить два противоречивые требования. В состав монитора, помимо чисто управляющих модулей, должны войти наиболее часто используемые модули. Количество модулей должно быть таким, чтобы объем памяти, занимаемой монитором, был не слишком большим. Программы, входящие в состав монитора, постоянно находятся в оперативной памяти. Остальные части ПО постоянно хранятся во внешних запоминающих устройствах и загружаются в оперативную память только при необходимости, иногда перекрывая друг друга.
Принцип генерируемости. Данный принцип определяет такой способ исходного представления ПО, который бы позволял осуществлять настройку на конкретную конфигурацию технических средств, круг решаемых проблем, условия работы пользователя.
Принцип функциональной избыточности. Этот принцип учитывает возможность проведения одной и той же работы (функции) различными средствами. Особенно важен учет этого принципа при разработке пользовательского интерфейса для выдачи данных из-за психологических различий в восприятии информации.
Принцип «по умолчанию». Применяется для облегчения организации связей с системой как на стадии генерации, так и при работе с уже готовым ПО. Принцип основан на хранении в системе некоторых базовых описаний структур, модулей, конфигураций оборудования и данных, определяющих условия работы с ПО. Эту информацию ПО использует в качестве заданной, если пользователь забудет или сознательно не конкретизирует ее. В данном случае ПО само установит соответствующие значения.
1.4.Системы программирования
Система программирования – это язык и средства для разработки прикладных программ. Современное инструментальное средство для разработки программ представляет собою интегрированную среду, которая строится на интерактивном принципе, обеспечивающем комфортную обстановку для программиста. Она предназначена для повышения эффективности программирования и обеспечивает полный набор действий для разработки программы и анализа результатов ее выполнения. В состав современной интегрированной среды разработки программ входят: текстовый редактор, транслятор, редактор связей, библиотеки подпрограмм, программа – отладчик, развитая система помощи и подсказок. Существующие системы программирования делятся на компилирующие и интерпретирующие, в соответствии с типом их трансляторов. Трансляторы – это программы, которые переводят текст с языка программирования на машинный. Они могут быть двух типов: компиляторы и интерпретаторы. Компилятор – это транслятор, в котором трансляция и выполнение программы разнесены во времени: сначала весь текст транслируется, без выполнения программы, полученной в результате ее трансляции, а затем полученная программа выполняется. Интерпретаторы – это трансляторы, в которых текст транслируется и выполняется пооператорно, т.е. трансляция и выполнение операторов программы совмещены во времени. Примеры компиляторов – это компиляторы с языков Паскаль и Си. Примеры интерпретаторов - интерпретатор с языка Basic, интерпретатор команд OC, например MSDOS.
1.5. Этапы подготовки и решения задач на компьютере
Решение задачи на ЭВМ представляет собой сложный процесс, включающий в себя несколько этапов:
Схематично это можно изобразить следующим образом: