Файл: Классификация языков программирования высокого уровня (Предпосылки развития современных средств программирования).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

Все языки программирования часто классифицируют по следующим поколениям [6]:

– первое поколение: применение на ЭВМ первого поколения с машинно–ориентированным использованием и ручным процессом управлением памятью;

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

– третье поколение: языки программирования высокого уровня общего типа и назначения, которые использовались в первую очередь для разработки и реализации пакетов прикладных программ в нужной предметной области (Паскаль, Бейсик, Си);

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

– пятое поколение: объектно–ориентированные, декларативные и визуальные высокоуровневые языки программирования. Данные языки применяются в настоящее время и используются для разработки клиент-серверных приложений, мобильных систем и распределенных веб-сайтов. Примерами таких языков являются Си++, Java, C#, Visual Basic, Delphi.

Обобщенная схема классификации программирования [18] приведена на рис.4.

Рисунок 4 – Схема классификации языков программирования

Выводы по главе 1

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

ГЛАВА 2. АНАЛИЗ ЯЗЫКОВ НАПИСАНИЯ ПРОГРАММНОГО КОДА

2.1. Особенности классификации высокоуровневых языков программирования

К высокоуровневым языкам программирования уровня исторически принято относить следующие.

1.Фортран, использовался преимущественно для написания программ, которые выполняли научные и математические расчеты.


2. Алгол – один из первых коммерческих языков программирования, применялся для решения различных экономических задач).

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

4. Си – язык разработки первых сетевых протоколов и операционных систем, популярных в ряде отраслей и в настоящее время.

5. Пролог – язык, используемый в области искусственного интеллекта, в силу поддержки гибкого аппарата математической логики и предикатов [5].

Согласно специфике использования высокоуровневых языков программирования используется три типа трансляторов [2]: 

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

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

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

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

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

Среди таких языков выделяют структурные и операционные языки. В структурных языках запись целых алгоритмических структур (ветвление, циклы и др.) выполняются одним оператором. В операционных языках для решения данной задачи применяется уже несколько операций. Исторически, структурными языками являются Паскаль, Ада, Си. Операционными являются Фортран, Фокал, Бейсик.

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

В логических языках программирования код программы не описывает никаких действий. Программа лишь задает данные и взаимосвязи (соотношения) между ними. Затем, поддерживается возможность задания системе различные вопросы. ЭВМ осуществляет перебор доступных и заданных в программе данные, после чего находит нужный ответ и выводит его. Таким образом, непосредственный порядок перебора команд не описывается явно в программе, а задается синтаксисом самого языка. Классическим языком такого типа программирования является Пролог [12].


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

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

В настоящее время наиболее востребованными языками программирования высокого уровня являются Java, C#, Python. Данные высокоуровневые языки программирования являлись машинно–независимыми, в силу их ориентации на систему операндов, которые являются характерными для формализации записей имплементированных алгоритмов [20]. Статистика по состоянию на январь 2017 года приведена на рис.5.

Рисунок 5 – Статистика популярности языков программирования высокого уровня

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

2.2.1. Язык программирования C#

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

  • язык создавался параллельно с технологией .Net, что позволило разработчикам интегрировать все необходимые механизмы обеспечение функциональных взаимосвязей фреймворка, в том числе FCL и CLR;
  • это полноценный объектно-ориентированным язык, причем даже примитивные типы данных языка представлены в качестве отдельных классов [4];
  • поддержка механизмов наследования, инкапсуляции и полиморфизма;
  • разработан на базе использования C и C ++, что позволило интегрировать наиболее функциональные возможности этих высокоуровневых языков программирования;
  • с помощью поддержки ряда фреймворков, выступающих в виде некой надстройки над операционной системой пользователя, разработчики C# могут использовать механизмы создания и работы с виртуальной машиной, аналогично существующим технологиям языка Java [10].

При этом существенно повышается эффективность и используемость программного кода.

Это связано с тем, что исполнительная среда CLR позволяет обеспечить работу компилятора промежуточного уровня, что является более эффективным по сравнению с интерпретатором байт-кода в Java Virtual Machine.

В настоящее время весьма популярен среди разработчиков программного обеспечения (ПО) набор продуктов компании Microsoft, включающих, в частности, интегрированную среду разработки (IDE) программ - Microsoft Visual Studio [2].

В настоящее время актуальной версией является Microsoft Visual Studio 2017.

Предлагаемые средства разработки ПО продукты позволяют оперативно и гибко разрабатывать различные типы приложений, в частности, согласно [10]:

  • консольные приложения;
  • приложения с графическим интерфейсом, на базе использования популярной среди разработчиков десктопных решений технологии Windows Forms;
  • веб-сайты, на базе использования ASP.net.

Состав проекта на языке C# в рамках фрейморка .NET приведена на рис. 6 [4].

Рисунок 6 - Структура проекта на языке C# в Visual Studio

IDE Visual Studio включает в себя гибкий и современный редактор исходного программного кода, интегрируя поддержку технологии IntelliSense, а также средства оперативного профилирования и рефакторинга кода. Имеющийся в среде разработки отладчик способен функционировать в качестве отладчика на уровне исходного программного кода, а также имеются возможности его использования в качестве отладчика на машинном уровне. К другим встроенным средствам и инструментам среды следует отнести интуитивно понятный редактор форм, который способствует ускорению процесса создания и конфигурирования компонентов графического интерфейса программного приложения, дизайнеры классов, объектов и схем баз данных [14].

IDE Visual Studio, также, позволяет разрабатывать и интегрировать в проект сторонние плагины и функциональные расширения, которые обеспечивают новые возможности разработки приложений на различных уровнях. В частности, широко используются плагины добавления функций использования современных систем контроля версий (Subversion, Git), интеграции новых пакетов инструментов для визуального редактирования проектирования кода на UML-языке, создания диаграмм сценариев использования, разработки алгоритмов.

2.2.2. Язык программирования Python


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

Все объекты в Python подразделяются на атомарные и ссылочные. К первым относятся int, long, complex. При присвоении подобного рода объектов происходит копирование их значений, а в ссылочных объектах осуществляется копирование лишь указателя на объект, поэтому обе переменные после выполнения операции присваивания используют одинаковое значение.

Python позволяет определять тип переменной на этапе исполнения программы. В связи с этим вместо присваивания переменной определенного значения более корректным является использование фразы «связывания определенного значения с конкретным именем» [8]. Структура проекта Python в среде разработки PyCharm приведена на рис.7.

Рисунок 7 – Пример структуры языка программирования Python [19]

В языке поддерживаются такие встроенные типы данных как: бинарный, строковый, Unicode, целочисленный с произвольно заданной степень точности, число с плавающей запятой, и ряд других. Из современных коллекций язык обладает поддержкой таких встроенных структур как: список, словарь, кортеж (модифицируемый список), множество и др. Следует отметить, что все значения, также как и в Ruby, являются объектами, причем это характерно и для функций, модулей, методов и классов [15].

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

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

Преимущества языка следующие.

1. Интерпретируемость и динамическая типизация. Это повышает общую скорость разработки кода и позволяет существенно упростить и облегчить отладку программ, однако при этом теряется скорость выполнения приложения.