Файл: Современные языки программирования (Автокоды).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 18.05.2023

Просмотров: 269

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

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

Суще­ствует почти столько же разных машинных языков, сколько и компьютеров, но все они суть разновидности одной идей простые операции производятся со ско­ростью молнии на двоичных числах. Персональные компьютеры IBM исполь­зуют машинный язык микропроцессоров семейства 8086, т.к. их аппаратная часть основывается именно на данных микропроцессорах. Можно писать про­граммы непосредственно на машинном языке, хотя это и сложно. На заре ком­пьютеризации(в начале 1950-х г.г.), машинный язык был единственным язы­ком, большего человек к тому времени не придумал. Для спасения программи­стов от сурового машинного языка программирования, были созданы языки вы­сокого уровня (т.е. немашинные языки), которые стали своеобразным связую­щим мостом между человеком и машинным языком компьютера.


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

ГЛАВА 1. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1 Машинно-ориентированные языки

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

  • высокое качество создаваемых программ (компактность и скорость

выполнения);

  • возможность использования конкретных аппаратных ресурсов;
  • предсказуемость объектного кода и заказов памяти;
  • для составления эффективных программ необходимо знать систему

команд и особенности функционирования данной ЭВМ;

  • трудоемкость процесса составления программ (особенно на

машинных языках и ЯСК), плохо защищенного от появления

ошибок;

  • низкая скорость программирования;
  • невозможность непосредственного использования программ,

составленных на этих языках, на ЭВМ других типов.

Машинно-ориентированные языки по степени автоматического програм­миро­вания подразделяются на классы.

1.1.1 Машинный язык

Как я уже упоминал, во введении, отдельный компьютер имеет свой опреде­ленный Машинный язык (далее МЯ), ему предписывают выполне­ние указыва­емых операций над определяемыми ими операндами, поэтому МЯ является ко­мандным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/ и др.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции.


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

1.1.2 Языки Символического Кодирования

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

Использование символических адресов – первый шаг к созданию ЯСК. Ко­манды ЭВМ вместо истинных (физических) адресов содержат симво­лические адреса. По результатам составленной программы определяется требуемое коли­чество ячеек для хранения исходных промежуточных и результирующих значе­ний. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным про­граммистом или специальной программой, что в значительной степени облег­чает труд программиста.

1.1.3 Автокоды

Есть также языки, включающие в себя все возможности ЯСК, посред­ством расширенного введения макрокоманд - они называются Автокоды.

В различных программах встречаются некоторые достаточно часто ис­пользу­ющиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких про­цедур обеспечивается оформлением их в виде спе­циальных макрокоманд и включением последних в язык программирова­ния, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями –расстановкой и генерированием. В постановоч­ной системе содержатся «остовы» - серии ко­манд, реализующих требуе­мую функцию, обозначенную макрокомандой. Мак­рокоманды обеспечи­вают передачу фактических параметров, которые в про­цессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу.


В системе с генерацией имеются специальные программы, анализирую­щие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реа­лизующих данную функцию.

Обе указанных системы используют трансляторы с ЯСК и набор макро­команд, которые также являются операторами автокода.

Развитые автокоды получили название Ассемблеры. Сервисные про­граммы и пр., как правило, составлены на языках типа Ассемблер. Более полная инфор­мация о языке Ассемблера см. ниже.

1.1.4 Макрос

Язык, являющийся средством для замены последовательности символов опи­сывающих выполнение требуемых действий ЭВМ на более сжатую форму - называется Макрос (средство замены).

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

Макрос одинаково может работать, как с программами, так и с данными.

1.2 Машинно-независимые языки

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

Подобные языки получили название высокоуровневых языков програм­мирова­ния. Программы, составляемые на таких языках, представляют со­бой последо­вательности операторов, структурированные согласно прави­лам рассматрива­ния языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают дей­ствия, которые должна выполнять система после трансляции программы на МЯ. Таким образом, командные последова­тельности (процедуры, подпро­граммы), часто используемые в машинных программах, представлены в высо­коуровневых языках отдельными опе­раторами. Программист получил возмож­ность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.

1.2.1 Проблемно – ориентированные языки


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

1.2.2 Универсальные языки

Универсальные языки были созданы для широкого круга задач: коммер­ческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он поз­воляет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет разви­тую систему операторов для управ­ления форматами, для работы с полями пе­ременной длины, с данными организованными в сложные структуры, и для эф­фективного использова­ния каналов связи. Язык учитывает включенные во мно­гие машины воз­можности прерывания и имеет соответствующие операторы. Предусмот­рена возможность параллельного выполнения участков программ.

Программы в Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения па­мяти.

1.2.3 Диалоговые языки

Появление новых технических возможностей поставило задачу перед си­стем­ными программистами – создать программные средства, обеспечи­вающие опе­ративное взаимодействие человека с ЭВМ их назвали диало­говыми языками. Эти работы велись в двух направлениях. Создавались специальные управляю­щие языки для обеспечения оперативного воздействия на про­хождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) язы­ках. Разрабатывались также языки, которые кроме целей управления обеспечи­вали бы описание алгоритмов решения задач. Необходимость обеспечения опе­ративного взаимодействия с пользовате­лем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавли­вает взаимосвязь структур исходной и объектной программ. Это поз­во­ляет осуществить требуемые редакционные изменения в объектной про­грамме.