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

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

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

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

Добавлен: 04.04.2023

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

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

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

Языки пятого поколения, теоретически, должны ещё больше упростить и ускорить работу программистов: целью этих языков является переложить значительную часть работы с человека на компьютер. Чаще всего сюда относят языки экспертных систем, баз знаний. В настоящее время, действительно, нет решений, которые могут выдавать полноценный продукт, получая при этом лишь задачу. Некоторые авторы говорят о системе MathCAD, она действительна заметно облегчает работу пользователей, беря на себя огромную долю вычислительной работы. Но всё же, на данный момент нет чёткого определения, по каким критериям определить языки пятого поколения. Одно ясно: с их использованием компьютер должен будет решить поставленную задачу без необходимости пользователю вручную реализовывать алгоритм.

Далее, рассмотрим классификацию языки программирования по функциональному признаку, или парадигме программирования. Парадигма – совокупность идей и понятий, определяющих подход к программированию. Большинство авторов даёт чёткое разделение языков программирования на процедурные (императивные) и непроцедурные (декларативные). Класс непроцедурных языков содержит в себе два подкласса: функциональные и логические языки. Часто отдельным классом выделяют объектно-ориентированные языки программирования, хотя они содержат элементы процедурного программирования. Остановимся на каждом классе поподробнее[16].

В процедурных языках программа явно описывает необходимые к выполнению действия, то есть она является чёткой последовательностью команд, которые необходимо выполнить компьютеру. Можно сказать, что, программируя на этих языках, программист говорит компьютеру, не что делать, а как. К этому классу можно отнести большинство языков программирования: Pascal, Basic, C и другие.

Непроцедурные языки можно запросто назвать противоположностью языкам процедурным. Декларативное программирование – парадигма программирования, в которой описывается, что необходимо сделать компьютеру. Хорошим примером служит язык разметки HTML, возьмём тег <img>: необходимо просто заключить в него ссылку на изображение, а каким образом оно отобразится на странице – это задача компьютера.

В функциональном программировании процесс вычисления можно описать как вычисление значений функций в математическом понимании. На практике, отличие математической функции от понятия «функция» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, таким образом, получая в разных местах программы разные выходные данные. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим один и тот же результат – выходные данные зависят только от входных. Это позволяет средам функционального программирования кэшировать результаты выполнения функций и вызывать их в нужный момент. Примерами можно привести LISP – первый функциональный язык, Haskell и другие.


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

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

2.2. Сравнительный анализ языков программирования

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

Однако, стоит заметить, что для разработки подобных систем необходимо знание нескольких языков программирования, которые в совокупности позволяют создавать именно то, что необходимо будущим пользователям. Поэтому проблема выбора языка программирования и среды разработки является актуальной, так как именно от этого зависит будущий функционал разработанного программного продукта, его работоспособность и эффективность в целом. Необходимо отметить, что существует огромное количество различных языков программирования, таких как: Java, C, C++, Python, C#, JavaScript, Visual Basic.NET, Ruby, PHP, Perl и т.д. Это далеко не весь перечень языков, которые могут использоваться для разработки интернет-приложений. По данным исследования TIOBE Index for November 2018 они считаются наиболее востребованными.

Рейтинг языков программирования на 2018 год представлена на рисунке 3[17].

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


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

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

В таблице 1 представлена сравнительная характеристика рассматриваемых языков программирования, применяемых для разработки различных приложений[18].

Таблица 1

Сравнение языков программирования

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

Си (англ. С) – структурированный язык программирования, который позволяет разрабатывать эффективные и быстродействующие программные продукты. Относительно небольшой компактный язык, он не требует много места для своего описания и может быть быстро выучен. Язык Си соответствует возможностям многих ЭВМ и не зависит от какой- либо конкретной архитектуры машины и в силу этого без особых усилий позволяет писать программы, которые легко переносятся на различные аппаратные средства.


С++ – совместимая и расширенная версия языка Си, которая позволяет реализовать сложные программы по принципу объектно-ориентированного программирования. Однако, языки из семейства Си неэффективно применять, когда результат нужно получить за минимальное количество времени, так как в данном случае использование процедурного подхода является нецелесообразным.

С# – еще один объектно-ориентированный язык с синтаксисом языка Си. Позволяет разрабатывать простые приложения и программы, которые выполняются в среде .NET Framework. C# в отличие от C++ и некоторых других языков, не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).

JavaScript – универсальный динамический язык, который применяется к HTML документу, и может обеспечить динамическую интерактивность на веб-сайтах, в основном используется в веб-разработке. Очень гибкий и компактный. Схож с Java и Cи, обладает широким функционалом и простой в изучении.

Visual Basic.NET – гибкий объектно-ориентированный язык программирования, позволяющий разрабатывать крупные приложения. Поддерживает ряд языков VB.NET, C#, C++ и является кроссплатформенным. Позволяет разработчикам создавать приложения Windows, веб-приложения и приложения для мобильных устройств. Программы, написанные на языке Visual Basic, как и на других языках, предназначенных для платформы Microsoft .NET Framework. Ruby – динамический язык с простым синтаксисом, который был создан из других языков и объединил функциональную и императивную парадигму программирования. Является достаточно сложным языком в изучении, несмотря на то, что обладает простым синтаксисом. Схож с Java и Python. Есть возможность написания расширений на Си, что значительней проще чем в Perl или Python. Отличается высокой скоростью разработки.

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

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


Python – язык общего назначения, который можно применять для разработки любого программного обеспечения в различных сферах деятельности. Он обладает развитой системой модулей и легко интегрируется с уже имеющимися компонентами. Синтаксис данного языка во многом схож с синтаксисом С++, но он отличается тем, что обладает более широким спектром возможностей. А если сравнивать его с Java, то веб-приложения, разработанные на Python будет работать медленнее, так как его производительность значительно ниже.

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

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

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

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

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