Файл: Обзор языков программирования высокого уровня (Операторы перехода).pdf
Добавлен: 04.04.2023
Просмотров: 62
Скачиваний: 1
СОДЕРЖАНИЕ
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
1.1. Исторические этапы развития языков программирования
1.2. Классификация языков программирования
ГЛАВА 2. СОВРЕМЕННОЕ СОСТОЯНИЕ И ПЕРСПЕКТИВЫ РАЗВИТИЯ СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2.1. Возможности современных языков программирования
ГЛАВА 3. ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
Далее, рассмотрим классификацию языки программирования по функциональному признаку, или парадигме программирования. Парадигма – совокупность идей и понятий, определяющих подход к программированию. Большинство авторов даёт чёткое разделение языков программирования на процедурные (императивные) и непроцедурные (декларативные). Класс непроцедурных языков содержит в себе два подкласса: функциональные и логические языки. Часто отдельным классом выделяют объектно-ориентированные языки программирования, хотя они содержат элементы процедурного программирования. Остановимся на каждом классе поподробнее [18].
В процедурных языках программа явно описывает необходимые к выполнению действия, то есть она является чёткой последовательностью команд, которые необходимо выполнить компьютеру. Можно сказать, что, программируя на этих языках, программист говорит компьютеру, не что делать, а как. К этому классу можно отнести большинство языков программирования: Pascal, Basic, C и другие.
Непроцедурные языки можно запросто назвать противоположностью языкам процедурным. Декларативное программирование – парадигма программирования, в которой описывается, что необходимо сделать компьютеру. Хорошим примером служит язык разметки HTML, возьмём тег <img>: необходимо просто заключить в него ссылку на изображение, а каким образом оно отобразится на странице – это задача компьютера.
В функциональном программировании процесс вычисления можно описать как вычисление значений функций в математическом понимании. На практике, отличие математической функции от понятия «функция» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, таким образом, получая в разных местах программы разные выходные данные. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим один и тот же результат – выходные данные зависят только от входных. Это позволяет средам функционального программирования кэшировать результаты выполнения функций и вызывать их в нужный момент. Примерами можно привести LISP – первый функциональный язык, Haskell и другие.
В программах, написанных на языках логического программирования, вообще не описывается действий. Программист задаёт данные и отношения между ними, после этого программе можно задать вопрос, компьютер перебирает заданные данные и находит ответ. Классический пример языка логического программирования – Prolog.
В языках объектно-ориентированного программирования переменные и функции группируются в классы, благодаря чему достигается высокий уровень структуризации программы. Объекты, порождённые от классов, вызывают методы (функции) друг друга и, таким образом, меняют состояние свойств (переменных). С формальной стороны объектно-ориентированное программирование базируется на процедурной модели, но с содержательной – оно базируется не на функции, а на объекте, как на целостной системе [19].
В этом параграфе рассмотрены три основные и самые популярные классификации языков программирования. На данный момент, действительно, нет более-менее чёткой классификации языков программирования, охватывающей все признаки и рассказывающей о «переплетениях» различных классификаций между собой.
ГЛАВА 2. СОВРЕМЕННОЕ СОСТОЯНИЕ И ПЕРСПЕКТИВЫ РАЗВИТИЯ СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2.1. Возможности современных языков программирования
Одним из ярких представителей языков нового времени является язык Elm. Ключевая особенность этого языка - отладчик реального времени: можно изменять код в реальном времени и наблюдать, как меняется тот или иной параметр. Все действия записываются, перематываются и переигрываются.
Elm - функциональный язык программирования для создания GUI – Graphical User Interface , использующий синтаксис в стиле функционального языка программирования «Haskell». Родственные связи этих языков показаны на схеме (рис. 1).
Рис. 1 - Связи языка Elm
Этот функциональный язык удобен и прост – программный код в несколько строк обеспечивает пользователю возможность рисования мышью любой фигуры в клиентской программе или в окне браузера. Интересна вычислительная модель реактивного функционального программирования – Functional Reactive Programming (FRP), положенная в основу данного языка. Данная парадигма ориентирована на работу с динамическими потоками данных и позволяет создавать приложения с высокой степенью интерактивности. Концепция FRP впервые была предложена Коналом Эллиоттом (Conal Elliott) при разработке функционального предметно-ориентированного языка для программирования анимации [11].
Кроме того, Elm в современной практике программирования успешно используется для разработки веб-приложений. Исходный код, написанный с помощью этого языка, легко компилируется в коды HTML, CSS и JavaScript и органично встраивается в программный блок на странице сайта.
Необходимо отметить, что на сегодняшний день парадигма функционального программирования претерпевает подъем и другим представителем этого направления, заслуживающим внимания, является язык Swift от компании Apple. Этот язык направлен на развитие интерактивности приложения с мобильными устройствами и в какой-то степени аналогичен Elm.
Если рассмотреть генеалогические связи этого языка (рис. 2), то можно выделить конкретные преимущества данного языка программирования высокого уровня.
Рис. 2 – Структурные связи Swift
Swift сочетает в себе понятность именованных параметров и мощь динамической объектной модели Objective-C, а также открывает доступ к уже существующим интерфейсам прикладного программирования для различных операционных систем [17].
Этот новый язык программирования начала двадцать первого века, как и язык Elm, имеет отладчик реального времени, который позволяет экспериментировать с кодом, наблюдать результаты вычислений в настоящем времени без необходимости компилировать и запускать приложение. Это значит, что пользователи быстрее проверяют свои концепты и в целом быстрее создают свои приложения.
Кроме того, скорость реализации некоторых алгоритмов на Swift в 3,9 раза выше, чем на Python, и лаконичней, ввиду того, что в языке максимально искоренен такой недостаток как многословность, присущая Objective-C [9].
Если рассмотреть программные продукты ведущих корпораций – разработчиков современного программного обеспечения, то интересен для исследования обучаемыми язык программирования высокого уровня «Go» от корпорации Google (рис.3).
Рис. 3–Связи языка Go
Go –компилируемый, многопоточный язык программирования. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались авторы, стоявшие у истоков создания языка C и операционной системы UNIX: Роберт Гризмер, Роб Пайк и Кен Томпсон [12].
В языке Go реализованы различные удобства: множественные возвраты из функций, простота представления и легкость работы со строками, что привлекает к этому приятному языку программирования высокого уровня новых почитателей и программистов.
Многоядерность, охватившая мир вычислительной техники нынешнего столетия, наложила отпечаток и на этот язык. Язык Go обладает особенностью – он предназначен для поддержания параллельного выполнения на нескольких процессорах (ядрах) разработанных на нем пользовательских приложений, Для этого любую функцию можно запустить выполняться в отдельном потоке (оператором Go). Параллельно выполняющиеся ветви ведут себя как сопрограммы, и могут обмениваться между собой синхронными сообщениями через двунаправленные каналы. Через каналы могут передаваться данные любых типов.
Как показывает анализ родственных связей, язык программирования высокого уровня «Go» опирается на мощный фундамент языков С и С++, а также поддержку компании Google, одной из самых крупных ИT-компаний на сегодняшний день.
Веб-программирование – тот раздел программирования, к которому студенты испытывают огромный интерес, поэтому стоит обратить внимание на современные языки программирования высокого уровня Dart и TypeScript, как альтернативу уже широко известному языку программирования JavaScript.
Dart – действительно новый язык и при его разработке были учтены следующие аспекты, которые так или иначе мешали его «родственникам» (рис. 4).
Во-первых, этот язык структурированный, и в то же время ориентирован на разработку веб-программ.
Во-вторых, он приемник уже существующих языков JavaScript, Go – которые популярны среди разработчиков программного кода, и переход к Dart и обучение ему, естественно, упрощается. Как и в JavaScript, в Dart используется синтаксис похожий на язык C. Но различие в том, что JavaScript основывается на прототипах, тогда как объекты в Dart определяются при помощи классов и интерфейсов(как в C++ или Java). Также Dart позволяет дополнительно задать переменные со статическими типами.
Рис. 4 – Генеалогические связи языка Dart
Как показывает короткий промежуток существования этого языка, он становится столь же привычным, динамичным и гибким языком, как и JavaScript, а написанные на нем коды – быстрее и легче в выполнении. Кроме того, созданные на этом языке программы – высокопроизводительны и успешно работают на вычислительных устройствах широкого класса: от смартфонов до серверов. Очень важен для любого языка программирования высокого уровня стандарт, и 4 июля 2014Ассоциацией стандартизации информационных и коммуникационных технологий была одобрена первая редакция стандарта языка [15].
Кроме компании Google, компания Microsoft представила свой аналог JavaScript – TypeScript (рис. 5).
Рис. 5 - Связи языка TypeScript
TypeScript – язык программирования, как уже было отмечено выше, может позиционироваться как средство разработки веб-приложений, расширяющее возможности JavaScript. Разработчиком языка TypeScript является Андерс Хейлсберг, создавший ранее Tur-boPascal, Delphi и C#.
Язык работает в любом браузере, поддерживается в таких популярных средах визуального программирования, как Microsoft Visual Studio, и совместим с некоторыми JavaScript-библиотеками, среди которых jQuery. Язык TypeScript является обратно совместимым с JavaScript (может легко компилироваться в этот язык) [10].
TypeScript отличается от JavaScript возможностью явного опре деления типов (статическая типизация), поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей.
Перечисленные факторы повышают скорость разработки, читаемость, повторное использование кода, осуществление поиска ошибок на этапе разработки и компиляции, что делает привлекательным этот современный язык для обучения студентов начальным навыкам веб-программирования.
Выявленные тенденции в развитии языков программирования высокого уровня показывают, что в настоящее время, опираясь на своих предшественников, беря от них лучшее, языки программирования стали шире по своей функциональной направленности и проще для восприятия пользователей.
К тому же, появились совершенно новые языки, которые ориентированы исключительно на разработку мобильных приложений с учетом особенностей архитектуры устройства и языки-инструменты, которые значительно упрощают работу с веб-приложениями, что характерно для нового времени.
Следует отметить, что все языки программирования высокого уровня объединяет стремление предоставить пользователю удобный синтаксис, простоту генерации кода и быструю реализацию решения задачи в соответствующей среде программирования.
Прикладная наука развивается в эпоху межсетевых отношений и больших хранилищ данных [6, c.101]. Современные студенты, пользователи (и, возможно, будущие разработчики) интернет-сервисов и веб-технологий, баз данных и баз знаний, банков данных, должны уметь выбирать правильные и эффективные инструменты решения прикладных задач, мыслить категориями современных языков программирования.