В разны х парадигмах программирования на ЯВУ — КиберПедия 

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

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

В разны х парадигмах программирования на ЯВУ

2021-01-31 100
В разны х парадигмах программирования на ЯВУ 0.00 из 5.00 0 оценок
Заказать работу

ПП Вычисления Память Управление Структуры
ИП Скаляры = слова СД-ТД предвычисле- ния Статическое рас- пределение := Области видимо- сти – динамика вызо- вов – статика вложен- ности текста – глобалы: Описания Категории имен составные имена exprt-import Goto If Call Case Select Switch For While Until Do Trap Catch Ситуации ОС Array Record Union Pointer
ФП Длинные скаляры. Списки. Программы. Пред и пост lazy GC – FS Без описаний До исчерпания Динамика вызо- вов – БД (атомы) Списки свойств Let Declare Quote-eval Lazy Cond Lambda Defun Evalquote Ловушки Мультизначения Параллелизм Необязательные параметры Списки Файлы Строки Потоки Модели мас- сивов, таблиц, вариантов
ЛП Варианты с возвратами. Шаблоны в строке. Подстановка Накопление рецептов Обход лабиринта Параллелизм – об- ход графа в ши- рину Иерархия принятия решений
ООП Обработка полей записи Разметка доступа Дружественный доступ Выбор метода по ТД или по ситуа- ции Привязка к интерфейсу Иерархия классов

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

Язык Fortran включает в себя:

 
средства представления выражений с функциями;

– арифметические функции;

– неявные циклы форматного ввода-вывода векторов и массивов;

– вычисляемые передачи управления;

– сопрограммы – многовходовые подпрограммы. Язык Lisp 1.5 поддерживает работу:

– с таблицей свойств атомов, фактически поддерживающей статическую память с побочным эффектом;

– императивно-процедурное программирование в форме Prog.

– глобальные определения атомов в терминах свойств атомов.

– псевдо-атомы для работы со скалярами разных типов и форматов.

– мультиоперации над числами и строками.

– псевдо-функции для взаимодействия с операционной системой.

– расширение системы программирования определениями на входном языке и средствами ассемблера.

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

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

 
В рамках проекта.Net появились новые мультипарадигмальные языки программирования F# и C#.

Изначально императивно-процедурный Си и язык ООП С++ переходят на новый уровень абстрагирования:

Язык С# обогащается рядом новых возможностей:

– выражения могут содержать безымянные функции, представленные как структуры данных;

– поддержаны динамические типы данных – стеки, очереди, списки, де- ревья;

– доступны библиотеки классов, библиотеки элементов управления и библиотеки web-элементов управления;

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

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

– каждый тип, помимо полей, методов и свойств, может содержать и со- бытия;


 

 

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

Язык F#, наследующий идеи функциональных языков ML, CAML, OCAML, поддерживает механизмы ЛП и ООП:

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

– динамическое связывание;

– ленивые и энергичные вычисления;

– замыкания функций и мемоизация;

– квотирование выражений, дающее доступ к обработке программы при ее исполнении;

– конструирование выражений, частичное применение функции и мета- компиляция;

– разреженные матрицы;

– хеш-таблицы;

– mutable-переменные (изменяемые);

– монада недетерминированных вычислений;

– асинхронные выражения и параллельное программирование;

– частичная интероперабельность с.NET.

Язык Scala объединяет механизмы ФП и ООП с резким акцентом на кон- троль ТД, удобный для разработки компиляторов, обеспечивающих надеж- ность программ:

– объекты и их поведение определяется классами с возможностью мно- жественного наследования;

– функции являются значениями и могут быть высших порядков;

– статическая типизация поддерживает обобщенные классы, встроенные классы и абстрактные типы, составные типы, полиморфные методы и др.;

– допускает включение новых языковых конструкций;

– взаимодействует с Java и.Net;

– допускает анонимные функции;

– автоматическое конструирование типозависимых замыканий функций;

– использует механизм сопоставления с образцом;

 
реализационная прагматика унаследована от Java.

Объединение разных ПП в рамках одного ЯП или их поддержка при реа- лизации СП повышает их сферу применения и способствует производитель- ности труда программистов, смягчая избыточное разнообразие теорий и мо- делей, сложившихся на разных фазах и этапах ЖЦП.

Новые и долгоживущие ЯП как правило имеют мультипарадигмальный характер. Следует обратить внимание на появление новых мультипарадиг- мальных учебных языков программирования (A++, Oz), поддерживающих


 

 

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

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

 

Определитель парадигм

Первые языки программирования обладали машинной ориентированно- стью и поддерживали принципиально важную, но небольшую по длительно- сти и трудозатратам часть ЖЦП – от 2 до 5%, заключающуюся в кодировании готовых алгоритмов в терминах автоматов. Появление ЯВУ расширило язы- ковое покрытие ЖЦП примерно до 10% для хорошо поставленных задач, имеющих алгоритмы решения над типовыми структурами данных, причем алгоритмы приспособлены для нисходящих методик программирования.

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

 
Логическое программирование распространило эти механизмы на не вполне определенные постановки задач, что дало языковую поддержку пред- варительному сбору фактического материала, созданию демонстрационных версий, пробному прототипированию, отчасти тестированию и довело общее языковое покрытие ЖЦП почти до 60% при восходящей методике разработки. Появление объектно-ориентированного программирования смягчило итеративность ЖЦП для задач, связанных с развивающимися областями при-

ложения, что довело языковое покрытие примерно до 80%.

Определитель парадигмы языка программирования содержит следующие процедуры:

– разложение языка на фрагменты по уровням и слоям с целью выделения базовых средств языка и его реализационного ядра – семантический базис;

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

– определение АМ языка и интерпретатора, формально достаточного для построения расширений, эквивалентных исходному языку – нормализован- ное определение;


 

 

– сравнение полученного определения с описаниями известных парадигм и концептуальных языков;

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

 
фразеологический словарь ПП, используемый при определении ЯП;

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

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

Таблица 43


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

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

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.