Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Характеристики языков программирования.
Поскольку ЭВМ - это автомат, являющийся формальным исполнителем алгоритмов, поэтому для решения какой-либо задачи с помощью ЭВМ ей необходимо задать соответствующий алгоритм. Поскольку этот алгоритм предварительно надо ввести в память машины, а затем он должен интерпретироваться (т.е. восприниматься и исполняться) аппаратным путем, то этот алгоритм должен быть записан на специальном языке, понятном машине - такой язык принято называть машинным языком, а запись алгоритма на таком языке называется машинной программой. При этом разные типы ЭВМ могут иметь разные языки, так что программа, написанная на языке одной ЭВМ, может не быть машинной программой для другой ЭВМ. Таким образом, каждая ЭВМ способна непосредственно выполнять только программы, записанные на ее собственном машинном языке. Необходимость аппаратной реализации алгоритма, подлежащего выполнению, особенности элементной базы ЭВМ, вопросы их экономичности и т.д. приводят к тому, что язык машины довольно неудобен для человека. Например, любая машинная программа в конечном счете должна быть записана с помощью всего двух различных символов - цифр 0 и 1, так что выразительные возможности машинных языков чрезвычайно бедны. Кроме того, каждая ЭВМ может непосредственно выполнять весьма ограниченный набор операций, зафиксированный ее аппаратурой. В этот набор, для избежания чрезмерного усложнения аппаратуры, включается сравнительно небольшое число достаточно простых операций. Важно лишь, чтобы этот набор обеспечивал универсальность ЭВМ, т.е. чтобы с помощью этих операций можно было реализовать любой процесс обработки данных (хотя для решения некоторых задач ресурсов данной ЭВМ, например емкости ее памяти, может оказаться недостаточно). Бедность набора машинных операций вынуждает программиста разрабатывать алгоритм решения интересующей его задачи до весьма высокого уровня детализации, доводя ее до планирования соответствующей последовательности машинных операций. Ограниченные возможности аппаратуры приводят к тому, что каждая законченная фраза на машинном языке (называемая командой) может содержать в себе весьма ограниченный объем информации. Как мы видели в прошлом семестре, каждая машинная операция задается ее цифровым кодом и адресами операндов. Такой способ задания информации в командах приводит к тому, что машинная программа получается очень ненаглядной и трудно понимаемой для человека - даже в том случае, если он является автором этой программы. Для устранения этих трудностей, а значит для облегчения работы программиста и повышения надежности создаваемых программ (т.е. для уменьшения вероятности допущения в ней ошибок), были созданы специальные языки для записи алгоритмов, более удобные для человека, которые получили название алгоритмические языки или языки программирования высокого уровня (по сравнению с машинным языком, который тоже является языком программирования). Основные отличия алгоритмических языков от машинных языков со стоят в следующем: * алгоритмический язык обладает гораздо большими выразительными возможностями, т.е. его алфавит значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы; * набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса; * формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных; * требуемые операции задаются в удобном для человека виде, например с помощью общепринятых математических обозначений; * для задания операндов операций используемым в алгоритме данным присваиваются индивидуальные имена, выбираемые программистом, и ссылка на операнды производится главным образом путем их имен; * в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных. Таким образом, алгоритмический язык в значительной мере является машинно-независимым. Языки программирования характеризуются двумя основными параметрами: 1. Мощностью, которая определяется разнообразием задач, решение которых может быть достигнуто с помощью этого языка. 2. Уровнем, который определяется легкостью решения сложных задач с помощью этого языка. Чем проще реализуются в синтаксисе языка сложные операции и понятия, тем меньше объем получаемых на этом языке программ. Можно сказать, что чем мощнее язык, тем ниже его уровень. Самым мощным языком является машинный код. Существуют универсальные языки программирования, позволяющие решать задачи из различных прикладных областей. К таким можно отнести не только языки низкого уровня, таких как машинный код, ассемблер, но и языки высокого уровня, например, Паскаль, Бейсик, Си. Специализированные языки предназначены для решения задач в какой-либо одной области. Например, Кобол - для решения экономических задач, а Лисп - для обработки данных списковой структуры. Указанные выше признаки - мощность и уровень определяют следующие свойства языка: 1. Надежность - обеспечивает низкий уровень ошибок при написании программ, позволяет большинство ошибок выявить на этапе трансляции (Паскаль). 2. Простота - легкость понимания семантических конструкций языка (Паскаль, Бейсик). 3. Гибкость - легкость выражения необходимых действий (Си). 4. Полнота - способность обеспечивать решение класса задач предметной области. 5. Мобильность - независимость от аппаратных средств (Си). 6. Эффективность - эффективные коды реализации (Фортран, Си). Целевое назначение систем программирования. По структуре, уровню формализации входного языка и целевому назначению различают системы программирования машинно-ориентированные и машинно-независимые. Машинно-ориентированные. Машинно-ориентированные системы программирования имеют входной язык, зависящий от особенностей построения определенной машины или семейства машин. Наиболее типичными представителями таких систем программирования являются системы символического кодирования и ассемблеры. Системы символического кодирования. Система символического кодирования (автокод) - одна из первых систем, созданных для автоматизации программирования с использованием входных языков по принципу " один к одному" (например, широко распространенный в конце 1970 годов автокод Чайковского). Этот принцип предполагает, что одному символическому оператору соответствует одна машинная команда или константа. Смысл применения подобной системы состоит в использовании символических обозначений вместо машинных кодов, в применении автоматического распределения памяти и присвоении действительных адресов. Автокоды являются базой для создания более совершенных систем автоматизации программирования. Язык символического кодирования, являясь машинно-ориентированным, требует от программистов знания основных приемов непосредственного программирования и позволяет им в полной мере проявлять искусство для написания эффективных программ. У грамотных программистов машинный код, полученный на основе автокода более эффективный, чем полученный компиляторами языков Си или Фортран. Ассемблеры. В настоящее время широкое применение из машинно-ориентированных языков нашел язык ассемблера. Как правило, в языке ассемблера существует четыре типа операторов: 1) мнемоническая команда - соответствует одной машинной команде, в ней вместо машинных кодов операций используются мнемонические обозначения; 2) псевдокоманда - служит для передачи информации программе-транслятору и не порождает команд на машинном языке; 3) макрокоманда - соответствует нескольким машинным командам; 4) условная команда ассемблера - используется для управления процессом трансляции. Под ассемблером понимают транслятор, выполняющий перевод программы, записанной на языке ассемблера, на машинный язык. Машинно-независимые. Машинно-независимые системы программирования строятся на основе процедурно-ориентированных и проблемно-ориентированных языков. Процедурно-ориентированные. Процедурно-ориентированные системы в отличие от машинно-ориентированных в качестве входного языка программирования используют различные языки, не зависящие от конкретных ЭВМ. Эти языки, построенные по принципу " один к нескольким", отличаются тем, что полностью освобождают программиста от записи машинных программ. Процедурно-ориентированные языки служат для записи алгоритмов (процедур) обработки информации, характерных для решения задач определенного класса. Эти языки характеризуются тем, что в них приходится подробно описывать все действия, необходимые для решения задачи. Проблемно-ориентированные. Проблемно-ориентированные системы в качестве входного языка используют язык программирования с проблемной ориентацией. Программы, составленные на основе этих язы-ков программирования, записаны в терминах решаемой проблемы и реализуются выполнением соответствующих процедур. Программисту не требуется дополнительно описывать эти процедуры и контролировать порядок их следования. Благодаря высокой степени декларативности таких языков пользователь имеет возможность решать одну и ту же проблему различными методами в зависимости от его опыта в данной специальности. Примерами подобных систем могут служить средства генерации отчетов, сортировок, системы с применением табличных языков и другие. В задачу программиста при работе с генератором отчетов (например, на языке QBE) входит задание информации о структуре и местонахождении входного массива информации, формате и структуре требуемого отчета. При этом алгоритм получения отчета не описывается. Среди проблемно-ориентированных систем все большее значение приобретают непроцедурные (описательные) способы, ориентированные на «нетрадиционные» применения вычислительной техники: использование естественного языка, построение банков данных и баз знаний, создание экспертных систем и т. п., которые принято относить к проблематике искусственного интеллекта. Наиболее известными из непроцедурных языков являются SQL-подобные языки, а также язык ПРОЛОГ. Программа, написанная на них, не содержит формул, предписаний, что сделать для получения результата. Программа констатирует, какой результат желателен, однако не указывает как этого достичь, Иными, словами, программа описывает не, процедуру решения задачи, а логическую модель предметной области - некоторые факты относительно свойств предметной области и отношений между этими свойствами, а также правила вывода новых свойств и отношений из уже заданных. Популярное:
|
Последнее изменение этой страницы: 2016-07-14; Просмотров: 623; Нарушение авторского права страницы