Файл: Современные языки программирования (Понятие языков программирования и их свойства).pdf

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

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

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

Добавлен: 24.04.2023

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

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

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

Из специализированных универсальных языков стоит отметить Симулу 67, которая, благодаря понятию класса, наиболее полно представляет идею языка модульного программирования. Концепция класса важна также как прообраз «акторов» в языках искусственного интеллекта; она является ярким выражением тезиса о языке, в своих конструкциях воплощающем определенный подход к задачам данной области как материализованной методике программирования. Шестидесятые годы характеризуются также развитием мультипрограммирования; уже ПЛ/1 претендовал на пригодность для программирования решения задач в реальном времени; появилась и новая линия языков, предназначенных для диалога. Наибольшее распространение получили Бейсик (основанный на подмножестве Фортрана) и язык работы с матрицами APL.

В целом по влиянию на «вычислительное сообщество» наиболее выделяются (по-прежнему) Фортран, Алгол 60, Лисп, APL, Несколько слабее (пока) влияние новшеств Алгола 68 и Паскаля.

Работы по описанию и реализации языков программирования составили целую дисциплину «программистскую лингвистику». Исследования в этой области ведутся в интересах:

- систем построения трансляторов (СПТ), т, е, автоматизированных систем, генерирующих по описанию языка (при более или менее активном участии системного программиста –«реализатора языка», а иногда и по описанию машины, транслятор с данного языка для этой машины;

- разработки расширяемых языков, т, е, языков со встроенным механизмом описания некоторого «нового языка» и автоматической генерацией трансляции для так созданных языков; тема эта, очень популярная в 60-х гг., в настоящее время полностью растворилась в некоторых средствах новых языков программирования (описываемые виды и операции Алгола 68, например), и работах по СПТ;

- теоретических исследований и систем доказательства правильности алгоритмов (программ).

В конце 60-х и начале 70-х гг. стали появляться языки очень высокого уровня. Здесь следует упомянуть (появившуюся еще в 1962 г., но долго остававшуюся чисто экспериментальной) Кодасиловскую информационную алгебру, языки моделирования с их ассоциативностью и встроенным механизмом упорядочения и планирования процессов, языки искусственного интеллекта (Плэннер, Коннайвер, Сейл и проч.), характеризующиеся автоматическим бэктрэкингом, возможностями поиска в базах данных по образцам и вызовом процедур по образцам, и более теоретические работы над так называемыми теоретико-множественными языками, например, СЕТЛ.


Число живых языков программирования очень велико. Дж. Сэммит приводит список таких языков для США на 1973 г., состоящий из 171 языка (из них 85 суть языки численных методов, символьной и строковой обработки, аналитических преобразований и языки общего назначения; остальные 86 лежат в менее традиционных языках). Отметим, что на 1972 г. Дж. Сэммит насчитала 184 языка, и что в промежутке в ее списке появилось 33 новых языка. Причины появления новых языков она резюмирует так:

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

- опыт использования некоторого языка показывает, что для исправления его недостатков придется разработать язык заново;

- удобно соединить средства нескольких языков в одном языке;

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

- разработка нового языка - занятие увлекательное, и порой удается найти заказчика;

- воспользоваться уже существующим языком для данной области приложений мешают антипатии или предрассудки;

- разработчик языка не знает о наличии достаточного для его целей языка и полагает, что он находится в условиях одного из первых двух пунктов.

1.3 Критерии оценки

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

Универсальность особо ценилась в конце 50-х - начале 60-х гг. и сильно повлияла на Алгол 60 и II. I 1: стремление к универсализации, обобщению приводило порой к предпочтению наиболее общих (не всегда самых эффективных) вариантов конструкций (ср. циклы и подстановку параметров в Алголе 60).

Полный доступ ко всем возможностям вычислительной системы.

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

Модульность построения языка, позволяющая программисту работать только с нужной ему частью языка, не изучая всего языка в целом (в наибольшей степени достигнута в ПЛ 1, хотя иногда для уяснения сообщения об ошибке программист будет вынужден выйти за границы своего «подмножества».


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

Лаконизм, в частности отсутствие избыточности, особенно такой, которая затрудняет модификации программы.

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

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

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

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

Наглядность или удобочитаемость программ.

Ниже следует аранжировка изученных авторами языков программирования Паскаль, Алгол 68 и Симула 67. Первым упоминается язык, наиболее полно удовлетворяющий критерию. Точка с запятой разделяет языки, заметно отличающиеся по данной оценке. Естественно, по каждому критерию аранжировка является ориентировочной, возможно, субъективной.

Универсальность применений: ПЛ/1; Алгол 68, Симула 67; Паскаль, Полнота доступа к возможностям, машины: ПЛ/1 (события, упаковки, ситуации и проч.); Паскаль (упаковки), Алгол 68 (длины в видах, параллелизм); Симула 67, Переносимость программ: Кобол; Паскаль; ПЛ/1; Симула 67, Алгол 68, Модульность языка: ПЛ/1, Симула 67, Паскаль; Алгол 68 (много зарезервированных служебных слов).

Легкость изучения: Паскаль (язык скромен и логичен); Алгол 68, Симула 67 (языки побольше, но весьма логичны); ПЛ/1 (язык велик и довольно нерегулярен). Ортогональность: Алгол 68; ПЛ/1; Паскаль, Симула 67, Лаконичность: Алгол 68; Симула 67; ПЛ/1; Паскаль, Защита от ошибок: Алгол 68; Симула 67, Паскаль; ПЛ/1,


Эффективная, реализуемость: Паскаль, Алгол 68 (не считая сборки мусора!); ПЛ/1; Симула 67.

Эффективность программирования: Симула 67 (особенно в моделировании!), Паскаль; Алгол 68, ПЛ/1.

Легкость структурирования: Симула 67; ПЛ/1; Паскаль, Алгол 68, Легкость модификации программ: Паскаль; ПЛ/1; Алгол 68,Симула 67, Наглядность (удобочитаемость программ); Паскаль; ПЛ/1; Алгол 68, Симула 67.

Глава 2. Современные языки программирования

2.1 Наиболее востребованные языки программирования

В сегодняшнем рейтинге самых популярных языков программирования 2018 учитывались результаты нескольких международных опросов, опубликованных Tiobe Programming Index, Indeed, GitHub и др. Эти рейтинги и развернутые комментарии сформируют у вас представления о нынешних тенденциях кодинга.

Наиболее востребованные языки программирования можно представить в виде таблицы.

Таблица 1 - Наиболее востребованные языки программирования

по Tiobe Index

по GitHub

- Java

- C

- C++

- Python

- C#

- JavaScript

- VB.NET

- R

- PHP

- MATLAB

-  Swift

- Objective-C

- Assembly

-  Perl

-  Ruby

- Delphi

-  Go

- Scratch

- PL/SQL

- Visual Basic

-  JavaScript

- Python

-  Java

- Ruby

- PHP

-  C++

-  CSS

- C#

-  Go

-  C

-  Typescript

- Shell

- Swift

- Scala

- Objective-C

Java признается одним из наиболее популярных языков программирования различными авторитетными изданиями. Он занимает первое место в индексе Tiobe и третью позицию по GitHub. Язык действительно заслуживает наград и признания.

С момента своего появления Java играет одну из ведущих ролей в разработке настольных и мобильных приложений, а также бэкэнда всевозможных веб-систем. Язык активно используется в разработке приложений для Android.

Вот некоторые преимущества Java:

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


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

- Обратная совместимость. Язык Java обратно совместим, и даже после обновления приложений с более новой версией продолжает поддерживаться старая версия языка. Следовательно, разрабам не нужно беспокоиться о переписывании кода каждый раз, когда выпускается обновление.

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

Язык программирования Kotlin в последние годы стал неожиданно популярным и, вполне возможно, возглавит рейтинг по итогам 2018 года.

Kotlin – новый статически типизированный язык от JetBrains.

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

Самое сладкое в Kotlin – 100% совместимость, даже с виртуальной машиной Java (JVM). Компилируется в JavaScript, что делает его универсальным как для фронтенд, так и для бэкэнд-разработки. Следовательно, если вы планируете изучать восходящий язык, то Kotlin – это лучший выбор для вас.

Scratch – популярный визуальный язык программирования, нацеленный на детей и позволяющий приучить к основам кодинга подрастающее поколение.

Он разработан, чтобы быть интересным и легким в освоении — поэтому весь функционал Scratch основан на перетаскивании мышью, без ввода скучного кода.

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

За последние 15 лет популярность Python значительно возросла, а в числе его пользователей - много известных компаний и организаций, который применяют этот язык для создания современного функционала сайтов. Он занимает четвертое место на Tiobe и второе место в рейтинге GitHub.

Язык Python может использоваться для управления удивительными технологиями, такими как машинное обучение, искусственный интеллект (AI), Big Data, робототехника, кибербезопасность и т. д.

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