Парадигмальная характеристика ядра языка Pascal, поддерживающего методику структурного программирования — КиберПедия 

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

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

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

2021-01-31 81
Парадигмальная характеристика ядра языка Pascal, поддерживающего методику структурного программирования 0.00 из 5.00 0 оценок
Заказать работу

Параметр Конкретика
Эксплуатационная прагматика ЯП Язык учебного назначения, созданный для обучения студентов методам программирования решений задач, готовых для эффективной реализации при поддержке автоматным моделированием
Особенности системы понятий Программа и данные – раздельные сущности. Выпол- нение программы сводится к шагам изменения состоя- ний памяти, хранящей данные. Используемые в про- грамме идентификаторы подчинены иерархии обла- стей видимости, задаваемых вложенностью определений процедур и функций. Процедуры и типы данных не являются значениями. Возможно конструи- рование новых типов данных и приведение типа дан- ных к заданному
Перечень понятий, распознаваемых на уровне абстрактного синтаксиса Скаляр, вектор, значение, ключевые слова, константа, переменная, тип данных, операция, выражение, опе- ранд, элемент вектора, сравнение, действие, последова- тельность действий, ветвление, цикл, определение про- цедуры/функции, вызов процедуры/функции

 
38 Структуры данных и традиционно подразумеваемые механизмы реализации.

39 Роль языка в формировании поддерживаемой им парадигмы и/или перечень поддер- живаемых парадигм.


 
 


Параметр Конкретика
Базовые средства ЯП TRUE, FALSE, перечислимые значения,:=, a[i ], IF, WHILE, PROCEDURE, st1; st2
Семантические рас- ширения Разные виды чисел, записи, множества, указатели, метки, передачи управления, функции, переключатели, конструирование типов данных, ввод-вывод, файлы, строки, библиотеки
Регистры абстрактной машины Стеки промежуточных результатов, локальных пере- менных и параметров, выполняемой процедуры и век- тор памяти (S E C M)
Категории команд аб- страктной машины Засылки в стек, вычисления над стеком и памятью, пе- ресылки из стека и локальных переменных, ветвления, передачи управления, вызовы процедур
Реализационная праг- матика СП Память распределяется статически по блокам задан- ного размера, обработка векторов использует вычисле- ние смещений от базового адреса и подразумевает кон- троль границ отведенной под вектор памяти, при необ- ходимости привлекаются библиотеки, поддерживаю- щие ввод-вывод, работу с файлами и динамической па- мятью
Парадигмаальная спе- цифика ЯСП Прецедент строго определения языка программирова- ния, обладающего не слишком высокой сложностью в реализации, поддерживающего методику результа- тивного структурного программирования. Может вы- полнять роль эталонного монопарадигматического языка при сравнительном анализе языков и определе- нии их парадигматической характеристики

 
Естественная классификация по емкости абстрагирования конструкций, выделяющая ЯП низкого, высокого и сверхвысокого уровня, дополняется выделением парадигм, поддерживаемых ЯСП. В настоящее время число по существу различимо более двух десятков парадигм. Многие языки програм- мирования относят к пяти-восьми парадигмам. Часть упоминаемых в разных источниках ПП можно характеризовать как стили или методики, отражаю- щие поиск путей снижения трудоемкости программирования и повышения надежности программ на базе доступных СП. Например, аспектно-ориенти- рованное программирование поддерживается как макро-расширение ООП. Структурное программирование фактически сводится к ряду рекомендаций по функциональному стилю представления императивно-процедурных про- грамм. Мета-программирование представляет собой технику компиляции программ в комплекте с типовыми элементами данных. Недетерминирован- ное программирование не более чем частный случай параллелизма.


 

 

 
При определении ПП обычно поляризуются следующие характеристики ЯП:

– программируемые решения представляются в императивной или в де- кларативной форме;

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

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

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

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

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

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

– вычисления могут быть энергичными или ленивыми;

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

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

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

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

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

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

Выбор между так противопоставленными характеристиками в представ- лении программы выражается синтаксически или с помощью спецификато- ров.


 

 

 
ЗАКЛЮЧЕНИЕ

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

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

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


 

 

 
ПРИЛОЖЕНИЕ

