Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

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

Цели исследования:

  • Просмотреть общее сведения и уровни языков программирования.
  • Просмотреть историю развития языков программирования.
  • Сделать обзор современных языков программирования.
  • Задачи исследования:
  • Ознакомления с языками программирования.
  • Рассмотрение истории развития языков программирования.
  • Обзор современных языков программирования.
  • В первой главе рассматриваются общие сведения о языках программирования, основные понятия и история развития.
  • Во второй главе рассматривается обзор современных языков программирования.

ГЛАВА 1. Языки программирования.

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

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

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

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

1.1 История развития языков программирования.

Начало развития.

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

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

Однако использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. Поэтому от его использования пришлось отказаться.

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

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

Каждая модель процессора имеет свой собственный набор машинных команд, хотя большинство из них совпадает. Если Процессор «А» полностью понимает язык Процессора «Б», то говорится, что Процессор «А» совместим с Процессором «Б». Процессор «Б» будет называться несовместимым с Процессором «А», если «А» имеет команды, нераспознаваемые Процессором «Б».

Язык ассемблера

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

Но даже работа с ассемблером достаточно сложна и требует специальной подготовки.

Например, для процессора Zilog Z80 машинная команда «00000101» предписывает процессору уменьшить на единицу свой регистр «B». На языке ассемблера это же будет записано как «DEC B».

Структурное программирование.

Следующий шаг был сделан в 1954 году, когда был создан первый язык высокого уровня – Фортран (англ. FORTRAN – FORmula TRANslator). Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения языков структурного программирования, таких как Алгол, Паскаль, Си.

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

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

Также создавались функциональные (аппликативные) языки (Lisp, 1958) и логические языки (Prolog, 1972).

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

ООП.

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

Примерном объектно-ориентированных языков являются: Object Pascal, C++.

1.2 Основные понятия и классификация.

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

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

Языки программирования делятся на два вида: языки низкого уровня и языки высокого уровня. К первым относятся «Машинно-ориентированные» языки (машинные коды, Ассемблер). Ко вторым – «Алгоритмические» языки. Каждый язык программирования предназначен для решения определенного класса задач.

  1. Системы программирования

Системы программирования – это комплексы программ и прочих средств, предназначенных для разработки и их эксплуатации на конкретном языке программирования для конкретного вида ЭВМ.

Система программирования включает:

  • Текстовый редактор (текст программы, написанный на конкретном алгоритмическом языке)
  • Программа-отладчик (отладка исходного текста программы, поиск и устранение ошибок)
  • Транслятор – программа-переводчик с конкретного алгоритмического языка на машинно-ориентированный (программа на машинно-ориентированном языке)
  • Компоновщик – редактор связей (объединяют оттранслированные модули в единые загрузочные, готовые к выполнению)
  1. Синтаксис и семантика.

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

Синтаксис – описывает структуру программ как наборов символов.

Семантика – определяет смысловое значение предложений алгоритмического языка.

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

Языки программирования делятся на «Императивные» и «Декларативные».

Императивные языки программирования – Бейсик, Паскаль, Си и прочие (включая ООП).

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

Одна из характерных черт императивного программирования – наличие переменных с операцией «разрушительного присвоения». То есть, была переменная «А», было у нее значение «Х». Алгоритм предписывает на очередном шаге присвоить переменной «А» значение «Y». То значение, которые было у «А», будет «навсегда забыто».

Декларативные языки программирования – Lisp, ISWIM, ML, Miranda/

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

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

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

Логические языки программирования – Prolog

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

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

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

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

Примеры: Ада, Бейсик, Си, C++, С# (из Microsoft) КОБОЛ, Паскаль, Delphi, Фортран, Java, Перл, Visual Basic, PHP.

Объектно-ориентированный подход к программированию – это подход к разработке программного обеспечения, основанный на объектах, а не на процедурах.

Примеры: Java, Си, Visual Basic.

Объект – это базовое понятие ООП. Любой объект принадлежит одному или нескольким классам, которые в свою очередь определяют, описывают поведение объекта.

Метод – это действие объекта, изменяющее его состояние или реализующее другое его поведение. Пример методов: "назвать свое имя", "стать невидимым".

Объект, класс, метод, свойства, события – это базовые понятия ООП.

К концепции ООП относится:

