Файл: Обзор языков программирования высокого уровня (ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf

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

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

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

Добавлен: 24.04.2023

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

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

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

Абстракции.

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

Выразительная сила.

Теория вычисления классифицирует языки по вычислениям они способны выразить. Все полные языки Тюринга могут реализовывать один и тот же набор алгоритмов. ANSI / ISO SQL-92 и Charity являются примерами языков, которые не являются Тьюринговыми, но все же часто называются языками программирования.

Языки разметки, такие как XML, HTML или troff, которые определяют структурированные данные, обычно не рассматриваются как языки программирования. Языки программирования могут, однако, делиться синтаксисом с языками разметки, если определена вычислительная семантика. XSLT, например, является полным языком Тюринга, полностью использующим синтаксис XML. Кроме того, LaTeX, который в основном используется для структурирования документов, также содержит полное подмножество Тьюринга.

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

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


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

Синтаксис.

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

Семантика. Различают статическую и динамическую семантику.

Статическая семантика. Статическая семантика определяет ограничения на структуру допустимых текстов, которые трудно или невозможно выразить в стандартных синтаксических формализмах. Для скомпилированных языков статическая семантика по существу включает те семантические правила, которые можно проверить во время компиляции. Примеры включают проверку того, что каждый идентификатор объявлен до его использования (на языках, требующих таких объявлений) или что метки на объятиях case-отчета различны.Многие важные ограничения этого типа, такие как проверка того, что идентификаторы используются в соответствующем контексте (например, не добавление целого числа к имени функции), или что вызовы подпрограмм имеют соответствующее количество и тип аргументов, могут быть принудительно определены путем определения их как правила в логике, называемой системой типов. Другие формы статического анализа, такие как анализ потока данных, также могут быть частью статической семантики. Новые языки программирования, такие как Java и C #, имеют определенный анализ присваивания, форму анализа потока данных, как часть их статической семантики.

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


1.3. Классификация

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

Описание языка программирования обычно разделяется на две составляющие синтаксиса (формы) и семантики (значение) [4]. Некоторые языки определяются спецификационным документом (например, язык программирования C задается стандартом ISO), тогда как другие языки (такие как Perl) имеют доминирующую реализацию, которая рассматривается как ссылка. Некоторые языки имеют оба языка, причем основной язык, определенный стандартом, и расширения, взятые из доминирующей реализации, являются общими.

Языки программирования можно разделить на разные группы в соответствии с языковой парадигмой и моделью программирования [5, 19]:

парадигмы

  • процедурный язык программирования
  • объектно-ориентированный язык программирования
  • функциональный язык программирования
  • логический язык программирования

модель программирования:

  • последовательная
  • параллельная

Языки программирования могут принимать несколько парадигм, то есть они являются мультипарадигмами. Например, C ++ - это язык с несколькими парадигмами.

Современное состояние языков программирования можно пред­ставить в виде следующей классификации (рис. 1) [4].

Рисунок 1. Классификация языков программирования

Процедурное программирование.

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

Функциональное программирование.

Основное понятие в функциональных языках является выражение. Выражения содержат константы, структуры объектов, функций, их тела и вызовы функций.


Логическое программирование.

Язык Prolog для Искусственного Интеллекта (PROLOG, ProgramminginLOGic - с точки зрения программной логики). Основная идея в программировании - логика отношений. Программа представляет собой совокупность определений отношений между объектами и цели.

Объектно-ориентированное программирование (ООП).

Пионером этого направления был язык Smalltalk, первоначально предназначенного для выполнения функций и графики на компьютере. Все что входит в Smalltalk - это объекты, и объекты общаются друг с другом исключительно с помощью сообщений. Его суть выражается формулой "объект = данные + процедуры".

Языки программирования для компьютерных сетей

С появлением и активным развитием компьютерных сетей, стало источником многочисленных версий популярных языков программирования, адаптированных для использования в сети[10, 19].

HTML (Hyper Text Markup Language) - язык разметки гипертекста используется для подготовки веб-документов в сети Интернет. Язык-это набор форматированного текста с добавлением графических объектов, спецификации шрифтов и цветов, организации ссылок и таблиц [2].

Perl. В 80-х Ларри Уолл разработал язык Perl, который был разработан, чтобы эффективно обрабатывать большие текстовые файлы, создавать текстовые отчеты и управлять задачами [16]. Включает в себя множество функций для работы со строками, массивами, все возможные средства преобразования данных, управления процессами, работы с системной информации, и др.

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

Развитие языков программирования шло в направление поддержки различных парадигм программирования. Сейчас большинство используемых языков поддерживают объектно-ориентированное программирование (ООП).

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

2.1. ТОП 10 языков программирования в 2018 году

Сначала рассмотрим вопрос о том, как производится измерение популярности языка программирования [1, 17].

Трудно определить, какие языки программирования наиболее широко используются, а какие способы использования варьируются в зависимости от контекста. Один язык может занимать большее количество часов программиста, другой - больше строк кода, а третий может потреблять наибольшее время процессора. Некоторые языки очень популярны для конкретных видов приложений. Например, COBOL по-прежнему силен в корпоративном центре обработки данных, часто на больших мэйнфреймах; Фортран в научных и технических приложениях; Ada в аэрокосмической, транспортной, военной, в реальном времени и встраиваемых приложениях; и C во встроенных приложениях и операционных системах. Другие языки регулярно используются для написания много разных приложений.


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

Опубликованы несколько индексов:

Ежемесячный индекс сообщества TIOBE Community Community был опубликован с 2001 года и наглядно отображает популярность 10 лучших языков, 20 лучших языков с рейтингом и дельтами, а также рейтинг топ-50 языков. Цифры основаны на поиске в Интернете определенных фраз, которые включают имена языков и подсчет числа возвращенных обращений.

PYPL Известность языка программирования является показатель, основанный на Google Trends, отражая поиски разработчиков на „<язык программирования> учебник“, вместо того, что страницы доступны. Он показывает тенденции популярности с 2004 года, во всем мире или разделен для 5 стран.

RedMonk Язык программирования Рейтинг получены из соотношения программирования тяги на GitHub (использование) и переполнение стека (обсуждение).

The Trendy Skills ищет и извлекает из популярных рекламных сайтов навыки и технологии, которые ищут работодатели, и классифицирует навыки, которые ищут в категориях, одна из которых - категория «Языки программирования». Это позволяет пользователю видеть тренды для одного или нескольких навыков или категорий в определенные временные диапазоны. Данные также доступны через общедоступный API , поэтому каждый может создавать свою собственную статистику.

Результаты показывают, что среди объявлений о вакансиях Java более популярен, чем другие комбинированные языки. Результаты опроса разработчиков в 2016 году Stack Overflow . Согласно опросу, JavaScript используется 85% разработчиков.

Krihelinator.xyz оценивает языки программирования на основе их ставки вклада github в соответствии с этой формулой.

Рейтинг IEEE Spectrum 2016 лучших языков программирования «синтезирует 12 показателей из 10 источников, чтобы получить общий рейтинг популярности языка». Различные показатели были собраны из GitHub , Google Search и Trends , Twitter , Stack Overflow , Reddit , Hacker News , Career Builder , Dice.com и IEEE Xplore Digital Library. Приложение интерактивного ранжирования позволяет регулировать вес каждого метрика, а также фильтровать языки по типу (Web, Mobile, Enterprise, Embedded).

Сочетание и усреднение информации с различных интернет-сайтов, stackify.com сообщило о десяти самых популярных языках программирования как (в порядке убывания по общей популярности): Java , C , C ++ , Python , C # , JavaScript , VB .NET , R , PHP и MATLAB.