Файл: Обзор языков программирования высокого уровня (Реализация цикла с предусловием).pdf

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

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

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

Добавлен: 01.04.2023

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

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

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

Elm - функциональный язык программирования для создания GUI – Graphical User Interface, использующий синтаксис в стиле функционального языка программирования «Haskell». Родственные связи этих языков показаны на схеме (рис. 2).

Рисунок 2 - Связи языка Elm

Этот функциональный язык удобен и прост – программный код в несколько строк обеспечивает пользователю возможность рисования мышью любой фигуры в клиентской программе или в окне браузера. Интересна вычислительная модель реактивного функционального программирования – Functional Reactive Programming (FRP), положенная в основу данного языка. Данная парадигма ориентирована на работу с динамическими потоками данных и позволяет создавать приложения с высокой степенью интерактивности. Концепция FRP впервые была предложена Коналом Эллиоттом (Conal Elliott) при разработке функционального предметно-ориентированного языка для программирования анимации[26].

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

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

Если рассмотреть генеалогические связи этого языка (рис. 3), то можно выделить конкретные преимущества данного ЯП ВУ.

Рисунок 3 – Структурные связи Swift

Swift сочетает в себе понятность именованных параметров и мощь динамической объектной модели Objective-C, а также открывает доступ к уже существующим интерфейсам прикладного программирования для различных операционных систем [29].

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


Кроме того, скорость реализации некоторых алгоритмов на Swift в 3,9 раза выше, чем на Python, и лаконичней, ввиду того, что в языке максимально искоренѐн такой недостаток как многословность, присущая Objective-C [24].

Если рассмотреть программные продукты ведущих корпораций – разработчиков современного программного обеспечения, то интересен для исследования обучаемыми язык программирования высокого уровня «Go» от корпорации Google (рис.4).

Рисунок 4 - Связи языка Go

Go –компилируемый, многопоточный язык программирования.

Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались авторы, стоявшие у истоков создания языка C и операционной системы UNIX: Роберт Гризмер, Роб Пайк и Кен Томпсон [27].

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

Многоядерность, охватившая мир вычислительной техники нынешнего столетия, наложила отпечаток и на этот язык. Язык Go обладает особенностью – он предназначен для поддержания параллельного выполнения на нескольких процессорах (ядрах) разработанных на нѐм пользовательских приложений, Для этого любую функцию можно запустить выполняться в отдельном потоке (оператором Go). Параллельно выполняющиеся ветви ведут себя как сопрограммы, и могут обмениваться между собой синхронными сообщениями через двунаправленные каналы. Через каналы могут передаваться данные любых типов.

Как показывает анализ родственных связей, язык программирования высокого уровня «Go» опирается на мощный фундамент языков С и С++, а также поддержку компании Google, одной из самых крупных ИT-компаний на сегодняшний день.

Веб-программирование – тот раздел программирования, к которому студенты испытывают огромный интерес, поэтому стоит обратить внимание на современные ЯП ВУ Dart и TypeScript, как альтернативу уже широко известному языку программирования JavaScript.

Dart – действительно новый язык и при его разработке были учтены следующие аспекты, которые так или иначе мешали его «родственникам» (рис. 5).

Рисунок 5 - Генеалогические связи языка Dart

Во-первых, этот язык структурированный, и в то же время ориентирован на разработку веб-программ.


Во-вторых, он приемник уже существующих языков JavaScript, Go – которые популярны среди разработчиков программного кода, и переход к Dart и обучение ему, естественно, упрощается. Как и в JavaScript, в Dart используется синтаксис похожий на язык C. Но различие в том, что JavaScript основывается на прототипах, тогда как объекты в Dart определяются при помощи классов и интерфейсов(как в C++ или Java). Также Dart позволяет дополнительно задать переменные со статическими типами.

