СПИСОК ЛИТЕРАТУРЫ 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. 275 с. 8. Иртегов Д. В. Введение в операционные системы / Д. В. Иртегов. – СПб.: БХВ-Петербург, 2008. 1040 с. 9. Лавров С. С. Методы задания семантики языков программирования / С. С. Лавров // Программирование, 1978. N 6. С. 3-10. 10. Лавров С. С. Функциональное программирование. Интерпретатор языка Лисп / С. С. Лавров, Л. В. Городняя // Компьютерные инструменты в образовании. – СПб, 2002. №5. 11. Леман М. М. Программы, жизненные циклы и законы эволюции программного обеспечения / М. М. Леман. – М.: Мир, ТИИЭР, 1980. Т. 68-9. С. 26-45 12. Мейер Б. Основы объектно-ориентированного проектирования. / Б. Мейер. – М.: Интернет-Университет Информационных технологий. URL: http://www.intuit.ru/department/se/oopbases/, 2007 (проверено 1.12.2014) 13. Пратт Т. Языки программирования. Разработка и реализация. / Т. Пратт, М. Зелковиц; Под общей редакцией А.Матросова. – СПб.: Питер, 2002. 688 с. 14. Сошников Д. В. Функциональное программирование на языке F#. / Д. В. Сошников. – М.: ДМК Пресс, 2011. 15. Хендерсон П. Функциональное программирование. / П. Хендерсон. – М.: Мир, 1983. 349 с.
199 16. Хоар Ч. Взаимодействующие последовательные процессы. / Ч. Хоар. – М.: Мир, 1989. 264 с. 17. Хорстман К. Scala для нетерпеливых. / К. Хорстман. – М.: ДМК Пресс , 2013. 408 с. 18. Черноножкин С. К. Методы тестирования программ / С. К. Черноножкин. – Новосибирск: НГУ, 2004. 166 с. 19. Backus J. Can programming be liberated from the von Neumann style? A functional stile and its algebra of programs / J. Backus. // Comm. ACM. 1978. V. 21 N. 8. P. 613-641. 20. Floyd, R. W. The paradigms of Programming. / R. W. Floyd. //Communications of the ACM 22 (N 8), 1979: p. 455 21. Knoop J. Compiler Construction / 20th International Conference, CC 2011Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2011 Saarbrücken, Germany, March 26 – April 3, 2011 // Lecture Notes in Computer Science. Springer V2011. V. 6601. 330 p. 22. McCarthy J. LISP 1.5 Programming Manual / J. McCarthy. The MIT Press, Cambridge, 1963. 106 p 23. Russian Lisp User Group. URL: http://lisp.ru/ 24. Примеры на языке Prolog. URL: http://www.cs.bham.ac.uk/pjh/modules/current/25433/examples/l15_ex ample3.html
200 П р и л о ж е н и е ТЕРМИНЫ И ОБОЗНАЧЕНИЯ Ассоциативный список – список пар, предназначенный для хранения соответствия между именами и их определениями (значения переменных, констант, определения функций). Атом – данное, не разделяемое на части средствами ЯП. Дамп – резервная память для хранения промежуточных результатов, которые могут понадобиться при дальнейших вычислениях. Деструктивные операции – выполняются на памяти операндов, что может повлечь потерю данных. Замыкание функции – конструкция из определения функции и таблицы значений используемых в ней свободных переменных. Клауза – предикат и соответствующая ему ветвь для вывода цели вычисления. Ленивое вычисление – отложенное действие, выполняемое лишь если оно необходимо для получения результата. Мера организованности программы – зависимость объѐма отладки модифицируемой программы от объѐма вносимых изменений. Монада – вспомогательная семантическая система ЯП со своими правилами выполнения действий и вычисления функций. Область видимости имѐн – участки программы, на которых имена имеют определение. Показатель отлаженности программы – частота обнаружения дефектов в программе или длина интервала между внесением исправлений в программу. Псевдо-функции – кроме значения производят дополнительные действия. Рабочие переменные – видимы в пределах блока. Раздельная компиляция – методика создания кода частей программы для их многократного использования в других программах. Ранг работоспособности программы – полнота множества возможных данных, на которые программа реагирует разумно. Реализационное замыкание ЯП – расширение определения ЯП, создаваемое для его эффективной реализации. Свободные переменные – получают значение или определение вне задаваемого фрагмента.Семантическая декомпозиция – разложение определения на части, смысл каждой из которых может быть выражен на естественном языке. 201 Семантический спуск определения ЯП – исключение из определения ЯП компонентов, сводимых у более простым или общим средствам, что формально не влияет на полноту ЯП. Список свободной памяти – структура данных, обеспечивающая динамический доступ к памяти. Степень изученности задачи – оценка готовности к программированию постановки задачи и методов еѐ решения. Структурное программирование – методика представления императивно-процедурных программ, упрощающая их отладку. Универсальная семантическая функция ЯП – функция вычисления результата любой правильно представленной на ЯП функции от допустимых данных. Уровень абстрагирования понятий – характеристика независимости понятия от малосущественных свойств конкретных примеров. Хэш-функции – методика хранения динамически изменяемого конечного множества из элементов бесконечного множества. АББРЕВИАТУРЫ Обозначение Расшифровка АК Абстрактный комплекс АМ Абстрактная машина АС Абстрактный синтаксис БД Базы данных БНФ Формы Бэкуса-Наура БС Базовые средства ВС Вспомогательная семантика ЖЦП Жизненный цикл программ ЗШ Заочная школа юных программистов ЗШЮП Заочная школа юных программистов ИП Императивно-процедурное программирование ИС Информационная система ИТ Информационные технологии КМ Конкретная машина КП Компонентное программирование КС Конкретный синтаксис КЯ Концептуальные языки программирования ЛП Логическое программирование ЛШ Летняя школа юных программистов ЛШЮП Летняя школа юных программистов
202 НФ Нормализованная форма ОИВТ Основы информатики и вычислительной техники ООП Объектно-ориентированное программирование ОС Операционная семантика ПЖЦП Полный жизненный цикл программ ПИП Процедурно-императивное программирование ПП Парадигма программирования РБНФ Расширенные формы Бэкуса-Наура РИС Распределѐнная информационная система РП Реализационная прагматика СД Структуры данных СП Система программирования СПП Стандартное прикладное программирование СУ Синтаксическое управление ТА Таблица атомов ТД Типы данных ТИ Таблица идентификаторов/имѐн ТП Технология программирования УФ Универсальная функция языка программирования УЯ Учебный язык программирования ФП Функциональное программирование ШИ Школьная информатика ШЮП Школа юных программистов ЯНОП Язык начального обучения программированию ЭП Эксплуатационная прагматика ЯВУ Язык высокого уровня ЯНОП Язык начального обучения программированию ЯНУ Язык низкого уровня ЯП Язык программирования ЯПП Язык параллельного программирования ЯСВУ Язык сверх высокого уровня ЯСП Язык и система программирования ЯФП Язык функционального программирования AMA Абстрактная машина.ассемблера AMF Абстрактная машина языка Forth AML Абстрактная машина языка Lisp AMM Абстрактная машина макрогенератора AMP Абстрактная машина языка Pascal AMQ Абстрактная машина управления процессами BIOS basic input/output system - «базовая система ввода-вывода» CSP Communicating Sequential Processes — теория взаимодействующих последовательных процессов, 203 разработанная Чарльзом Э. Хоаром в 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} – множество вариантов. 204 A( Pr) – число аргументов процедуры Pr. L( Pr) – число локальных переменных процедуры Pr. @F – адрес подпрограммы, выполняющей функцию F. @c – адрес позиции «c» в программе. _ – произвольное значение ( _ подчерк). (Expr) – результат вычисления выражения или успех выполнения процесса. $ – переменная для кода успеха/результата процесса. $* – все аргументы переданные скрипту (выводятся в строку). $! – PID последнего запущенного в фоне процесса. $$ – PID самого скрипта. NN(d) – список номеров и имѐн элементов очереди. [, … ] - очереди процессов. NULL – пустой файл. H(d) – голова очереди, точнее – процесс с наивысшим приоритетом. T(d) – хвост очереди, остаток после удаления головы. d = H(d) • T(d). PN – имя текущего процесса.
Учебное издание Городняя Лидия Васильевна ПАРАДИГМА ПРОГРАММИРОВАНИЯ Курс лекций Редактор Т.Ю. Седыченко Подписано в печать __.__.2015 г. Формат 60×84 1/16. Уч.-изд. л. 12. Усл. печ. л. ___. Тираж ___ экз. Заказ № Редакционно-издательский центр НГУ. 630090, Новосибирск, ул. Пирогова, 2.
|