Файл: «Современные языки программирования»(Введение в языки программирования ).pdf

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

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

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

Добавлен: 13.03.2024

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

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

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

Содержание

Введение

Глава 1. Введение в языки программирования 

1.1 Что такое язык программирования 4

1.2 Классификация 5

1.2.1 Низкий и высокий уровни 5

1.2.2 Компиляторы и интерпретаторы 6

1.2.3 Зависимость и независимость кода 7

1.3 Парадигмы программирования 8

1.3.1 Императивная парадигма 9

1.3.2 Декларативная парадигма 9

1.3.3 Фундаментальная парадигма 9

1.3.4 Объектно-ориентированная парадигма 10

1.4 Краткий обзор популярных языков современного программирования 12

1.4.1 Язык программирования C 12

1.4.2 Язык программирования C++ 14

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

1.4.4 Язык программирования Java 17

1.4.5 Язык программирования Python 18

1.4.6 Язык программирования PHP 19

1.4.7 Язык программирования JavaScript 20

1.4.8 Язык программирования R 21

Глава 2. Анализ инструментов разработки 23

2.1 Рынок востребованности языков 23

2.1.1 RedMonk 23

2.1.2 IEEE Spectrum 25

2.1.3 TIOBE 26

2.2 Языки программирования и технологии 27

2.2.1 Чат-боты 27

2.2.2 Машинное обучение 28

Заключение

33

Список использованной литературы 35

Введение

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


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

Глава 1. Введение в языки программирования

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

1.1 Что такое язык программирования

Язык программирования – формализованный язык для описания алгоритма решения задач на компьютере.[1] В него включается набор лексический, синтаксических и семантических правил, определяющие внешний вид программы и действия, которые необходимо выполнить компьютеру или любому другому логическому устройству под её управлением.

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


Обычно, язык программирования обуславливается не только через спецификации стандарта языка, характеризующие его синтаксис и семантику, но и посредством воплощения (реализации) стандарта – программные ресурсы, обеспечивающие трансляцию или интерпретацию программ на этом языке; к примеру, программные средства, различающиеся согласно производителю, марке и версии, периода выпуска, изобилием реализации стандарта, дополнительным способностям.

Кроме этого языки программирования делятся по классификациям: низкого и высокого уровня, безопасные и небезопасные, компилируемые и интерпретируемые.

1.2 Классификация

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

1.2.1 Низкий и высокий уровни

У языков программирования существуют два уровня, такие как низкий и высокий. К языкам низкого уровня относятся машинные языки (computer language) – они являются воспринимаемыми аппаратной частью компьютера (машинные коды)[2], их причисляют к первому поколению. После чего на замену подошли машинно-ориентированные языки, отображающие структуру определенного типа компьютера, т.е. процесс разработки ведется только под определенной архитектурой. Примером таковым является язык ассемблера. Название ассемблер (assembler – сборщик) происходит от основной функции этих программ – собирать машинные команды, переводя мнемонические имена операций и идентификаторы операндов в коды команд и коды операндов (это могут быть адреса и/или непосредственные операнды).[3]

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

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


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

1.2.2 Компиляторы и интерпретаторы

После определения набора примитивов была написана программа, преобразующая программу, записанную с помощью этих примитивов, в программу на машинном языке. Такая программа называется транслятором (translator).[4] Трансляторы были схожи с ассемблерами второго поколения, но в отличие от них они объединяли несколько машинных команд в небольшие последовательности для имитирования действий, которые выражались примитивом высокого уровня. Обычно такие транслирующие программы называются компиляторами.

Альтернативой трансляторам являются интерпретирующие программы или интерпретаторы (interpreters), возникшие как другой способ выполнения программ, написанных на языках третьего поколения.[5] Они довольно схожи с трансляторами, хотя и не без различий: выполнение происходит по мере исполнения кода построчно и не записывают в какой-либо объектный файл. Получается, что работа интерпретатора заключается в выполнении команды в момент её последовательного получения без создания копии программы на машинном языке для её запуска в будущем.

1.2.3 Зависимость и независимость кода

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

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


Еще больше усложняет проблему переносимости (portability) отсутствие единого мнения о том, какие структуры должны входить в конкретный язык. Чтобы преодолеть эту трудность, Национальный институт стандартизации США (ANSI ‑ American National Standards Institute) и Международная организация по стандартизации (ISO ‑ International Organization for Standardization) приняли и опубликовали стандарты для многих распространенных языков программирования.[6] Но и при строгой стандартизации языков разработчики компиляторов часто снабжают их расширениями языка, которые не входят в стандартную версию. Если программист будет использовать эти расширения, получившаяся программа может быть несовместима со средой, использующей компилятор другого производителя.

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

1.3 Парадигмы программирования

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

1.3.1 Императивная парадигма

Императивная (imperative paradigm), или процедурная парадигма (procedural paradigm), представляет собой традиционный подход к процессу программирования.[7] Императивная парадигма характеризует процесс программирования как систему последовательности команд для манипуляции входными данными, суть которых, получение необходимого результата. Получается, согласно этой парадигме сначала стоит найти алгоритм решения задачи, после чего преобразовать его в виде последовательности команд.

1.3.2 Декларативная парадигма

В отличие от императивной парадигмы, согласно которой программист для решения задачи прежде всего должен построить алгоритм, декларативная парадигма (declarative paradigm) позволяет программисту описывать задачу.[8] Т.е. смысл заключается в нахождении и выполнении алгоритма, решающего общую задачу. После нахождения общего алгоритма, задачи можно решать, формулируя их условия для совместимости с этим алгоритмом. В данной среде разработчик обязан дословно сформулировать задачу, а не находить алгоритм решения.