Файл: Обзор языков программирования высокого уровня (История развития языков программирования).pdf

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

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

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

Добавлен: 31.03.2023

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

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

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

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

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

Основные концепции модульного программирования:

  • каждый модуль реализует единственную независимую функцию;
  • каждый модуль имеет единственную точку входа и выхода;
  • каждый модуль имеет единственную точку входа и выхода;
  • размер модуля по возможности должен быть минимизирован;
  • каждый модуль может быть разработан и закодирован различными членами бригады программистов и может быть отдельно протестирован;
  • вся система построена из модулей;
  • модуль не должен давать побочных эффектов;
  • каждый модуль не зависит от того, как реализованы другие модули[5].

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

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

Концепция модульного программирования реализована в ряде языков, таких как Modula 2, Turbo Pascal 5.0 и выше, C, Python,Perl.


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

Принципиально иное направление в программировании связано с парадигмами непроцедурного программирования. К ним можно отнести объектно-ориентированное и декларативное программирование.

Объектно-ориентированный язык создает окружение в виде множества независимых объектов. Каждый объект ведет себя подобно отдельному компьютеру, их можно использовать для решения задачи как «черные ящики», не вникая во внутренние механизмы их функционирования.

Из языков объектного программирования, популярных среди профессионалов, следует назвать прежде всего C++, для более широкого круга программистов предпочтительны среды типа Delphi и Visual Basic.

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

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

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

Типичным представителем функциональных языков программирования является Лисп. В основе языка Лисп лежит лямбда-исчисление. Лямбда-исчисление – формализм для представления функций и способов их комбинирования. Вместе со своим эквивалентом –комбинаторной логикой, в которой не используются переменные, – предложено около 1930 г. логиками Черчем, Шейнфинкелем и Карри.

В лямбда-исчислении Черча функция записывается в виде l (x1,x2, … , xn).fn

В Лиспе лямбда-выражение имеет вид:

(LAMBDA(x1,x2, … , xn).fn).

Символ LAMBDA означает, что мы имеем дело с определением функции. Символы xi являются формальными параметрами, они образуют список, называемый лямбда-списком; fn – тело функции, которое может иметь произвольную форму, допускаемую интерпретатором Лиспа. Телом функции может быть константа или композиция из вызовов функций.


Программы на языках логического программирования выражены как формулы математической логики, а компилятор пытается получить следствия из них. Так же как в функциональном программировании, программист остается в неведении о методах, применяемых при вычислении, и последовательности исполнения элементарных действий. Большая часть ответственности за эффективность вычислений в логическом и функциональном программировании перекладывается на «плечи» транслятора используемого языка программирования.

Все сказанное выше можно отобразить следующей схемой:

программирование

непроцедурное

операционное

процедурное

структурное

объектное

декларативное

логическое

Ассемблер

Фортран

Бейсик

Си

Паскаль

Модула

Смолток

Си++

Делфи

Пролог

Лисп

функциональ-

ное

Следует привести другие классификации языков программирования.

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

  1. Простые операционные модели (языки, основанные на конечных автоматах, машине Тьюринга);
  2. Аппликативные модели (языки на основе лямбда-исчисления Чёрча, системы комбинаторов Карри, чистого Лиспа);
  3. Модели фон Неймана (традиционные языки программирования).

Джон Устерхаут предложил принцип классификации языков, в соответствии с которым высокоуровневые языки делятся на языки системного программирования и на скриптовые.

Скриптовый язык (англ. scripting language, также называют язык сценариев) — язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (batch languages или job control languages). Сценарии всегда интерпретируются, а не компилируются.

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

Поскольку сценарии интерпретируются из исходного кода динамически при каждом исполнении, они выполняются обычно значительно медленнее готовых программ, оттранслированных в машинный код на этапе компиляции. Поэтому сценарные языки не применяются для написания программ, требующих оптимальности и быстроты исполнения. Но из-за простоты они часто применяются для написания небольших, одноразовых («проблемных») программ. Также, в плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, command.com) и предварительно компилируемые (Perl). Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Предкомпилируемые языки вначале считывают всю программу, компилируют её всю либо в машинный код, либо в какой-то внутренний формат, и лишь затем — исполняют получившийся код.


