Файл: Классификация языков программирования высокого уровня (Понятие о языках программирования ).pdf
Добавлен: 24.04.2023
Просмотров: 301
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Теоретические основы языков программирования
1.1. Понятие о языках программирования
1.2. Классификация языков программирования
Глава 2. Анализ языков программирования высокого уровня
2.1. Обзор языков программирования высокого уровня
2.2. Практический пример языка высокого уровня на примере Java
Глава 3. Тенденции развития современных языков программирования высокого уровня
Высшим же уровнем будут считаться машинно-независимые языки. Они разработаны для удобства восприятия, быстроты понимания и работы с ними. Характерная черта этих языков программирования – абстракция, то есть введение смысловых конструкций, кратко описывающих данные и операции над ними, описания которых в машинно-ориентированных языках очень длинны и сложны для понимания.
Также они были призваны обеспечить платформенную независимость сути алгоритмов. С их появлением зависимость от платформы перекладывается на трансляторы, «переводящие» текст, написанный на языке высокого уровня, в элементарные машинные команды. Примерами языков программирования высокого уровня являются C++, C#, PHP, Perl, Java и многие другие.
В современной классификации языков программирования по уровням всё чаще используют деление на два уровня: языки высокого и низкого уровней. Языками низкого уровня считаются языки, близкие к машинному коду и ориентированные на конкретные команды процессора, то есть машинно-ориентированные языки, а языками высокого уровня в современной классификации считаются машинно-независимые языки, разработанные для удобства использования[7].
Таким образом, на данный момент авторы чаще не учитывают машинный код в своих классификациях. Это может быть связано с тем, что в настоящее время машинный код может понадобиться специалистам узкого профиля, например, системного программирования, защиты информации или программирования устройств напрямую. Прикладному же программисту иметь представление о машинном коде может быть необходимо для понимания того, как его программа хранится и выполняется, и в некоторых случаях для отладки и оптимизации своих программ.
Также есть классификация по уровню абстракции. Некоторые языки опираются непосредственно на ниже лежащий машинный уровень. Другие предпочитают использовать абстрактную модель вычислений. Делятся на языки низкого (машинно-ориентированные языки), высокого и сверхвысокого уровней (рисунок 2).
Рисунок 2. Классификация языков программирования по уровню абстракции
Следующая классификация, которую необходимо рассмотреть, — классификация языков программирования по поколениям. Общепринято делить языки на пять поколений, но разные авторы опять же по-своему разделяют поколения[8]. Некоторые варианты классификации перекликаются с классификацией по уровням, некоторые указывают, что языков программирования пятого поколения пока не существует.
Подавляющее большинство авторов называет языками программирования первого поколения машинные коды, то есть языки низкого уровня, языками второго поколения – языки ассемблера, уже рассмотренные нами, и, соответственно, языками третьего поколения – языки высокого уровня.
Эта классификация по эволюционному признаку вполне логична: понятно, что языки низкого уровня появлялись на заре программирования, а языки среднего и высокого уровней разрабатывались и улучшались в связи с растущими возможностями компьютерных технологий.
А вот с классификацией языков четвёртого и пятого поколений ситуация не так проста. К языкам программирования четвёртого поколения чаще всего относят языки объектно-ориентированные, декларативные (непроцедурные) и визуальные. Но эти языки с уверенностью можно отнести и к языкам третьего поколения. Также очень часто сюда относят языки запросов, например, SQL, который, по своей сути, вовсе не является языком программирования. Вообще, часто можно прочитать о том, что языки программирования четвёртого поколения – это языки, встроенные в определённую программную оболочку и используемые для узкоспециализированных задач, например, для создания баз данных и управления ими (встроенные языки систем управления базами данных). Получается, вернее всего сказать, что языки программирования четвёртого поколения – логичное развитие языков третьего поколения, упрощающее работу программистов ввиду того, что в основе своей эти языки встроены в собственную программную оболочку с функциями, помогающими разработчикам. Также к языкам четвёртого поколения нужно отнести языки параллельного программирования, ориентированные на создание программных средств многопроцессорной архитектуры[9].
Языки пятого поколения, теоретически, должны ещё больше упростить и ускорить работу программистов: целью этих языков является переложить значительную часть работы с человека на компьютер. Чаще всего сюда относят языки экспертных систем, баз знаний. В настоящее время, действительно, нет решений, которые могут выдавать полноценный продукт, получая при этом лишь задачу. Некоторые авторы говорят о системе MathCAD, она действительна заметно облегчает работу пользователей, беря на себя огромную долю вычислительной работы. Но всё же, на данный момент нет чёткого определения, по каким критериям определить языки пятого поколения. Одно ясно: с их использованием компьютер должен будет решить поставленную задачу без необходимости пользователю вручную реализовывать алгоритм.
Далее, рассмотрим классификацию языки программирования по функциональному признаку, или парадигме программирования. Парадигма – совокупность идей и понятий, определяющих подход к программированию. Большинство авторов даёт чёткое разделение языков программирования на процедурные (императивные) и непроцедурные (декларативные). Класс непроцедурных языков содержит в себе два подкласса: функциональные и логические языки. Часто отдельным классом выделяют объектно-ориентированные языки программирования, хотя они содержат элементы процедурного программирования. Остановимся на каждом классе поподробнее[10].
В процедурных языках программа явно описывает необходимые к выполнению действия, то есть она является чёткой последовательностью команд, которые необходимо выполнить компьютеру. Можно сказать, что, программируя на этих языках, программист говорит компьютеру, не что делать, а как. К этому классу можно отнести большинство языков программирования: Pascal, Basic, C и другие.
Непроцедурные языки можно запросто назвать противоположностью языкам процедурным. Декларативное программирование – парадигма программирования, в которой описывается, что необходимо сделать компьютеру. Хорошим примером служит язык разметки HTML, возьмём тег <img>: необходимо просто заключить в него ссылку на изображение, а каким образом оно отобразится на странице – это задача компьютера.
В функциональном программировании процесс вычисления можно описать как вычисление значений функций в математическом понимании. На практике, отличие математической функции от понятия «функция» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, таким образом, получая в разных местах программы разные выходные данные. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим один и тот же результат – выходные данные зависят только от входных. Это позволяет средам функционального программирования кэшировать результаты выполнения функций и вызывать их в нужный момент. Примерами можно привести LISP – первый функциональный язык, Haskell и другие.
В программах, написанных на языках логического программирования, вообще не описывается действий. Программист задаёт данные и отношения между ними, после этого программе можно задать вопрос, компьютер перебирает заданные данные и находит ответ. Классический пример языка логического программирования – Prolog.
В языках объектно-ориентированного программирования переменные и функции группируются в классы, благодаря чему достигается высокий уровень структуризации программы. Объекты, порождённые от классов, вызывают методы (функции) друг друга и, таким образом, меняют состояние свойств (переменных). С формальной стороны объектно-ориентированное программирование базируется на процедурной модели, но с содержательной – оно базируется не на функции, а на объекте, как на целостной системе.
Глава 2. Анализ языков программирования высокого уровня
2.1. Обзор языков программирования высокого уровня
Основой нашего анализа является статистика с ресурса Stackoverflow. Каждый год они подготавливают отчет о самых популярных языках программирования. В опросе участвуют более 50, 000 разработчиков со всего мира. Чтобы проследить динамику, мы собрали данные за 2017, 2016 год и использовали данные с Google Trends.
Рисунок 3.Популярность языков в 2016 и 2017 году
Рассмотрим основные из них.
Javascript. Это один из самых популярных языков программирования. Он находится на первом место уже несколько лет подряд. По динамике видно, что этот тренд будет сохранится и дальше. Это самый кроссплатформенный язык программирования, который позволяет разрабатывать desktop, веб и мобильные приложения. Javascript имеет много удобных и гибких библиотек. Среди самых популярных стоит отметить React.js. Angular.js и Vue.js. Последняя библиотеке только набирает популярность. Vue имеет хорошую производительность и одна из самых легких для изучения. Тем не менее, ей будет тяжело выйти на столько высокий уровень популярности как другие библиотеки. Рынок уже поделен между React и Angular.
Библиотека React была разработана компанией Facebook. Она является одной из самых популярных на основе javascript. React позволяет разрабатывать мобильные приложения, сайты и SPA (single page application). React существенно легче в изучении по сравнению с Angular 2. Angular разработан компанией Google и в последнее время терпит много трансформаций. Сначала все использовал Angular 1, несколько лет назад вышел Angular 2, который более производительней, удобней и быстрее. Сейчас Google разрабатывает Angular 4. Он должен заменить Angular 2 и стать лидером среди javascript библиотек. Посмотрим, что с этого выйдет. В целом, Angular сложный для новичков и хорошо подходи для разработки веб приложения для крупных компаний.
Кроме приведенных выше библиотек очень популярный node.js. Он позволяет разрабатывать серверную часть на Javascript. Это лучшее решение если вы хотите разработать back-end часть с использованием js. Как видите, javascript универсальный язык программирования. Имеет хорошую гибкость и производительность. Именно это и делает его одним из самых популярных в нашем списке.
SQL. Это язык программирования используется для управления данными в реляционной базе данных. Знания SQL является обязательным для проектирования баз данных, который используются большинством веб сайтов. Хотите или нет, но вам нужно знать основы SQL.
Java. Java очень популярный в финансовой и банковской индустрии. В первую очередь благодаря своей скорости работы и уровня безопасности. Java разработчики очень ценятся на рынке труда из-за дефицита. Этот язык программирования достаточно сложный для изучения и для новичков не всегда дается легко. Кроме всего прочего, приложения Android разрабатываются именно на Java. Это основная причина столь значительной популярности этого языка. По статистике Google Trends, динамика идет вниз.
C#. Один из самых продвинутых и удобных языков программирования. Он является основным языком разработки для платформы Microsoft .NET. C# очень похож на Java, но все же имеет ряд своих преимуществ. Стоит отдельно отметить, что C# сложнее в изучении чем Java. Это не самое лучшее решения для новичков.
Python. До недавнего времени PHP был более популярный чем Python, но сейчас можно уверено сказать, что Python завоевывает доверие молодых разработчиков. Он имеет огромное количество преимуществ. В первую очередь, он лаконичный и понятный. Таким образом, Python – это отличный старт для начинающих разработчиков. Удобная структура кода позволяет легко разрабатывать проект и в дальнейшем поддерживать их. Для бизнеса это означает сокращение расходов. Питон это один из немногих серверных языков, который показывает динамику роста.
PHP Самый используемый язык программирования для серверной части. Согласно статистике, PHP используют около 240 миллионов вебсайтов. PHP имеет хорошую гибкость и производительность. Его можно использовать для небольших бизнес сайтов, а также для крупных проектов с высокой нагрузкой. Существует множество фреймворков разработанных на PHP. Они имеют хорошую скорость и высокий уровень безопасности. Наша компания, Merehad, отдает предпочтение именно этому языку программирования. В своей работе мы используем Laravel фреймворк для разработки крупных веб приложений. Основными недостатками является, отсутствие возможности разрабатывать десктопные приложения и серверные компоненты. Как и большинство серверных языков программирования он теряет свою популярность.