Файл: Современные языки программирования(Теоретические аспекты языков программирования).pdf
Добавлен: 02.04.2023
Просмотров: 247
Скачиваний: 3
Введение
Актуальность темы курсовой работы обусловлена тем, что прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов. Языкам программирования характерно быстрое развитие и смена старых на современные, более усовершенствованные, способствующие эффективному использованию программ. Знание их особенностей, а также умение их использования являются необходимыми для возможности моделирования, которые приспособлены к решению определенных задач, что также определяет актуальность исследования современных языков программирования в настоящее время.
Цель – изучить особенности современных языков программирования.
Объект исследования – современные языки программирования.
Предмет исследования - развитие языков программирования
Для достижения поставленной цели необходимо последовательное решение таких задач, как:
- дать определение понятию и сущность языков программирования;
- рассмотреть историю развития языков программирования;
- изучить разновидность языков программирования;
- исследовать эволюцию и классификация современных языков программирования;
- охарактеризовать распространенные современные языки программирования.
Методы исследования: анализ научной литературы, обобщение и систематизация полученных результатов.
Структура курсовой работы состоит из введения, двух глав, заключения, списка использованной литературы.
Глава 1. Теоретические аспекты языков программирования
Понятие и сущность языков программирования
Языки программирования – это средство представления знаний для компьютерных систем. Они предлагают концептуальные средства представления и возможности моделирования, которые приспособлены к решению определенных задач. При этом концепции языков программирования складываются и развиваются в результате стремления разработчиков снизить «семантический разрыв» между языком описания работы вычислительного устройства и языком, на котором осуществляется постановка задачи. Развитие языков на эмпирическом уровне определяется развитием вычислительной техники. На теоретическом уровне изменения в представлениях о языках программирования определяется выбором формы управления вычислительными устройствами. Многообразие концепций языков, разработанных за период в 60 лет, привело к наличию многообразия парадигм программирования, которые сложились к настоящему времени.
Концептуальные идеи языков программирования, которые нашли свое отражение в современных языках программирования, сыграли важную роль в теории программирования. А знание способов реализации в них семантических структур является важным фактором при выборе языка программирования для решения поставленной задачи.
Основными характеристиками, которые дают возможность осуществить сравнение языков программирования и провести выбор наилучшего решения той или иной задачи, являются: мощность, уровень и концептуальная целостность [12, с.48].
Мощность языка характеризуется количеством и разнообразием задач, алгоритмы, решения которых можно записать, используя этот язык. Очевидно, самым мощным является машинный язык. Любую задачу, запрограммированную на каком-либо языке, можно запрограммировать и на машинном языке.
Уровень языка характеризуется сложностью решения задач с помощью данного языка. В зависимости от того, насколько проще записывается решение задач, чем более непосредственно реализуются сложные операции и понятия, чем меньше объем получаемых программ, тем выше уровень языка.
Для концептуальной целостности языка, в свою очередь, характерной является совокупность понятий, которые служат для описания данного языка, и включает в себя такие взаимосвязанные аспекты, как: экономию, ортогональность и единообразие понятий. Экономия понятий предполагает достижение максимальной мощности языка с помощью минимального числа понятий. Ортогональность понятий означает, что между понятиями не должно быть взаимного влияния. Так, при условии, что понятие применяется в разных контекстах, то правила для такого использования должны быть идентичными. Единообразие понятий требует согласованного, единого подхода к описанию и использованию всех понятий [11, с.97].
В большинстве случаев, насколько меньше мощность языка (то есть чем уже область его применения), настолько выше его уровень. По данной причине наряду с универсальными языками разрабатываются и специализированные языки в некоторой определенной области. То есть, насколько мощный язык, нас только затруднительно осуществлять обеспечение концептуальной целостности. Наряду с этим, высокий уровень языка обладает непосредственной связью с концептуальной целостностью.
Указанные характеристики языков программирования определяют наличие либо отсутствие свойств, таких как: надежности, удобочитаемости, полноты, гибкости, простоты. Данные свойства дают возможность для более подробного сравнения языков.
Надежность языка обеспечивает минимум ошибок при написании программ. Для этого язык должен быть таким, чтобы было трудно делать ошибки, не обнаруживаемые при компиляции. К примеру, за счет наличия в языке требования, чтобы все переменные были объявлены до использования, ошибки, связанные с неправильным написанием имен, выявляются при компиляции (то есть автоматически). Язык должен осуществлять защиту программиста от него самого, сделав трудным или даже невозможным появление некоторых ошибок. Так, плохо, если можно сделать одно и то же более чем одним способом: лишняя возможность выбора может привести к ошибке. Как пример более тонкой защиты программиста является трактовка отношения равенства: поскольку точное равенство двух чисел с плавающей точкой есть не что иное, как удачное совпадение, то разумно определить его как приблизительное равенство с некоторой точностью.
Удобочитаемость языка представляет собой свойство, которое обеспечивает легкость восприятия программ человеком. Удобочитаемость находится в зависимости от многих факторов, которые включают, с одной стороны, выбор ключевых слов, а с другой — возможность модулеризации программы. Основным определяется то, чтобы нотация языка давала возможность в процессе чтения программы легко выделять основные понятия каждой конкретной части программы, не обращаясь к сопровождающим ее описаниям.
Высокая степень удобочитаемости оказывается полезной с разных точек зрения. Первоначально, уменьшается сложность документирования, если центральным элементом документации является сама программа. Во-вторых, удобочитаемость дает возможность для более легкого сопровождения программы: ясно, что существенные изменения в программе могут быть сделаны только тогда, когда ее работа понимается совершенно правильно.
Реализация требований удобочитаемости находится в зависимости от программиста, который должен более точно структурировать свою программу и расположить ее текст. Значимую роль играет и используемый программистом язык. На нижних уровнях программных конструкций язык должен обеспечить возможность точной спецификации того, какие объекты данных подвергаются обработке и как они используются. Эта информация определяется выбором идентификаторов и спецификаций типов данных.
Полнота языка обеспечивает описание на языке решения задач определенной предметной области, а также с помощью средств языка, к примеру средств отладки, процесса разработки программ.
Гибкость языка обеспечивает легкость выражения на языке необходимых для решения задач действий, предоставляет программисту больше возможностей для выражения всех операций в программе.
Простота языка обеспечивает легкость понимания семантики языковых конструкций и запоминания их синтаксиса, что способствует для уменьшения затрат на обучение программиста и вероятность совершения ошибок, возникающих в результате неправильной интерпретации спецификаций языка. К примеру, язык должен быть таким, чтобы конструкции, означающие близкие по смыслу понятия, и выглядели одинаково, и, что еще более важно, конструкции, которые означают разные понятия, должны выглядеть по-разному.
При сравнении и выборе языков программирования стоит также учитывать и такие свойства языка, как мобильность и эффективность.
Мобильность языка обеспечивает независимость его аппаратных средств, способствует переносить программное обеспечение с машины на машину с относительной легкостью [13, с.67].
Эффективность языка обеспечивает эффективную реализацию языка. В настоящее время в связи с все снижающейся стоимостью аппаратных средств и все возрастающей стоимостью программного обеспечения необходимость эффективности отходит на второй план по сравнению с надежностью.
Эффективность создания, тестирования и использования программы хорошо иллюстрируется языком АПЛ. В процессе использования данного языка для решения некоторого класса задач проектирование, кодирование, тестирование, модификация и выполнение программы отнимает у программиста минимальное количество времени и энергии. АПЛ может быть назван эффективным в полном смысле слова — он способствует минимизации времени и энергии, которые затрачиваются на решение задач на ЭВМ.
Описание свойства языков можно еще более детализировать, при указании на их зависимость от тех либо других частных требований к языкам. Совокупность данных требований уже довольно велика, что затрудняет их прямое использование для сравнения и выбора языков. В связи с этим целесообразно остановиться на перечисленных выше трех характеристиках и семи свойствах. Однако для адекватного оценивания характеристик и свойств необходимыми являются знания их зависимости от многочисленных требований.
При условии, что приемы процедурного программирования акцентируются на алгоритмах, то объектно-ориентированное программирование (ООП) акцентируется на сути задачи. Элементы программы разрабатываются согласно объектам, которые присутствуют в описании задачи. Наряду с этим, первичными считаются объекты (данные), которые могут активно взаимодействовать друг с другом посредством механизма передачи сообщений (называемого также и механизмом вызова методов). Функция программиста заключается в определении объектов, взаимодействие которых после старта программы приведет к достижению необходимого конечного результата.
Общий подход к объектно-ориентированное программированию включает в себя такие концепции, как: наличие типов, определенных пользователем; скрытие деталей реализации (инкапсуляция); использование кода через наследование; разрешение интерпретации вызова функции во время выполнения программы (полиморфизм) [10, с.77].
Реальные/физические объекты окружающего мира имеют такие основные характеристики, как: набор свойств, характеризующих объект; способность объекта изменять свойства; способность реагировать на события как в окружающем мире, так и внутри самого себя.
Хотя термины «тип данных» (либо просто тип) и «абстрактный тип данных» звучат идентично, они обладают разным смыслом. В языках программирования тип данных (переменной) обозначает множество значений, которые может принимать данная переменная. Абстрактный тип данных (АТД) определяется как математическая модель с совокупностью операторов, которые определены в рамках данной модели. Так, классы могут служить простым примером абстрактных типов данных.
Разработку класса – абстрактного типа данных рекомендуется осуществлять с разработки информационной и математической моделей реального либо физического объекта, как это изображено в схеме, которая представлена на рисунке 1.
Рисунок 1 - Схема процесса создания программной модели (класса) в рамках ООП.
Согласно с данной схемой на начальном этапе исследования задачи необходимо выделить физические объекты. Далее необходимо определить свойства, которые характеризуют каждый физический/реальный объект. Стоит отметить, что из большого количества свойств объекта стоит взять только те, которые являются необходимыми для решения задачи. Во избежание избыточности стоит определить: какие из свойств являются базовыми; какие свойства можно получить на основании базовых свойств, какие свойства будут меняться; как воздействовать на объект для изменения его свойств; в каких процессах будет задействован объект и как это отразится на его свойствах (действия над объектом).
Следующим шагом в исследовании задачи будет построение информационной модели объекта. Здесь требуется дать названия свойствам, установить диапазоны возможных значений свойств и определить их типы. Выяснить, что считать исходными данными и что определить как их результаты. Определить возможные места расположения данных. При условии, что эти данные расположены либо в результате решения будут располагаться на внешних носителях, к примеру как файл, необходимо сделать описание структуры, в которой они представлены либо будут представляться на данном носителе.