Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
преддипломная практика / Реферат по теме дипломного проекта.doc
Скачиваний:
9
Добавлен:
26.01.2019
Размер:
163.33 Кб
Скачать

5. Классификация языков программирования

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

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

Алфавит – множество различных символов, используемых в языке.

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

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

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

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

Машинно-зависимые языки, в свою очередь, делят на машинные и машинно-ориентированные. Одновременно с этим для характеристики степени близости языка программирования к машинному языку используют понятие уровня языка. За начало отсчета уровней принят машинный язык, уровень которого равен 0. Естественный язык человека рассматривается как язык наивысшего уровня.

Различают два уровня машинно-ориентированных языков. К первому уровню относят мнемокоды, а ко второму – автокоды.

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

Автокод сохраняет основные черты мнемокода, однако в нем наряду с символическими аналогами машинных команд допускается использование так называемых макрокоманд, не имеющих прямых аналогов в машинном языке. Автокод утратил приставку 1:1, так как каждая макрокоманда автокода транслируется в группу команд машинного языка («один в несколько»). Программа, записанная на автокоде, становится более компактной и приобретает наглядность.

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

Машинно-независимые языки также делятся на две группы: к первой группе относятся процедурно-ориентированные языки, а ко второй – проблемно-ориентированные.

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

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

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

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

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

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

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

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

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

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

Указанные трудности стимулировали работы по созданию языков программирования, универсальных для широкого класса задач.

Одним из наиболее часто используемых языков программирования является Паскаль. Широкой популярности Паскаля среди программистов способствовали следующие причины:

  1. Благодаря своей компактности, удачному первоначальному описанию Паскаль оказался достаточно легким для изучения.

  2. Язык программирования Паскаль отражает фундаментальные и наиболее важные концепции (идеи) алгоритмов в легко воспринимаемой форме, что представляет программисту средства, помогающие проектировать программы.

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

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

  5. Использование в Паскале простых и гибких структур управления: ветвлений, циклов.

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

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

В Delphi автоматизирована лишь одна, хотя и очень важная, трудоемкая сторона программирования – создание интерфейса разрабатываемой программы. Но именно в своем интерфейсе программа непосредственно взаимодействует с операционной системой. Работа же по написанию той части, которая связана с непосредственным программированием задачи – расчетом величин, формированием массивов данных, статистической обработкой и т.д., остается, как и прежде, на самом программисте. В этом Delphi в чем-то напоминает пакет Turbo Vision, также разработанный фирмой Borland International. Однако пакет Delphi имеет намного больше возможностей и работает в графическом режиме.

На основании всего вышеизложенного, для написания моделирующей программы был выбран пакет Delphi, отвечающий всем требованиям программирования.

2