Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по методике и информатикеВсё в одном.doc
Скачиваний:
13
Добавлен:
25.09.2019
Размер:
1.09 Mб
Скачать
  1. Языки программирования. Интерпретаторы и компиляторы.

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

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

)Pascal. Интерпретатор-пр-ма, к-я воспринимает входную пр-му на исходном языке и выполняет ее (которые сканируют и проверяют исходный код в один шаг)Basic.

Этапы компиляции:1.работа лексического анализатора состоит в том, чтобы сгруппировать опред-ые символы в единые синтаксические объекты-лексеммы, т.е. выходом явл. послед-ть лексем. 2.инф-ия о лексемах собирается и записывается в одну или неск-ко табл. в виде списка лексем. 3.исследуется цепочка лексем-выходом явл. дерево, к-е представляет синтаксическую структуру присущую исходной пр-ме. 4.полученное дерево испол-ся для перевода пр-му на машин. язык(ассемблер). 5.На этапе оптимизации пр-ый код модернизируется, т.е. исключаются лишни операции, удаляются бесполезные присваивания, произв-ся оптимизация вычислений логических выражений и т.д., происходит порождение команд, составл-ых предложение выходных языков.

Кратко рассмотрим классификацию языков программирования по стилю программирования. Если под стилем понимать совокупность правил, лежащих в основе синтаксиса и семантики языка программирования, то различают следующие стили: 1.неструктурный; 2.структурный; 3.логический; 4.объектно-ориентированный; 5.функциональный. Неструктурное программирование допускает использование в явном виде команды безусловного перехода. Типичные представители неструктурных языков - ранние версии Бейсика и Фортрана. Однако в языках высокого уровня наличие команды перехода влечет за собой массу серьезных недостатков: программа превращается в клубок с бесконечными переходами вверх-вниз, ее очень трудно сопровождать и модифицировать.

Структурный стиль в основе лежат две идеи: 1. Задача разбивается на большое число мелких подзадач, каждая из которых решается своей процедурой или функцией. 2. Любой алгоритм можно реализовать, используя лишь три управляющие конструкции: последовательное выполнение, ветвление и цикл. Принципы структурного программирования были реализованы в языке Алгол, но наибольшую популярность завоевал язык Паскаль. Логическое программирование представляет собой попытку возложить на программиста только постановку задачи, а поиски путей ее решения предоставить транслятору. Логические языки (Пролог) имеют специальные конструкции для описания объектов и связей между ними. Объектно-ориентированное (ОО) программирование представляет собой отображение объектов реального мира, их свойств (атрибутов) и связей между ними при помощи специальных структур данных. При объектно-ориентированном подходе для объекта создается своя структура данных (класс), содержащая как свойства объекта (поля), так и процедуры для управления объектом (методы). В основе функционального стиля лежит понятие функции как «черного ящика», имеющего вектор параметров (аргументов) на входе и результат r (скаляр) на выходе: f(…)=r. Допустим случай, когда вектор параметров отсутствует. В функциональных языках программирования отсутствуют операторы: все действия, в том числе и управляющие конструкции, выполняются при помощи вызовов функций. Поскольку каждая функция возвращает значение, ее можно подставить в качестве аргумента другой функции, что позволяет записывать сложные выражения в функциональной форме. Одним из первых функциональных языков стал язык Лисп, созданный как язык ИИ. К языкам ИИ относят такие языки, которые способны в зависимости от набора исходных данных модифицировать алгоритм работы, т.е. «на ходу» менять программу. Задачи, решаемые на компьютере, являются математическими моделями процессов или явлений реальной жизни. В математической модели находят отражение наиболее существенные связи между реальными объектами. Модели реальных объектов вместе с присущими им связями образуют структуры данных, процесс обработки которых и описывается с помощью алгоритмов. Разные классы решаемых на компьютере задач характеризуются и разными структурами данных, что находит отражение и в соответствующих языках программирования. Языки, ориентированные на решение различных классов задач, используют и различные способы представления и обработки структур данных. Однако при решении задачи на компьютере подобно тому, как структуры разнообразных алгоритмов отображаются на структуру машинного языка, так и разнообразные структуры данных отображаются на структуру машинной памяти. Память компьютера имеет дискретную структуру и состоит из элементов, называемых ячейками. Каждая ячейка может содержать одно значение, называемое машинным словом. Ячейки нумеруются следующими подряд натуральными числами. Таким образом, память компьютера предс-т собой линейную посл-ть ячеек.