Полиморфизм - это взаимозаменяемость объектов с одинаковым интерфейсом. Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество методов». В зависимости от типа объекта одно и то же сообщение может соответствовать различным действиям – методам для достижения требуемого результата.

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

Инкапсуляция - это принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (от английского interface — внешнее лицо, т. е. список декларируемых свойств и методов) класса и не вникать в его внутреннюю реализацию. Этот принцип (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов. Свойство объекта скрывать некоторые свои свойства и методы. Смысл инкапсуляции состоит в том, что внешний пользователь не знает детали реализации объекта, работая с ним путём предоставленного объектом интерфейса.

ГЛАВА 2. Обзор современных языков программирования.

Чтобы заставить компьютерную программу сделать определённое действие, мы выбираем в её настройках необходимую опцию, ждём, пока программа выполнит обработку информации и наслаждаемся результатом. Но мало кто из нас задумывался, а почему нажатие определённой кнопки заставляет работать программы? Как она понимает, чего мы хотим? Всё дело в том, что любая программа – это сложный набор команд, которые задаются с использованием специальных «переводчиков» или компиляторов.

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

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

2.1 Популярность языков программирования.

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

«Таблица» 1

Год/Название

00

02

04

06

08

10

12

14

16

18

Java

55

3

8

14

16

12

18

17

16

15

Visual Basic

21

1

2

3

2

1

2

1

12

9

Python

0

0

0

1

1

2

4

5

7

8

C/C++

75

2

5

16

9

12

18

16

8

7

C#

0

0

1

5

8

6

9

8

7

6

Perl

18

1

2

5

5

4

5

4

4

3

Ruby

0

0

0

0

0

1

2

2

3

2

PHP

0

0

0

1

2

2

4

3

3

2

R

0

0

0

0

0

0

0

0

0

2

Bash

0

0

0

0

0

0

0

1

2

2

Scala

0

0

0

0

0

0

0

0

1

1

ASP

0

0

0

11

7

4

6

5

2

1

Assembly

4

1

1

2

1

1

1

1

1

1

JSP

0

0

0

4

4

3

3

2

1

1

Swift

0

0

0

0

0

0

0

0

0

1

Matlab

0

0

0

0

0

0

0

0

0

1

Из «Таблицы» 1 видно, что самое большое количество внимания с 2000-х было к языку программирования «Java».

Язык программирования «Java» появился в 1995 году.В последние годы интерес к данному языку уменьшается. Это связано с появлением новых языков программирования. Многих начинающих программистов удивляет тот факт, что Python появился на 4 года раньше Java, JavaScript и Ruby — в том же 1995, а C++ и Objective C — и вовсе в 1983 году. Все языки из этого списка активно используются в веб-программировании. А Java наряду с JavaScript — самый популярный язык в мире согласно великому множеству опросов и признакам.

Самая частая жалоба о Java, относится к ее многословности. Осознавая это, дизайнеры java-языков внедряют усовершенствования в каждой версии java-версии, эффективно развивая java для уменьшения кодовых таблиц (например, аннотации, дженерики, try-with-resource). Java 8 — действительно революционная. Поддержка функционального программирования (лямбда-выражений и API-потоков) позволяет использовать сжатый, читаемый и чистый стиль программирования.

Онлайн-платформа тестовых заданий по программированию HackerRank представила рейтинг самых популярных языков программирования отдельно для работодателей и для программистов. Об этом пишет «Коммерсантъ».

5 языков программирования у работодателей:

  1. Javascript – 47,8%
  2. Java – 47,4%
  3. Python – 33%
  4. C++ - 21%
  5. C – 18,9%

В исследовании отмечается, что, например, в сфере производства компьютерного оборудования доминируют, наоборот, языки С и С++ — 58,5 и 55,6% соответственно.

При этом большинство программистов (84,6%) отдают предпочтение Python, который считается самым простым, производительным и удобны для чтения высокоуровневых языков программирования.

За этим языком будущее, и это не преувеличение. Во-первых, он прост в понимании и использовании: Python постепенно вводят в учебную программу, повсеместно вытесняя отживший свое Паскаль и прочие «деревянные» языки. Во-вторых, это нейронные сети: если разработчик ударяется в машинное обучение, то сразу же обращает свое внимание на Python.

Python часто используют для создания плагинов и скриптов. Это удобно — благодаря логике языка скрипты создаются просто. Разработчики онлайн-игр создают игру на одном языке, а для скриптов внутри игры, вроде взаимодействия персонажей и сцен, часто используют именно Python.

Топ-5 языков программирования у разработчиков:

  1. Python – 84,6%
  2. C – 54%
  3. C++ - 48,2%
  4. Java – 48,2%
  5. Javascript – 47,6%

Другой особенностью стало то, что более молодые разработчики не проявляют интереса к новым языкам программирования, как Go, Kotlin и Scala. Так, программисты в возрасте от 45 до 54 лет поместили язык Go (Golang) на вторую строчку рейтинга, а разработчики в возрасте 18-24 лет поставили этот язык на девятое место. Именно Go предрекают стать серверным языком будущего.

2.2 Безопасные и небезопасные языки программирования.

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

Безопасным считается тот язык, созданные на котором программы при компиляции не будут нарушать заложенной в них логики поведения. Это не обязательно означает, что такая программа не может содержать ошибок, такое вообще вряд ли возможно. Но она должна быть стабильной и не нарушать целостности вложенных в нее данных. К безопасным относят такие языки, как Standard ML, Ada, BitC, Lisp и некоторые другие. Как правило, это проекты для военных, банковских операций и серьезных реальных сфер деятельности.

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

ЗАКЛЮЧЕНИЕ

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. «Языки программирования» кн.5, Ваулин А.С., 1993 г.
  2. «Параллельное программирование», Кепнер Дж.
  3. «Новые языки программирования и тенденции их развития», Ушкова В., 1982 г.
  4. «Языки программирования» кн.5, Ваулин А.С., 1993 г.
  5. «Языки программирования: разработка и реализация»,  П.Терренс, 1979г.
  6. «Язык программирования CИ». 2-е изд. / Б. Керниган, Д.М. Ритчи. — М.: Вильямс, 2016. — 288 c.
  7. «Философия C++. Введение в стандартный C++»: Эккель Б. Пер. с англ. — 2-е изд. — СПб.
  8. «Вычислительная техника и программирование»/Под ред. А.В. Петрова-М.: Высш. Шк.,1990.
  9. «Вычислительные машины, системы и сети»/ Под ред. А.П. Пятибратова.-М.: Финансы и статистика, 1991.
  10. «Элементы современного программирования». - СПб: изд-во С. - П. университета, 1991. Дмитриева М.В., Кубенский А.А.
  11. «Искусство программирования, том 1». Кнут Д. Основные алгоритмы = The Art of Computer Fundamental Algorithms — 3-е изд. — М.: «Вильямс», 2006.
  12. «Информатика. Базовый курс» Симонович С.В. и др. — СПб.: издательство "Питер", 2000. — 640 с.: ил.
  13. «Алгоритмические языки реального времени», Янг С., 1985 г
  14. «Основы алгоритмизации и программирования». - Голицына О.П., Попов И.И.
  15. «Программирование в алгоритмах». - Окулов С.М.
  16. «Программирование на языке высокого уровня». - Голицына О.Л.
  17. «Язык программирования Java». - Патрикеев А.П.
  18. «Язык программирования С++». - Страуструп Б.
  19. «Численные методы и программирование». - Колдаев В.Д.

ПРИЛОЖЕНИЕ

«Таблица» 1

Год/Название

00

02

04

06

08

10

12

14

16

18

Java

55

3

8

14

16

12

18

17

16

15

Visual Basic

21

1

2

3

2

1

2

1

12

9

Python

0

0

0

1

1

2

4

5

7

8

C/C++

75

2

5

16

9

12

18

16

8

7

C#

0

0

1

5

8

6

9

8

7

6

Perl

18

1

2

5

5

4

5

4

4

3

Ruby

0

0

0

0

0

1

2

2

3

2

PHP

0

0

0

1

2

2

4

3

3

2

R

0

0

0

0

0

0

0

0

0

2

Bash

0

0

0

0

0

0

0

1

2

2

Scala

0

0

0

0

0

0

0

0

1

1

ASP

0

0

0

11

7

4

6

5

2

1

Assembly

4

1

1

2

1

1

1

1

1

1

JSP

0

0

0

4

4

3

3

2

1

1

Swift

0

0

0

0

0

0

0

0

0

1

Matlab

0

0

0

0

0

0

0

0

0

1