тест |
Формальные языки и грамматики
Охарактеризуем эти уровни алгоритмических языков:
- языки запросов (непроцедурные языки ) предназначены для осуществления диалога с некоторым пакетом прикладных программ, — это языки имитационного моделирования, в частности язык SLAM и др.;
- языки высокого уровня (проблемно-ориентированные языки ) предназначены для решения определенного, но достаточно широкого класса задач, например, вычислительного характера или обработки текстов (символов) — это, к примеру, языки FORTRAN, BASIC, LISP и др.;
- ассемблеры (семейство языков ), предназначены для укрупнения и символической (мнемонической) записи машинных команд;
- языки микроопераций ( языки разработки микропрограмм) — собственно говоря, это и есть языки машинных операций.
Языки по типу их использования и сферам применения можно делить условно на следующие типы (это – не полная их классификация):
- языки процедурные;
- языки непроцедурные;
- языки функционального программирования;
- языки моделирования;
- языки аналитических преобразований;
- языки эвристические;
- языки описания, представления объектных языков или метаязыки.
Возможно и такое деление языков (отражающее характер их использования):
- метаязыки, языки описания других языков;
- языки описания, формулирования задач;
- языки описания технологии, сценариев решения задач;
- языки описания, разработки программ решения задач (или кодирования алгоритмов, часто вычислительного характера);
- языки описания, представления знаний (фреймовые языки);
- языки описания, представления данных;
- языки описания, формулировки решений задач.
В мире разработано несколько тысяч языков различного назначения.
Пример. Отметим следующие языки, которые оказали наибольшее влияние и преемственность в развитии языков программирования:
- ФОРТРАН, язык научно-технических расчетов, разработан в 1955 году фирмой IBM;
- АЛГОЛ, язык вычислительного характера, разработан в 1960 году Международным комитетом ученых;
- БЕЙСИК, простой язык для начинающих, разработан в 1965 году в Дортмунде;
- ПАСКАЛЬ, разработан в качестве языка учебного и исследовательского характера в 1969 году в Цюрихе Н. Виртом;
- СИ, разработан лабораторией BELL (США, 1972 г.) в качестве языка поддержки и программирования ОС UNIX;
- ПРОЛОГ, язык логического программирования, разработан Колмероэ в 1971-1973 годах;
- ПИТОН (ПАЙТОН), разработан в начале 1990-х годов Гвидо ван Россумом и является простым объектно-ориентированным языком, расширяемым, совершенствуемым пользователями;
- JAVA – язык, ориентированный на сеть Интернет и серверы WWW; рассмотрим этот язык подробнее ниже;
- HTML, предложен Тимом Бернерсом-Ли в 1989 году в качестве поддержки WWW-документов.
ЭВМ может исполнять программы, написанные на ее машинном языке, в машинных кодах. Для перевода с других языков на машинный язык составляется специальная программа, называемая транслятором. Алгоритм (программа на языке программирования) преобразуется в корректную последовательность команд и данных, загружаемых в память ЭВМ и выполняемых в ней аппаратно. Чем выше уровень используемого при составлении программы исходного языка, тем больше работ по трансляции программы. Транслятор переводит программу с исходного языка программирования на машинный язык загрузки ее в память и исполнения.
Существует два основных режима трансляции: компиляция и интерпретация. При интерпретации перевод на язык машины и выполнение каждой команды исходной программы осуществляется последовательно, покомандно, а полученная машинная программа пригодна только для одноразового решения задачи; данные вводятся при этом по мере трансляции. При компиляции до выполнения программы осуществляется полный перевод всей программы на машинный язык ЭВМ, затем полученная программа редактируется и загружается со всеми необходимыми для выполнения транслированной программы программами ОС в память ЭВМ и получается так называемый загрузочный модуль. Загрузочный модуль пригоден для многократного использования без повторной трансляции.
Пример. Язык Бейсик имеет трансляторы различного типа. Например, в среде TurboBasic (TBasic) – транслятор-интерпретатор, а в среде QuickBasic (QBasic) – транслятор-компилятор. Программа для TBasic интерпретируется по циклу: "ввод команды – перевод команды на внутренний машинный язык – ввод данных для данной команды – исполнение". Программа для QBasic компилируется по циклу: "перевод всех команд программы на внутренний язык – исправление ошибок в программе – ввод данных для программы – исполнение всей программы".