ТЕРМИНЫ И ОБОЗНАЧЕНИЯ

Ассоциативный список – список пар, предназначенный для хранения со- ответствия между именами и их определениями (значения переменных, кон- стант, определения функций).

Атом – данное, не разделяемое на части средствами ЯП.

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

Деструктивные операции – выполняются на памяти операндов, что мо- жет повлечь потерю данных.

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

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

Ленивое вычисление – отложенное действие, выполняемое лишь если оно необходимо для получения результата.

Мера организованности программы – зависимость объема отладки мо- дифицируемой программы от объема вносимых изменений.

 
Монада – вспомогательная семантическая система ЯП со своими прави- лами выполнения действий и вычисления функций.

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

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

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

Рабочие переменные – видимы в пределах блока.

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

Ранг работоспособности программы – полнота множества возможных данных, на которые программа реагирует разумно.

Реализационное замыкание ЯП – расширение определения ЯП, созда- ваемое для его эффективной реализации.

Свободные переменные – получают значение или определение вне зада- ваемого фрагмента.

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


 
 

 


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

Список свободной памяти – структура данных, обеспечивающая дина- мический доступ к памяти.

Степень изученности задачи – оценка готовности к программированию постановки задачи и методов ее решения.

Структурное программирование – методика представления импера- тивно-процедурных программ, упрощающая их отладку.

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

 
Уровень абстрагирования понятий – характеристика независимости понятия от малосущественных свойств конкретных примеров.

Хэш-функции – методика хранения динамически изменяемого конеч- ного множества из элементов бесконечного множества.

 

АББРЕВИАТУРЫ

Обозначение Расшифровка
АК Абстрактный комплекс
АМ Абстрактная машина
АС Абстрактный синтаксис
БД Базы данных
БНФ Формы Бэкуса-Наура
БС Базовые средства
ВС Вспомогательная семантика
ЖЦП Жизненный цикл программ
ЗШ Заочная школа юных программистов
ЗШЮП Заочная школа юных программистов
ИП Императивно-процедурное программирование
ИС Информационная система
ИТ Информационные технологии
КМ Конкретная машина
КП Компонентное программирование
КС Конкретный синтаксис
КЯ Концептуальные языки программирования
ЛП Логическое программирование
ЛШ Летняя школа юных программистов
ЛШЮП Летняя школа юных программистов
НФ Нормализованная форма

     
 
 
 


ОИВТ Основы информатики и вычислительной техники
ООП Объектно-ориентированное программирование
ОС Операционная семантика
ПЖЦП Полный жизненный цикл программ
ПИП Процедурно-императивное программирование
ПП Парадигма программирования
РБНФ Расширенные формы Бэкуса-Наура
РИС Распределенная информационная система
РП Реализационная прагматика
СД Структуры данных
СП Система программирования
СПП Стандартное прикладное программирование
СУ Синтаксическое управление
ТА Таблица атомов
ТД Типы данных
ТИ Таблица идентификаторов/имен
ТП Технология программирования
УФ Универсальная функция языка программирования
УЯ Учебный язык программирования
ФП Функциональное программирование
ШИ Школьная информатика
ШЮП Школа юных программистов
ЯНОП Язык начального обучения программированию
ЭП Эксплуатационная прагматика
ЯВУ Язык высокого уровня
ЯНОП Язык начального обучения программированию
ЯНУ Язык низкого уровня
ЯП Язык программирования
ЯПП Язык параллельного программирования
ЯСВУ Язык сверхвысокого уровня
ЯСП Язык и система программирования
ЯФП Язык функционального программирования
AMA Абстрактная машина ассемблера
AMF Абстрактная машина языка Forth
AML Абстрактная машина языка Lisp
AMM Абстрактная машина макрогенератора
AMP Абстрактная машина языка Pascal
AMQ Абстрактная машина управления процессами
BIOS basic input/output system – «базовая система ввода-вывода»