Как показывает короткий промежуток существования этого языка, он становится столь же привычным, динамичным и гибким языком, как и JavaScript, а написанные на нѐм коды – быстрее и легче в выполнении. Кроме того, созданные на этом языке программы – высокопроизводительны и успешно работают на вычислительных устройствах широкого класса: от смартфонов до серверов. Очень важен для любого ЯП ВУ стандарт, и 4 июля 2014Ассоциацией стандартизации информационных и коммуникационных технологий была одобрена первая редакция стандарта языка [28].

Кроме компании Google, компания Microsoft представила свой аналог JavaScript – TypeScript (рис. 6).

Рисунок 6 - Связи языка TypeScript

TypeScript – язык программирования, как уже было отмечено выше, может позиционироваться как средство разработки веб-приложений, расширяющее возможности JavaScript. Разработчиком языка TypeScript является Андерс Хейлсберг, создавший ранее TurboPascal, Delphi и C#.

Язык работает в любом браузере, поддерживается в таких популярных средах визуального программирования, как Microsoft Visual Studio, и совместим с некоторыми JavaScript-библиотеками, среди которых jQuery. Язык TypeScript является обратно совместимым с JavaScript (может легко

компилироваться в этот язык) [25].

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

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

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


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

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

Прикладная наука развивается в эпоху межсетевых отношений и больших хранилищ данных[3-5, 11, 12]. Современные студенты, пользователи (и, возможно, будущие разработчики) интернет-сервисов и веб-технологий, баз данных и баз знаний, банков данных, должны уметь выбирать правильные и эффективные инструменты решения прикладных задач, мыслить категориями современных языков программирования.

1.3 Этапы разработки программ и основные критерии оценки качества программ, разработанных на языке программирования высокого уровня

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

1

2

3

4

6

5

7

Рисунок 7 – Этапы решения задач на компьютере

Первый этап – формирование цели решения задачи, анализ требований, определение исходных данных.

Второй этап – составление формальной модели данных.

Третий этап – формализация задачи.

Четвертый этап – разбиение процесса обработки данных на элементарные действия и определение последовательности их выполнения.

Пятый этап – запись алгоритма на языке программирования.

Шестой этап – готовность альфа-версии, проверка наличия ошибок и переход к бета-тестированию.

Седьмой этап – анализируются результаты и программа готова к использованию.

В таблице 1 представлены основные показатели качества программного средства.

Таблица 1 – Показатели качества ПС

Показатель

Характеристика

Надежность

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

Сопровождаемость

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

Удобство применения

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

Эффективность

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

Универсальность

Характеризуют адаптацию ПС к новым функциональным требованиям, возникающим вследствие изменения области применения или других условий функционирования

Корректность

Характеризуют степень соответствия ПС требованиям к обработке данных и общесистемным требованиям


Таким образом, согласно межгосударственному стандарту «Оценка качества программных средств» оценка качества осуществляется на всех этапах жизненного цикла программного средства и представляет собой совокупность операций, включающих выбор номенклатуры показателей качества оцениваемого продукта, определение значений этих показателей и сравнение их с базовыми значениями [1].

2 Организация алгоритмов циклических структур

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

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

  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку;
  • подняться на одну ступеньку.

Такая запись не выгодна ни с точки зрения времени написания программы, ни с точки зрения расхода памяти. С использованием циклов алгоритм можно сократить, например, так:

1) Подошел к лестничному маршу.

2) Подняться на одну ступеньку.

3) Если поднялись меньше чем на 9 ступенек, повторить п.2.

Все циклические структуры направлены на одну цель, повторять некоторую последовательность действий. Поэтому отличие в разнообразии таких структур заключается в том, что известно ли заранее количество повторений или нет. Если количество повторов известно, то такие циклы называются арифметическими, если не известно, то итерационными [5].

Классификация циклических структур представлена на рисунке 8.

Рисунок 8 – Классификация циклических структур

Каждый цикл состоит из определенной последовательности операторов. Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла [2]. Один проход цикла называется итерацией. На рисунке 9 представлены структурные схемы итерационных циклов.