Файл: Классификация языков программирования высокого уровня.pdf
Добавлен: 06.04.2023
Просмотров: 100
Скачиваний: 1
ВВЕДЕНИЕ
Сегодня термин «информатика» принято употреблять в двух смыслах:
- отдельное научное направление, изучающее информацию и информационные процессы, реализующее разработку и создание новых средств для работы с информацией;
- практическая область деятельности людей, непосредственно связанная с использованием компьютеров при обработке информации[1].
Одним из направлений информатики как науки является программирование – наука, которая изучает теорию и методы разработки, производства и эксплуатации программного обеспечения ЭВМ[2].
Грамотное написание компьютерных программ подразумевает не только хорошее знание различных языков и средств разработки, но и достаточно развитое алгоритмическое мышление. На протяжении последних десятилетий сложилась специальная практика обучения программированию. Согласно этой практике основной причиной неудач в процессе обучения является именно недостаток алгоритмического мышления.
Алгоритмическим мышлением называется умение выстраивать логически безупречную последовательность действий для получения решения поставленной задачи. Многолетний опыт показывает, что для развития алгоритмического мышления в первую очередь требуется тщательно прорабатывать алгоритмы для небольших, но полезных программ, которые формируют базовые приемы программирования. Таких приемов достаточно немного, однако их обобщение, накопление, и умение осознанно применять при решении практических задач дает возможность научиться писать программы практически любому человеку[3].
Все вышесказанное объясняет актуальность выбранной темы – разработка программного обеспечения для различных устройств сегодня является одним из основных направлений в области информатики. Однако, не зная базовых основ алгоритмов, очень сложно преуспеть в этом деле и быть хорошим специалистом в сфере программирования.
Предмет исследования данной работы - программирование.
Объект исследования – основные языки программирования.
Целью работы является описание структур алгоритмов, а также их сравнение.
Для достижения поставленной цели предстоит решить ряд задач:
- проанализировать литературу по заданной теме;
- дать определения основным терминам;
- привести классификацию языков программирования.
В качестве опорных источников при написании работы были использованы следующие: А.Ф. Новиков – «Учебно-методическое пособие по дисциплине «Технологические подходы к разработке программного обеспечения»» и В.В. Мухортов – «Объектно-ориентированное программирование, анализ и дизайн»
1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ
На протяжении всего развития языков программирования четко выделяется ряд тенденций, постоянно сменяющих друг друга и оказывающих влияние на технологии:
- смещение акцентов от частного к общему – переход от программирования мелких деталей к программированию более крупных компонентов;
- совершенствование и развитие прикладного инструментария программиста – создание новых методологий, языков программирования и рабочей среды;
- увеличение объема и сложности информационных и программных систем[4].
Именно расширение области использования вычислительной техники и информационных технологий является основной движущей силой прогресса в сфере программирования. На протяжении всей истории развития информационных технологий проводилось огромное множество прикладных исследований по методологии проектирования, декомпозиции, абстрагированию и иерархиям. Результатом данных исследований стало создание новых, более выразительных языков программирования[5].
Обычно под программированием понимается процесс разработки программ. Однако к этому же термину относятся и некоторые виды человеческой деятельности. Например, «политическое программирование» – термин, который часто используется в средствах массовой информации, или «математическое программирование» – специальный раздел математики. Применимо к созданию программ обычно используется выражение «разработка программного обеспечения»[6].
Таким образом, программированием (computer programming) называется процесс создания человеком-программистом информационной структуры - программы, целью которой является исполнение на компьютере.
В большинстве случаев в программировании важным является не только факт исполнения программы компьютером, но и факт использования полученного результата человеком. Однако, бываете и ряд исключений, примером которого является программа первоначальной загрузки операционной системы.
Таким образом, в процессе программирования выделяются следующие элементы:
- цель – выполнение программы, которое приводит к решению поставленной задачи или публикация ее текста;
- субъект – человек, осознанно ведущий процесс программирования, или другая программа (в случае автоматического синтеза программы, при этом процесс не является осознанным, а программа может быть выражена на языке нейрокомпьютера или не иметь материального носителя);
- объект – текст, записанный на формальном языке[7].
Сегодня результативность и эффективность программирования в целом оставляет желать лучшего. Несмотря на массовое распространение компьютеров и быстрый рост характеристик их программного и аппаратного обеспечения, весьма значительной остается доля неудачных проектов, целью которых является разработка программного обеспечения. Наряду с эффектными достижениями имеются и сравнительно многочисленные досадные неудачи. К сожалению, до сих пор слишком часто приходится делать вывод, что программирование рискованно, программы ненадежны, а программисты неуправляемы[8].
Нельзя отрицать существование проблем в области программирования. Лучшие программисты, ведущие предприятия и компьютерное сообщество в целом постоянно тратят значительные и все возрастающие усилия на решение этих проблем. Результатом этой деятельности стало создание нескольких специализированных отраслей науки. Дисциплина, главной задачей которой является решение внутренних проблем программирования, называется технологией программирования, или инженерии программных систем. Последний термин является точным переводом английского термина «software engineering».
Технология программирование (software engineering) представляет собой совокупность средств и методов, которая позволяет налаживать производственный процесс создания программного обеспечения[9].
Ключевым словом в данном определении является «производственный», так как оно отражает главную особенность технологии программирования. Например, с точки зрения информатики (computer science), указание на производственный характер дисциплины отсутствует.
Информатикой называется дисциплина, предметом изучения которой являются общие свойства информации, а также вопросы, связанные с ее накоплением, хранением и обработкой[10].
Информатика тесно связана с программированием за счет того, что в современном мире функции накопления, хранения и обработки информации реализуются при помощи программного обеспечения компьютеров.
Соотношение информатики и технологии программирования является сложным вопросом. Информатика представляет собой более общее понятие, однако нельзя считать технологию программирования отдельной частью информатики. В настоящее время вопросы теоретического характера относят к информатике, а практические приемы решения задач считаются элементами технологии программирования. Например, методы математического доказательства правильности программ относятся к теоретической информатике, а методы тестирования – к технологии программирования, хотя это совершенно разные методы решения одной задачи. Важно отметить, что такое отделение технологии программирования от информатики является условным[11].
1.1. Первое поколение
Первые языки программирования были очень сложны. Схема их развития отражена в таблице 1. Из данной таблицы видно, что большинство идей, являющихся основой современных языков программирования, зародились в том или ином виде уже к 1970 году. Дальнейшие языки чаще всего являются потомками или результатом обобщения и развития указанных. Данный факт объясняется широким распространением мини- и микро-ЭВМ, а также ростом количества разработчиков ПО[12].
Первые языки программирования зародились во времена существования цифровых ЭВМ, представляющих собой огромные машины с очень низкой скоростью выполнения задач. Они нашли свое применение исключительно в статистических и математических расчетах[13].
К характерным чертах этих машин относятся:
- малое количество оперативной памяти;
- несовершенство системы ввода-вывода данных.
Таблица 1 – Первые языки программирования
Поколение |
Язык |
Характеристики |
Первое (1954-1958) |
FORTRAN I |
Математические формулы |
ALGOL-58 |
||
Flowmatic |
||
IPL V |
||
Второе (1959-1961) |
FORTRAN II |
Подпрограммы, раздельная компиляция |
ALGOL-60 |
Блочные структуры, типы данных |
|
COBOL |
Описание данных, работа с файлами |
|
Lisp |
Обработка списков, указатели, сборка мусора |
|
Третье (1962-1970) |
PL/1 |
FORTRAN+ALGOL+COBOL |
ALGOL-68 |
Более простые преемники ALGOL-60 |
|
Pascal |
||
Simula |
Классы, абстрактные данные |
Эти ограничения и высокая стоимость машин позволяли работать на них только высококвалифицированным специалистам, которые были способны создавать программы на уровне двоичных кодов. Для облегчения процесса программирования вскоре были созданы языки первого поколения. Их задачей было приблизить программирование к предметной области, отдаляя тем самым от конкретной ЭВМ. Словарь таких языков по большей части состоял из математических функций. Топология языков первого и второго поколений представлена на рисунке 1[14].
Рисунок 1 – Топология языков программирования первого и начала второго поколений
1.2. Второе поколение
Программы, написанные на языках второго поколения, обладали относительно простой структурой, состоящей из подпрограмм и данных, хранящихся в глобальной области видимости. Механизмы языков того времени не были способны поддерживать разделение данных разного типа, что вносило свои сложности в процесс разработки больших программ. Главной проблемой был факт того, что случайная ошибка или какие-либо незначительные изменения в тексте одной подпрограмме могли иметь губительные последствия для всей программной системы[15].
Создание подпрограмм позволило облегчить процесс разработки. Подпрограммы представляли собой минимальные единицы, ставшие основой для создания первых библиотек. С точки зрения абстрагирования, создание подпрограмм, привело к ряду очень важных последствий:
- разработаны различные виды механизмов передачи параметров между программой и подпрограммой;
- заложены основания структурного программирования, что нашло отражение в появлении языковой поддержки механизмов вложенности подпрограмм и научной разработке структур управления и областей видимости;
- появились методы структурного проектирования, базой которых является использование процедур или подпрограмм в качестве отдельных элементарных блоков.
Топология языков конца второго и начала третьего поколений, поддерживающих использование подпрограмм, представлена на рисунке 2[16].
Рисунок 2 – Топология языков программирования конца второго и начала третьего поколений
1.3. Третье поколение
Увеличение объемов программных проектов способствовало не только увеличению количества разработчиков, участвующих в процессе, но и появлению особых механизмов, позволяющих этим людям одновременно работать над различными частями проекта – модулями.
Модуль представляет собой самостоятельную отдельно компилируемую программную единицу, состоящую из наборов данных и подпрограмм.
Чаще всего модули содержат подпрограммы, которые должны разрабатываться, изменяться и использоваться исключительно совместно. Сюда же относятся и данные, используемые этими подпрограммами. Развитие модулей вывело их на новый уровень абстракции программных систем[17].