Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Языки программирования. Общие понятия.




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

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

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

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

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

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

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

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

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

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

Эволюция и классификация ЯП.

I поколение. ЯП – набор машинных команд в двоичном или восьмиричном формате. Для каждой ЭВМ требовался свой язык. От программиста требовалось не только знание ЯП, но и знание архитектуры компьютера.

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

III поколение. В 1965 г. появился первый язык высокого уровня FORTRAN (Дж. Бэкус, фирма IBM). ЯП этого уровня человеко-ориентированные, проще в освоении. Версии FORTRAN использовались на ЭВМ всех классов. За FORTRAN появились и развились ALGOL, COBOL, BASIC, PL/1, PASCAL, APL, ADA,C, FORth, LISP, MODULA,  и др. В настоящее время более 2000 ЯП.

IV поколение. ЯП

1) носят непроцедурный характер – описывают ЧТО делать, а не КАК надо делать. Пример – PROLOG, LONGIN. Свободно осваиваются и применяются непрофессионалами;

2) объектно-ориентированнные -  каждый графический объект знает, что нужно делать со своими данными (SMALLTALK, его основа SIMULA-67);

3) языки запросов – извлечение информации из БД. Стандарт этих ЯП является SQL – STRUCTURED QUERY LANGUAGE;

4) языки параллельного программирования – ориентированы на создание ПО для вычислительных систем параллельной архитектуры (многомашинные, мультипроцессорные системы и т.д.). Эти языки являются модификацией FORTRAN, OCCAM, SISAL и т.д.).

V поколение. Языки искусственного интеллекта (InterLisp, EXPERTLISP, IQLISP, SAIL) и естественные языки, не требующие освоения специального синтаксиса. В настоящее время естественные языки ограниченных возможностей (CLOUT, Q$A, HAL).

Фактор Характеристика Группы Примеры ЯП

Уровень ЯП

Степень близости ЯП к архитектуре компьютера

Низкий Автокод, ACCEMBLER
Средний FORTRAN, PASCAL, ADA, BASIC, C
Высокий СЕТЛ

Специализация ЯП

Потенциальная или реальная область применения

Общего назначения (универсальные) ALGOL, PL/1, SIMULA, BASIC, PASCAL
Специализированные FORTRAN (инженерные расчеты), COBOL (коммерческие задачи), REFAL, LISP (символьная обработка), MODULA, ADA (программирование в режиме реального времени)

Алгоритмичность (процедурность)

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

Процедурные ACCEMBLER, FORTRAN, BASIC, PASCAL, ADA
Непроцедурные PROLOG, LANGIN




Поделиться с друзьями:


Дата добавления: 2018-11-10; Мы поможем в написании ваших работ!; просмотров: 238 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

2359 - | 2118 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.