Языки программирования

Автор работы: Пользователь скрыл имя, 03 Ноября 2012 в 10:52, реферат

Описание работы

Компьютерная программа представляет собой логически упорядоченную последовательность команд, предназначенных для управления компьютером. Процессор компьютера – это большая интегральная схема. Все данные и команды он получает в виде электрических сигналов. В двоичном коде наличие сигнала описывается понятием «1», а его отсутствие – понятием «0». Команды, обрабатываемые процессором, можно интерпретировать как ряд чередующихся определенным образом единиц и нулей. То есть любая команда преобразуется в двоичное число. Таким образом, процессор исполняет программы, представляющие собой последовательность чисел и называемые машинным кодом.

Файлы: 1 файл

Языки программирования.docx

— 28.46 Кб (Скачать файл)

  Языки программирования

Компьютерная  программа представляет собой логически упорядоченную последовательность команд, предназначенных для управления компьютером. Процессор компьютера – это большая интегральная схема. Все данные и команды он получает в виде электрических сигналов. В двоичном коде наличие сигнала описывается понятием «1», а его отсутствие – понятием «0». Команды, обрабатываемые процессором, можно интерпретировать как ряд чередующихся определенным образом единиц и нулей. То есть любая команда преобразуется в двоичное число. Таким образом, процессор исполняет программы, представляющие собой последовательность чисел и называемые машинным кодом.

Писать программы в  машинных кодах очень сложно, причем с ростом размера программы эта  задача усложняется. В компьютерах  первого поколения использовались программы, написанные в машинных кодах, причем для каждого компьютера существовал  свой собственный машинный код. Числовая кодировка команд, адресов ячеек  и обрабатываемых данных, зависимость  вида про граммы от ее места в  памяти не давали возможность следить  за смыслом программы. Это во многом ограничивало область применения компьютеров  первого поколения. В тот период (начало 50-х гг.) средства программирования и программное обеспечение только зарождались и были еще не развиты. Для того чтобы сделать программу  читабельной и иметь возможность  следить за ее смысловой структурой, придумали символический язык ассемблер, близкий к машинному (конец 50-х  – начало 60-х гг.), в котором  появилось понятие переменной. Ассемблер  стал первым полноценным языком программирования. Благодаря этому заметно уменьшилось  время разработки, и возросла надежность программ. Для записи кодов операций и обрабатываемой информации в ассемблере используются стандартные обозначения, позволяющие записывать числа и  текст в общепринятом виде, для  кодов команд приняты мнемонические  обозначения для обозначения  величин, размещаемых в памяти, можно  применять имена. После ввода  программы ассемблер сам заменяет символические имена на адреса памяти, а символические коды команд на числовые. Использование ассемблера сделало  процесс программирование более  наглядным. Дальнейшее развитие этой идеи привело к созданию языков программирования высокого уровня, в которых длинные  и сложные последовательности машинных кодов были заменены одним единственным обозначающим их словом – операторы.

 Понятие «язык  программирования»

Сегодня практически все  программы создаются с помощью  языков программирования. Теоретически программу можно написать и на естественном языке (говорят: программирование на метаязыке), но из-за неоднозначности  естественного языка автоматически  перевести такую программу в  машинный код пока невозможно.

Языки программирования –  это формальные искусственные языки. Как и естественные языки, они  имеют алфавит, словарный запас, грамматику и синтаксис, а также  семантику.

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

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

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

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

Языки программирования, ориентированные  на команды процессора и учитывающие  его особенности, называют языками  низкого уровня. «Низкий уровень» не означает неразвитый, имеется в  виду, что операторы этого языка  близки к машинному коду и ориентированы  на конкретные команды процессора.

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

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

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

Компиляторы и  интерпретаторы

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

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

Компиляторы полностью обрабатывают весь текст программы (его называют исходным кодом или source code). Они осуществляют поиск синтаксических ошибок, выполняют семантический анализ и только затем, если текст программы в точности соответствует правилам языка, его автоматически переводят (транслируют) на машинный язык (говорят: генерируют объектный код или object code). Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы. Сгенерированный объектный код обрабатывается специальной программой сборщиком или редактором связей, который производит связывание объектного и машинного кодов. Текст программы преобразуется в готовый к исполнению ЕХЕ-файл (исполнимый код), его можно сохранить в памяти компьютера или на диске. Этот файл имеет самостоятельное значение, и может работать под управлением операционной системы. Его можно перенести на другие компьютеры с процессором, поддерживающим соответствующий машинный код.

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

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

Процесс создания программы включает:

Составление исходного кода программы (рис. 1) на языке программирования.

Этап трансляции, необходимый  для создания объектного кода программы 

Построение загрузочного модуля, готового к исполнению.

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

 

Совокупность  этих программных средств входит в состав системы программирования:

Текстовый редактор (необходимый  для создания и редактирования исходного  кода программы на языке программирования).

Компилятор.

Редактор связей.

Отладчик.

Библиотеки функций.

Справочная система.

 Классификация  и обзор языков программирования 

Современное состояние языков программирования можно представить  в виде следующей классификации (рис. 2).

 Процедурное программирование

Процедурное или императивное (от лат. Imperativus – повелительный) программирование есть отражение фон Неймановской архитектуры компьютера. Программа  на процедурном языке состоит  из последовательности команд, определяющих процедуру решения задачи. Основным является оператор присваивания, предназначенный  для определения и изменения  содержимого памяти компьютера. Концепция  памяти как места хранения данных, значения которых можно изменять операторами программы, является фундаментальным  в императивном программировании.

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

Одним из первых процедурных  языков программирования высокого уровня стал Фортран ( FORmula TRANslation), созданный  в начале 50-х гг. в США фирмой IВM.

Язык программирования С (Си) был разработан в лаборатории Bell для реализации операционной системы UNIX в начале 70-х гг. и не рассматривался как массовый. Он планировался для  замены Ассемблера, чтобы иметь возможность  создавать столь же эффективные  и компактные программы, и в то же время не зависеть от конкретного  типа процессора. В·С сочетаются достоинства  современных высокоуровневых языков в части управляющих конструкций  и структур данных с возможностями  прямого доступа к аппаратным средствам компьютера. Синтаксис  языка С обеспечивает краткость  программы, его компиляторы генерируют эффективный объектный код. Одна из наиболее существенных особенностей С состоит в том, что различия между выражениями и операторами  нивелируются, это приближает его  к функциональным языкам. Например, выражение может обладать побочным эффектом присваивания, а также может  использоваться в качестве оператора. Нет четкого различия между процедурами  и функциями, более того, понятие  процедуры вообще не вводится. Синтаксис  языка затрудняет программирование и восприятие составленных программ. Отсутствует строгая типизация  данных, что предоставляет дополнительные возможности программисту, но не способствует созданию надежных программ. Язык С  приобрел большую популярность среди  системных и прикладных программистов. В настоящее время этот язык реализован для большинства компьютерных платформ.

 Логическое  программирование

Создание языка искусственного интеллекта Пролог (PROLOG, PROgramming in LOGic –  программирование в терминах· логики) в 1973 г. французским ученым Аланом Кольмероэ  открыло новую область – логическое или реляционное программирование.

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

Информация о работе Языки программирования