CSP Communicating Sequential Processes – теория взаимодействующих последовательных процессов, разработанная Чарльзом Э. Хоаром в 1969 году
CCS Calculus of Communicating Systems – исчисление общающихся систем, разработанное Робином Милнером в 1980 году
FDD Функционально-ориентированное проектирование
LAP Ассемблер языка Lisp
PID Идентификатор процесса
RISC restricted (reduced) instruction set computer – компьютер С сокращенным набором команд
SECD Абстрактная машина языка Lisp
SECM Абстрактная машина языка Pascal
SSA Однократное присваивание
UML Универсальный язык моделирования UML
XP Экстремальное программирование

 
ОБОЗНАЧЕНИЯ

(X. Y) – работает как (cons X Y) – X становится «головой» списка Y.

 
(x  . l   ) – это значит, что первый элемент списка – x, а остальные находятся в списке l.

(x y. l) – первый элемент списка – x, второй элемент списка – y, остальные находятся в списке l.

([XL. YL]. AL) – работает как (pairlis XL YL AL) – функция аргументов XL,YL, AL строит список пар-консолидаций соответствующих элементов из списков XL, YL и присоединяет их к списку AL. Полученный список пар, похожий на таблицу с двумя столбцами, называется ассоциативным списком или таблицей атомов. Такой список может использоваться дл я связывания имен переменных и функций при организации вычислений интерпретатором. (X | Y) – работает как (append X Y) – сцепляет списки в один общий спи-

сок.

AL[X] – работает как (assoc X AL) – функция двух аргументов, X и AL. Если AL – таблица атомов, подобная тому, что формирует функция pairlis, то assoc выбирает из него первую пару, начинающуюся с X. Таким образом, это функция поиска определения или значения в таблице атомов.

[x] – содержимое памяти по адресу x.

e[n] – содержимое n-го элемента контекста.

{A | B | … | Z} – множество вариантов.

A(Pr) – число аргументов процедуры Pr.

L(Pr) – число локальных переменных процедуры Pr.

@F – адрес подпрограммы, выполняющей функцию F.


 

 

@c – адрес позиции «c» в программе.

_ – произвольное значение (_ подчерк).

(Expr) – результат вычисления выражения или успех выполнения про- цесса.

$ – переменная для кода успеха/результата процесса.

$* – все аргументы, переданные скрипту (выводятся в строку).

 
$! – PID последнего запущенного в фоне процесса.

$$ – PID самого скрипта.

NN(d) – список номеров и имен элементов очереди. [<Num, Name, Text>, … ] - очереди процессов.

NULL – пустой файл.

H(d) – голова очереди, точнее – процесс с наивысшим приоритетом. T(d) – хвост очереди, остаток после удаления головы. d = H(d) • T(d). PN – имя текущего процесса.

 

 

 


 

 

 
СПИСОК ЛИТЕРАТУРЫ

1. Айлиф, Дж. Принципы построения базовой машины. – М.: Мир, 1973. – 119 с.

2. Баранов, С. Н. Феномен Форта / С. Н. Баранов, М. Ю. Колодин // Си- стемная информатика. Вып. 4. Методы теоретического и системного про- граммирования. – Новосибирск: Наука, 1995. – С. 193–271.

3. Браун, П. Макропроцессоры и мобильность программного обеспече- ния. – М.: Мир, 1977. – 253 с.

4. Вирт, Н. От Модулы к Оберону // Системная информатика. Вып. 1. Проблемы современнного программирования. – Новосибирск: Наука, 1991.

– С. 63–75.

5. Воеводин, В. В. Параллельные вычисления. / В. В. Воеводин, Вл. В. Во- еводин. – СПб.: БХВ-Петербург, 2002. – 608 с.

6. Городняя, Л. В. Функциональный подход к описанию парадигм про- граммирования // Препринт № 152. Надзаг.: ИСИ СО РАН. – Новосибирск, 2009. – С. 66.

7. Дейкстра, Э. Дисциплина программирования. – М.: Мир, 1978.

8. Иртегов, Д. В. Введение в операционные системы. – СПб.: БХВ-Пе- тербург, 2008. – 1040 с.

