транслятором. На этом этапе транс-
ляторы могли переводить в машинные коды конструкции, которые
заменялись одной или несколькими (условно не больше пяти) ма-
шинными командами. Для совокупности правил, по которым следует
записывать программу, чтобы ее мог обработать такой транслятор,
используют
термины
ассемблер,
макроассемблер.
Ассемблер –
это
машинно-ориентированный
язык
низкого
уровня.
Алгоритм,
по
которому
строится
программа,
приходится
дробить на очень мелкие шаги, которые умеет выполнять процессор.
При появлении новых моделей процессоров с иной структурой ко-
манд и встроенных операций приходится создавать новые версии ас-
семблера, трансляторов с него и переписывать под них пользователь-
ские
программы.
Следующий этап развития инструментального ПО связан с по-
явлением
алгоритмических языков, каждый из которых содержит
конструкции, удобные для записи алгоритмов в той или иной сфере
человеческой
деятельности.
Алгоритмические
языки
относятся
к
классу
языков
высокого
уровня.
Они
позволяют
при
составлении
программы дробить алгоритм на более крупные смысловые блоки, не
связанные со структурой и типом команд ЭВМ, на которой будет ра-
ботать программа. При изменении модели процессора переписывает-
ся только транслятор с алгоритмического языка, а пользовательские
программы
остаются
прежними.
-
1 ... 19 20 21 22 23 24 25 26 ... 45
Синтаксис. Семантика
Обычный разговорный язык состоит из четырех основных
элементов: символов, слов, словосочетаний и предложений. Алго- ритмический язык содержит подобные элементы, только слова назы- вают элементарными конструкциями, словосочетания – выражения-ми, предложения – операторами. Алгоритмический язык (как и лю- бой другой язык), образуют три его составляющие: алфавит, синтак- сис и семантика.
Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть исполь- зованы при написании программы.
Синтаксис– правила использования символов алфавита в специальных конструкциях, с помощью которых составляется алго- ритм.
Семантика – система правил толкования конструкций языка. Таким образом, программа составляется с помощью соедине-
ния символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики.
Программа, написанная на алгоритмическом языке, называется
исходным модулем.
Для ее трансляции можно использовать два типа технологий: интерпретацию или компиляцию. Трансляторы, реализующие эти технологии, называются соответственно интерпретаторами и ком-пиляторами.
При интерпретации транслятор переводит в машинные коды очередную строку исходного модуля, сразу же выполняет еѐ и пере- ходит к обработке следующей строки, не создавая законченного ис- полняемого модуля всей программы в целом. Такой тип трансляции удобен на этапе отладки или тестирования программы.
При компиляции трансляция разбивается на два этапа
(рис. 4.1). На первом компилятор создает
объектный модуль – про-
межуточную программу, в которой конструкции исходного модуля
переведены в машинные коды, но вместо реальных адресов данных и
работающих с нею подпрограмм, используются относительные адре-
са и не добавлены служебные подпрограммы, необходимые для еѐ
работы.
На
втором
этапе
программа-сборщик
заменяет
в
объектном
модуле
относительные
адреса
на
абсолютные
и
подключает
к
нему
необходимые
для
работы
стандартные
программы.
В
результате
получается
исполняемыймодуль –
программа,
написанная
в
машинных
кодах
и
полностью
готовая
к работе.
Исполняемый модуль
Исходный модуль
Объектный модуль
Компиляция Компоновка
Перевод кон- струкций языка в ма- шинные ко- ды с исполь- зованием от- носительных адресов
Добавление необходимых стандартных программ,
замена отно- сительных адресов ре- альными
Рис.
4.1.
Схема
трансляции
в
режиме
компиляции
Этот режим трансляции удобен для расчѐтов по уже отлажен-
ной
и
протестированной
программе,
так
как
исполняемый
модуль
можно сохранить в памяти и при необходимости провести расчеты с
другим
набором
исходных
данных,
не
повторяя
трансляцию.
В настоящее время для большинства алгоритмических языков
разработаны
интегрированные системыпрограммирования(Бей-
сик, Паскаль, Си и т. п.). Они включают в себя следующие компонен-
ты:
-
текстовый редактор для написания программы;
-
библиотеки стандартных программ;
-
средства отладки;
-
справочную службу;
–компилятор
и/или
интерпретатор;
-
Основные алгоритмические языки высокого уровня
Один из первых языков программирования высокого уровня, Фортран(Formula Translation), был создан в середине 50-х годов. Он используется для инженерных и научных расчетов, для реше- ния задач физики и других наук с развитым математическим аппара- том. Благодаря своей простоте и тому, что на этом языке накоплены
большие библиотеки программ, Фортран и в наши дни остается од-
ним
из
самых
распространенных
алгоритмических
языков.
Для решения экономических задач был создан язык програм-
мирования
Кобол.
Расширение областей применения ЭВМ влечет за собой созда-
ние языков, ориентированных на новые сферы применения:
Снобол –
алгоритмический
язык
дляобработкитекстовойинформации.Лисп – алгоритмический язык для обработки символов. Он находит
широкое применение в исследованиях
по созданию искусственногоинтеллекта.
В 1968 г. был объявлен конкурс на лучший язык программиро-
вания для обучения студентов. Для этого конкурса
Никлаус ВиртсоздалязыкПаскаль,
достаточно
простой,
удобный,
с
наличием
мощных средств структурирования данных. Хотя Паскаль был разра-
ботан как язык для обучения программированию, он впоследствии
получил широкое развитие и в настоящее время считается одним из
самых
используемых языков.
ДляобучениямладшихшкольниковСамуэлем
Пайпертом
был
разработан
языкЛого.
Он
отличается
простотой
и
богатыми
возможностями.
Широкое распространение в школах в качестве обучающего
языка получил язык Бейсик, позволяющий взаимодействовать с ЭВМ в режиме непосредственного диалога. Спустя много лет после изо- бретения Бейсика, он и сегодня самый простой для освоения из де- сятков языков общецелевогопрограммирования.
Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программи- рования. В начале 70-х г. был разработан язык СИ, который широко используется как инструментальный язык для разработки опера-ционныхсистем,трансляторов,базданныхидругихсистемныхи прикладных программ. Это язык программирования общего назна- чения. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровож- дать. В отличие от Паскаля, в нем заложены возможности непосред- ственного обращения к некоторым машинным командам и к опреде- ленным участкам памяти компьютера.
Появление функционального программирования привело к
созданию языка Пролог (ПРОграммы ЛОГические). Этот язык про- граммирования разрабатывался для задач анализа и понимания ес-тественных языков на основе языка формальной логики и мето-довавтоматическогодоказательстватеорем.
В 80-х г. 20 века был создан язык Ада. В дополнение к класси- ческим свойствам, он обеспечиваетпрограммированиезадачре-альноговремениимоделированияпараллельногорешениязадач.
К языкам сверхвысокогоуровняможно отнести Алгол-68и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.
В современной информатике можно выделить два основных