Файл: «Современные языки программирования» (История развития языков программирования).pdf
Добавлен: 28.03.2023
Просмотров: 208
Скачиваний: 4
Основная классификация языков программирования высокого уровня основывается на их принадлежности к одному из оформившихся к настоящему времени стилей программирования, каждому из которых соответствует своя собственная модель вычислений. Соответственно выделяют четыре группы языков программирования высокого уровня:
Императивные (процедурные): основными объектами в таких языках являются переменные, операторы присваивания, стандартные алгоритмические конструкции. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия. Примерами процедурных языков являются PASCAL, FORTRAN, C, MODULA, BASIC и другие.
Функциональные: программа описывает вычисление некоторой функции, значения которой определяются по заданным примерам; предназначены для решения задач не численного характера. Примером функционального языка является LISP (List Processing – обработка списков). Разработан и реализован в Массачусетском технологическом институте в 1959 г. Рассматривается специалистами как основной язык программирования систем искусственного интеллекта.
Логические: программы на таких языках не описывают действия, они задают данные и отношения между ними, после этого можно задавать вопросы. Языком логического программирования является PROLOG – Programming in Logic.
Объектно-ориентированные: создают объекты, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. К объектно-ориентированным относятся большинство современных языков программирования. [2, с.10]
Под алгоритмом понимается способ преобразования представления информации. Слово algorithm — произошло от имени аль-Хорезми — автора известного арабского учебника по математике. [1, с.9]
Алгоритм – это строгое и точное предписание последовательности действий для решения поставленной задачи.
Любой алгоритм рассчитан на конкретного исполнителя – того, кто будет выполнять указанную в алгоритме последовательность действий.
Исполнителем алгоритма может быть человек или автоматическое устройство, способное воспринять и выполнить предусмотренные в нем действия.
Исполнитель действует формально, т.е. он только строго выполняет команды алгоритма, не вникая в содержание поставленной задачи и автоматически выполняя некоторые правила, инструкции.
Конечное множество команд, которые воспринимает исполнитель – это СКИ (система команд исполнителя).
В информатике универсальным исполнителем алгоритмов является компьютер. [2, с.5]
Алгоритмы типичным образом решают не только частные задачи, но и классы задач. Подлежащие решению частные задачи, выделяемые по мере надобности из рассматриваемого класса, определяются с помощью параметров. Параметры играют роль исходных данных для алгоритма.
Пять важных особенностей алгоритма:
-Конечность. Алгоритм должен всегда заканчиваться после конечного числа шагов.
-Определенность. Каждый шаг алгоритма должен быть точно определен.
- Ввод. Алгоритм имеет некоторое (быть может, равное нулю) число входных данных, т. е. величин, заданных ему до начала работы.
-Вывод. Алгоритм имеет одну или несколько выходных величин, т. е. величин, имеющих вполне определенное отношение к входным данным.
-Эффективность. Это означает, что все операции, которые необходимо произвести в алгоритме, должны быть достаточно простыми, чтобы их можно было в принципе выполнить точно и за конечный отрезок времени с помощью карандаша и бумаги.
Алгоритм должен быть практичным и хорошим с эстетической точки зрения.
Для алгоритмов важно различать следующие аспекты:
-постановку задачи, которая должна быть разрешена с помощью алгоритма;
-специфичный способ, каким решается задача, при этом для алгоритма различают:
а) элементарные шаги обработки, которые имеются в распоряжении;
б) описание выбора отдельных подлежащих выполнению шагов.
Для алгоритмически разрешимой постановки задачи всегда имеется много различных способов ее решения, т. е. различных алгоритмов. [1, с.9-10]
Свойства алгоритма:
-дискретность: состоит из отдельных шагов (команд)
-понятность: должен включать только команды, известные исполнителю (входящие СКИ)
-определенность: любое действие должно быть строго и недвусмысленно определено в каждом случае, при одинаковых исходных данных всегда выдает один и тот же результат
-конечность (результативность): приводит к решению задачи (получению результата) за конечное число шагов
-массовость: должен быть применим к решению не одной задачи, а некоторого класса задач, различающихся лишь исходными данными
Программа – это:
-алгоритм, записанный на каком-либо языке программирования
-набор команд для компьютера
Команда — это описание действий, которые должен выполнить компьютер:
-откуда взять исходные данные?
-что нужно сними сделать?
-куда (как) вывести результат?
Способы записи алгоритмов:
-Словесный (на естественном языке)
-Блок-схема
-Псевдокод (система обозначений и правил)
-Язык программирования
Самый простой способ – словесный – это способ записи алгоритма на естественном языке, но с тщательно отработанным набором слов и фраз, не допускающий повторений, синонимов, двусмысленности, лишних слов. Допускается использование математических символов.
Блок-схемой называется наглядное графическое изображение алгоритма, когда отдельные его этапы изображаются при помощи различных геометрических фигур – блоков, а связи между этапами (последовательность выполнения этапов) указываются при помощи стрелок, соединяющих эти фигуры. Блоки сопровождаются надписями.
Правила составления схем алгоритма:
- Четко определить точку зрения, с которой будет рассмотрен процесс и исходные данные задачи.
- Создать пошаговую модель задачи – разбить задачу на шаги, каждый из которых будет отдельным блоком на схеме алгоритма.
- В блоках указать все формулы и исходные данные.
- Использовать при записи формул не конкретные числа, а переменные.
- Определить последовательность выполнения блоков.
- Обязательно указать линии потока.
- Выдержать размеры блоков и правила составления схем алгоритмов (ГОСТ 19.701-90). ГОСТ 19.701-90 (ИСО 5807-85) «Единая система программной документации.
В целом же решение любой задачи на ЭВМ состоит из следующих этапов:
- Постановка задачи и ее анализ
- Формализация задачи
- Построение алгоритма
- Составление программы на языке программирования
- Отладка и тестирование программы
- Проведение расчетов и анализ полученных результатов. [2, с.5-8]
На этапе постановки задачи следует четко определить, что дано и что требуется найти. Важно описать полный набор данных, необходимых для решения задачи.
На этапе формализации задача переводится с вербального (словесного) описания на какой-либо формализованный язык моделирования знаний о предметной области задачи (графических диаграмм, математических уравнений, логических отношений). Таким образом, формализация задачи заключается в построении некоторой модели реального объекта, процесса или явления, достаточно адекватно отражающей особенности предметной области.
Выбор технологии программирования предполагает принятие решения о том, какие стандарты, методы и средства (ресурсы) будут использованы на последующих этапах для достижения поставленной на первом этапе цели.
На этапе разработки алгоритма программисты проектируют программы на промежуточном наглядном языке, прибегая к каким-либо специальным средствам описания алгоритмов (диаграммы, схемы алгоритмов, псевдокоды).
На пятом этапе результаты четвертого этапа переводят (вручную или автоматизировано) на выбранный язык программирования и производят ее отладку. При этом программист добивается, чтобы программа работала правильно в соответствии с постановкой задачи.
Этап тестирования программы заключается в проведении серии экспериментов на специально подобранных наборах исходных данных (тестах) с целью выявления возможных сбоев (отказов) в работе программы (связанных, например, с неправильным вводом исходных данных, изменением параметров настроек компьютера и тому подобным).
Этап документирования программы предполагает подготовку комплекта документации, необходимой для ее последующей эксплуатации и модернизации (например, руководства пользователя и руководства программиста).
На последнем этапе разработанная программа уже используется для решения практических задач.
Таким образом, первые три этапа – это подготовительная работа. Последующие два этапа – это собственно алгоритмизация и программирование на определенном языке в выбранной системе программирования. Остальные этапы – завершающие технологический цикл обработки информации на компьютере.
Следует отметить, что в зависимости от ситуации один специалист (например, программист) может выполнять один, несколько или все этапы данного технологического цикла обработки информации на компьютере (выполнять одну или несколько функций – ролей).
Способ организации исполнения каждого этапа и взаимодействия этапов между собой называют моделью жизненного цикла (ЖЦ) разработки программного обеспечения (ПО). Более общая трактовка понятия ЖЦ ПО определяет его как период времени, который начинается с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации.
Таким образом, под моделью ЖЦ ПО понимается некоторая структура, определяющая последовательность выполнения и взаимосвязи процессов, действий и задач на протяжении ЖЦ. Модель ЖЦ зависит от специфики, масштаба, сложности проекта и специфики условий, в которых система создается и функционирует.
Наиболее часто используют классическую (каноническую) водопадную (waterfall) модель, спиральную модель и модель, основанную на использовании средств быстрой разработки приложений.
Первая из них предполагает тщательное планирование, скрупулезную реализацию и документирование результатов каждого этапа высококвалифицированными специалистами. При этом этапы выполняются последовательно, один за другим, и повторное выполнение какого-либо из предыдущих этапов не предполагается.
Вторая модель, наоборот, предполагает многократное (3, 4 раза) повторение всех этапов с постепенным повышением степени тщательности выполнения каждого из этапов. Это приводит к появлению нескольких (3, 4) версий программы, каждая последующая из которых является более функционально полной, отлаженной, протестированной и документированной, чем предыдущая. При этом на разных витках данной спирали и на разных ее этапах могут работать специалисты различной квалификации.
Третья модель предполагает использование таких средств автоматизации процессов алгоритмизации и программирования, которые могут позволить небольшой группе специалистов средней квалификации (или даже одному такому специалисту) быстро реализовать спиральную модель жизненного цикла разработки программного обеспечения и получить в результате вполне работоспособную программу. Однако, как правило, данная программа обладает низкими потребительскими качествами (неудобный интерфейс, низкое быстродействие, большой объем занимаемой памяти и т. п.).
Таким образом, разработчик программного обеспечения должен уметь проводить системный анализ предметной области для подготовки постановки задачи, обеспечивать формализацию задачи, выбор технологии программирования, разработку алгоритма, составление программы на выбранном языке программирования и ее отладку, тестирование программы, документирование программы и использование полученных результатов. Основой профессиональной грамотности программиста является развитое системное алгоритмическое мышление. [12, с.7-9]
Любой язык программирования образуют три составляющие части: алфавит, синтаксис и семантика.
Алфавит – фиксированный для данного языка набор основных символов, из которых должен состоять любой текст на этом языке. Никакие другие символы для записи текстов не допускаются.
Синтаксис – система правил, определяющих допустимые конструкции из букв алфавита. С помощью этих конструкций представляются отдельные компоненты алгоритма и алгоритм в целом, записанные на данном языке программирования.