Ббк 32. 973-018 г рецензент канд физ мат наук, Ф. А. Мурзин
Download 278.16 Kb.
|
FIT-Gor-PP3
Пример 14. Программа распечатки параметров командной строки и переменных среды на языке Си. 4.2 Структурное программирование Прагматика стандартного программирования не требует подробного описания – она общеизвестна и подробно исследована во многих работах. Тем не менее, следует отметить ряд моментов, связанных со структурным и функциональным программированием. Сложность разработки больших программ, функционирующих в стиле локальных изменений состояния памяти, привела к идеям структурного программирования, налагающим на стиль представления программ ряд ограничений, способствующих удобству отладки программ и приближающих технику стандартного программирования к функциональному программированию: дисциплина логики управления с избеганием переходов по меткам (goto_less_style); минимизация использования глобальных переменных в пользу формальных параметров процедур (global_variable_harmful); полнота условий в ветвлениях, отказ от отсутствия ветви ―else‖; однотипность результатов, полученных при прохождении через разные пути. Существует большое число чисто теоретических работ, исследовавших соотношения между потенциалом императивного и функционального подходов и пришедших к заключению о формальной сводимости в обе стороны при некоторых непринципиальных ограничениях на технику программирования. Методика сведения императивных программ в функциональные заключается в определении правил разметки или переписывания схемы программы в функциональные формы. Переход от функциональных программ к императивным технически сложнее – используется интерпретация формул над некоторой специально устроенной абстрактной машиной. На практике переложение функциональных программ в императивные выполнить проще, чем наоборот – может не хватать близких понятий. Функциональная модель ИП С практической точки зрения любые конструкции стандартных языков программирования могут быть введены как функции, дополняющие исходную систему программирования, что делает их вполне легальными средствами в рамках функционального подхода. Необходимо лишь четко уяснить цену такого дополнения и его преимущества, которая обычно связывается с наследованием решений и привлечением пользователей. В первых реализациях Lisp-а были сразу предложены специальные формы и структуры данных, служащие мостом между разными стилями программирования, а заодно смягчающие недостатки исходной, слишком идеализированной, схемы интерпретации S-выражений, выстроенной для учебных и исследовательских целей. Важнейшее средство такого рода, выдержавшее испытание временем – prog-форма, списки свойств атома и деструктивные операции, расширяющие язык программирования так, что становятся возможными оптимизирующие преобразования структур данных, программ и процессов, а главное – раскрутка систем программирования. Prog-форма языка Lisp 1.5 может рассматриваться как абстрактная модель ИП, в которой при интерпретации используются отдельные ассоциативные таблицы для хранения параметров доступа к значениям переменных и определениям функций и процедур в памяти. Это позволяет независимо задавать механизмы доступа к именам переменных и наименованиям процедур. Применение возможностей prog-выражений позволяет писать «паскалеподобные» программы, состоящие из операторов, предназначенных для исполнения (точнее, «алголоподобные» (Algol-like), т. к. они появились за десять лет до Паскаля. Теперь более известен Pascal). Для примера prog-выражения приводится императивное определение функции LENGTH, сканирующей список и вычисляющей число элементов на верхнем уровне списка. Значение функции LENGTH – целое число. Программу можно примерно описать следующими словами (Стилизация примера от Маккарти.):
Download 278.16 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling