Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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




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

Машинно-ориентированные языки – это языки, средства которых существенно зависят от особенностей конкретной ЭВМ. Одним из примеров таких языков является Ассемблер. Для них характерны:

1) высокое качество создаваемых программ с точки зрения их компактности и скорости выполнения;

2) возможность прямого использования конкретных аппаратных ресурсов;

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

4) трудоемкость процесса составления программ;

5) низкая скорость программирования;

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

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

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

Машинно-независимые языки можно условно разделить на три группы.

  1. Процедурные языки

Процедурные языки (называемые также директивными или императивными) – это языки, определяющие, как вычислять результат для какой-нибудь проблемы в соответствии с заданным алгоритмом. К ним относятся: Алгол, Фортран, Бейсик1.28 Tf20, Паскаль, Си.

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

1) Неструктурное программирование допускает использование в явном виде команды безусловного перехода (в большинстве языков GOTO). Это влечет за собой массу серьезных недостатков: программу, которая содержит бесконечные переходы вверх-вниз, очень трудно изменять и дополнять. Типичными представителями неструктурных языков являются ранние версии Бейсика и Фортрана.

2) В структурном программировании задача разбивается на большое число мелких подзадач, каждая из которых решается своей процедурой или функцией. Такой подход позволяет разрабатывать большие проекты силами нескольких программистов. Например, на Паскале и Си.

  1. Декларативные языки

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

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

Например, вам надо пройти в городе из пункта А в пункт Б.

Декларативная программа – это план города, в котором указаны оба пункта, плюс правила уличного движения. Руководствуясь этими правилами и планом города, курьер сам найдет путь от пункта А к пункту Б.

Процедурная программа – это список команд примерно такого рода: от пункта А по ул. Садовой на север до площади Славы, оттуда по ул. Пушкина два квартала, потом повернуть направо и идти до Театрального переулка, по этому переулку налево по правой стороне до дома 20, который и есть пункт Б.

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

команды выбора реализуются в виде условных операторов и операторов повторения (циклов).

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

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

Декларативные языки, в свою очередь, делятся на функциональные (аппликативные) и логические языки.

1) В основе функциональных языков лежит понятие функции как "черного ящика", имеющего несколько параметров (аргументов) на входе и один результат на выходе – f(x1, x2, …, xn) = y.

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

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

Например, если дано:

Джон – отец Джека,

Джек – отец Майка,

Дедушка – это отец отца или отец матери,

то система логического вывода должна сама сделать заключение:

Джон – дедушка Майка.

  1. Объектно-ориентированные языки

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

Например, для описания объекта «геометрическая фигура» можно использовать класс, содержащий три свойства (цвет, координаты x и y, определяющие начальную точку рисования данной фигуры на экране) и два метода (поменять цвет и переместить фигуру в точку с координатами x, y). Затем для данного класса можно определить подклассы, описывающие частные случаи геометрических фигур за счет добавления новых специфических свойств: прямоугольник (свойства ширина и высота), круг (свойство радиус) и т.п. При этом и для прямоугольника, и для круга будут применимы общие свойства и методы, заданные для класса «геометрическая фигура».

Типичными представителями объектно-ориентированных языков программирования являются C++, Java, Visual Basic.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 253.

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