Вегнер сгруппировал некоторые из наиболее известных языков высокого уровня в четыре поколения в зависимости от того, какие языковые конструкции впервые в них появились:

Первое поколение (1954-1958)

FORTRAN I

Математические формулы

ALGOL-58

Математические формулы

Flowmatic

Математические формулы

IPL V

Математические формулы

Второе поколение (1959-1961)

FORTRAN II

Подпрограммы, раздельная компиляция

ALGOL-60

Блочная структура, типы данных

COBOL

Описание данных, работа с файлами

Lisp

Обработка списков, указатели, сборка мусора

 Третье поколение(1962-1970)

PL/I

FORTRAN+ALGOL+COBOL

ALGOL-68

Более строгий приемник ALGOL-60

Pascal

Более простой приемник ALGOL-60

Simula

Классы, абстрактные данные

 Потерянное поколение (1970-1980)

Языки созданные, но не выжившие. Например, PL/1 , Malboge .

Глава 2. Современные системы программирования

2.1 Microsoft Visual Basic

Microsoft Visual Basic — средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка Бейсик, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.

Visual Basic считается хорошим средством быстрой разработки прототипов программы, для разработки приложений баз данных и вообще для компонентного способа создания программ, работающих под управлением операционных систем семейства Microsoft Windows.

Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3 — VB3. Окончательное признание как полноценного средства программирования для Windows — при выходе версии 5 — VB5. Версию VB6, входящую в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом. После этого разработчики из Microsoft существенно изменили направление развития данной технологии[6].


Visual Basic .NET не позволяет программировать по-старому, ибо, по сути, является совершенно другим языком, таким же, как и любой другой язык программирования для платформы .NET. Индивидуальность языка, так же как и его преимущества (простота, скромность создания программ, лёгкость использования готовых компонент) при использовании в среде .NET не имеют такого значения, как раньше — всё сосредоточено на возможностях самой системы .NET, на её библиотеке классов. Поэтому сегодня нужно говорить о классическом Visual Basic, его диалектах Visual Basic for Applications (VBA) и Visual Basic Scripting Edition (VBScript) и о языке для платформы (4, 467) .NET — Visual Basic .NET. Основные разновидности Visual Basic:

1) Классический Visual Basic (версии 5-6).Этот язык очень сильно привязан к своей среде разработки и к операционной системе Windows, являясь исключительно инструментом написания Windows-приложений. Привязка к среде заключается в том, что существует большое количество средств, предназначенных для помощи и удобства программирования: встроенный отладчик, просмотр переменных и структур данных на лету, окно отладки, всплывающая подсказка при наборе текста программы (Intellisense). Все эти преимущества делают бесполезным и даже невозможным использование Visual Basic вне среды разработки, например в обычном текстовом редакторе.

2) Visual Basic for Applications (VBA) Это средство программирования, практически ничем не отличающееся от классического Visual Basic, которое предназначено для написания макросов и других прикладных программ для конкретных приложений. Наибольшую популярность получил благодаря своему использованию в пакете Microsoft Office. Широкое распространение Visual Basic for Applications в сочетании с изначально недостаточным вниманием к вопросам безопасности привело к широкому распространению макровирусов.

3) Visual Basic Scripting Edition (VBScript).Скриптовый язык, являющийся несколько усечённой версией обычного Visual Basic. Используется в основном для автоматизации администрирования систем Windows, а также для создания страниц ASP и сценариев для Internet Explorer.

Достоинства VB:

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

Недостатки:

  • Поддержка операционных систем только семейства Windows и Mac OS X (Исключение — VB1 for DOS).
  • Отсутствие механизма наследования объектов. Существующие в языке наследование, позволяет наследовать только интерфейсы объектов, а не их самих. Таким образом, в унаследованном классе должны быть явно переписаны все функции базового класса. Также в унаследованном классе невозможно добавление каких-либо методов, присущих только данному классу, то есть если абстрактный базовый класс содержит только два метода, то и производный класс содержит только два метода, не более и не менее того.
  • Требует установленных DLL для работы программы[7].