9. Лавров, С. С. Методы задания семантики языков программирования // Программирование. – 1978. – № 6. – С. 3–10.

10.
 
Лавров, С. С. Функциональное программирование. Интерпретатор языка Лисп / С. С. Лавров, Л. В. Городняя // Компьютерные инструменты в образовании. – СПб., 2002. – № 5.

11. Леман, М. М. Программы, жизненные циклы и законы эволюции про- граммного обеспечения. – М.: Мир, ТИИЭР, 1980. – Т. 68-9. – С. 26–45.

12. Мейер, Б. Основы объектно-ориентированного проектирования [Элек- тронный ресурс]. – М.: Интернет-Университет Информационных техноло- гий. – Режим доступа: http://www.intuit.ru/department/se/oopbases/, 2007. – Дата доступа: 01.12.2014.

13. Пратт, Т. Языки программирования. Разработка и реализация / Т. Пратт, М. Зелковиц; под общ. ред. А. Матросова. – СПб.: Питер, 2002. – 688 с.

14. Сошников, Д. В. Функциональное программирование на языке F#. – М.: ДМК Пресс, 2011.

15. Хендерсон, П. Функциональное программирование. – М.: Мир, 1983. – 349 с.

16. Хоар, Ч. Взаимодействующие последовательные процессы. – М.: Мир, 1989. – 264 с.


 

 

17.
 
Хорстман, К. Scala для нетерпеливых. – М.: ДМК Пресс, 2013. – 408 с.

18. Черноножкин, С. К. Методы тестирования программ. – Новосибирск: НГУ, 2004. – 166 с.

19. Backus, J. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs // Comm. ACM. – 1978. – V. 21,

№ 8. – P. 613–641.

20. Floyd, R. W. The paradigms of Programming // Communications of the ACM 22. – 1979. – № 8. – P. 455.

21. Knoop, J. Compiler Construction / 20th International Conference, CC 2011. Held as Part of the Joint European Conferences on Theory and Practice of Soft- ware, ETAPS 2011 Saarbrücken, Germany, March 26 – April 3, 2011 // Lecture Notes in Computer Science. Springer V. – 2011. – V. 6601. – 330 p.

22. McCarthy, J. LISP 1.5 Programming Manual. – Cambridge: The MIT Press, 1963. – 106 p.

23. Russian Lisp User Group [Электронный ресурс]. – Режим доступа: http://lisp.ru/.

24. Примеры на языке Prolog [Электронный ресурс]. – Режим доступа: http://www.cs.bham.ac.uk/~pjh/modules/current/25433/examples/l15_example3.html.

 

 

 


 
Лидия Васильевна ГОРОДНЯЯ

ПАРАДИГМА ПРОГРАММИРОВАНИЯ

Учебное пособие

Зав. редакцией

литературы по информационным технологиям и системам связи О. Е. Гайнутдинова Ответственный редактор С. В. Макаров Корректор Н. Я. Селиванова

Выпускающий В. А. Иутин

ЛР № 065466 от 21.10.97

Гигиенический сертификат 78.01.10.953.П.1028 от 14.04.2016 г., выдан ЦГСЭН в СПб

Издательство «ЛАНЬ»

[email protected]; www.lanbook.com;

196105, Санкт Петербург, пр. Юрия Гагарина, 1, лит. А. Тел.: (812) 412 92 72, 336 25 09.

Бесплатный звонок по России: 8 800 700 40 71

 

ГДЕ КУПИТЬ

ДЛЯ ОРГАНИЗАЦИЙ:

Для того, чтобы заказать необходимые Вам книги, достаточно обратиться в любую из торговых компаний Издательского Дома «ЛАНЬ»:

По России и зарубежью

«ЛАНЬ ТРЕЙД». 196105, Санкт Петербург, пр. Юрия Гагарина, 1, лит. А тел.: (812) 412 85 78, 412 14 45, 412 85 82; тел./факс: (812) 412 54 93

e mail: [email protected]; ICQ: 446 869 967

www.lanbook.com

пункт меню «Где купить»

 
раздел «Прайс листы, каталоги»


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

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

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

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



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

0.01 с.