Автор работы: Пользователь скрыл имя, 20 Декабря 2010 в 23:20, реферат
Паради́гма это (от греч. παράδειγμα, «пример, модель, образец») — универсальный метод принятия эволюционных решений, гносеологическая модель эволюционной деятельности.
Более высокий
уровень инерционности
- длительностью
процессов формирования таких
идеальных понятий, как знания,
методология у подавляющего
- формирование
управленческой парадигмы
В современной Российской Федерации, несмотря на произошедшие разрушение прежней социально-экономической системы, в настоящее время не ставится задача и не делается каких-либо попыток целенаправленного воздействия на институты и институции управленческой парадигмы по их изменению для повышения уровня их адекватности производственным системам и новым условиям их функционирования. Вместе с тем уровень инерционности можно понизить, используя концепцию активного формирования управленческой парадигмы. Для целенаправленного воздействия на институты управленческой парадигмы необходимо:
- выявить формы проявления противоречий управленческой парадигмы и управляемых систем ;
- выявить контролируемые
факторы, формирующие
Модели программирования
Структурное программирование
Структурное программирование - методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.
В соответствии с данной методологией любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
- последовательное
исполнение — однократное
- ветвление
— однократное выполнение
- цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
Разработка программы ведётся пошагово, методом «сверху вниз».
Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.
Методология
структурного программирования появилась
как следствие возрастания
Наиболее сильной критике со стороны разработчиков структурного подхода к программированию подвергся оператор GOTO (оператор безусловного перехода), имевшийся тогда почти во всех языках программирования. Неправильное и необдуманное использование произвольных переходов в тексте программы приводит к получению запутанных, плохо структурированных программ (т.н. спагетти-кода), по тексту которых практически невозможно понять порядок исполнения и взаимозависимость фрагментов.
Следование принципам структурного программирования сделало тексты программ, даже довольно крупных, нормально читаемыми. Серьёзно облегчилось понимание программ, появилась возможность разработки программ в нормальном промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволило разрабатывать достаточно крупные для того времени программные комплексы силами коллективов разработчиков, и сопровождать эти комплексы в течение многих лет, даже в условиях неизбежных изменений в составе персонала.
Методология
структурной разработки программного
обеспечения была признана «самой сильной
формализацией 70-х годов». После этого
слово «структурный» стало модным в отрасли,
и его начали использовать везде, где надо
и где не надо. Появились работы по «структурному
проектированию», «структурному тестированию»,
«структурному дизайну» и так далее. В
общем, произошло примерно то же самое,
что происходило в 90-х годах и происходит
в настоящее время с терминами «объектный»,
«объектно-ориентированный» и «электронный».
Перечислим
некоторые достоинства
1. Структурное
программирование позволяет
2. В структурированных
программах логически
3. Сильно
упрощается процесс
Функциональное программирование
Функциона́льное программи́рование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательность изменения состояний (в значении, подобном таковому в теории автоматов). Функциональное программирование не предполагает изменяемость данных (в отличие от императивного, где одной из базовых концепций является переменная).
На практике отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции взаимодействуют и изменяют уже определённые данные. Таким образом, в императивном программировании, при вызове одной и той же функции с одинаковыми параметрами можно получить разные данные на выходе, из-за влияния на функцию внешних факторов. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат в обоих случаях, входные данные не могут измениться, выходные данные зависят только от них.
λ-исчисления являются основой для функционального программирования, многие функциональные языки можно рассматривать как «надстройку» над ними.
Наиболее известными языками функционального программирования являются:
1. XQuery
2. Haskell — чистый функциональный. Назван в честь Хаскелла Карри.
3. LISP (Джон
МакКарти, 1958, множество его потомков,
наиболее современные из
4. ML (Робин Милнер, 1979, из ныне используемых диалектов известны Standard ML и Objective CAML).
5. Miranda (Дэвид Тёрнер, 1985, который впоследствии дал развитие языку Haskell).
6. Erlang — (Joe Armstrong, 1986) функциональный язык с поддержкой процессов.
7. Nemerle —
гибридный функционально/
8. F# - функциональный язык для платформы .NET
Ещё не полностью
функциональные изначальные версии
и Lisp и APL внесли особый вклад в создание
и развитие функционального
Как правило, интерес к функциональным языкам программирования, особенно чисто функциональным, был сугубо научный, нежели коммерческий. Однако, таким примечательным языкам как Erlang, OCaml, Haskell, Scheme (после 1986) а так же специфическим R (статистика), Mathematica (символическая математика), J и K (финансовый анализ), и XSLT (XML) находили применение в индустрии коммерческого программирования. Такие широко распространенные декларативные языки как SQL и Lex/Yacc содержат некоторые элементы функционального программирования, они остерегаются использовать переменные. Языки работы с электронными таблицами также можно рассматривать как функциональные.
Многие нефункциональные языки, такие как C, C++ и C# могут вести себя как функциональные при использовании указателей на функцию, в соответствие с библиотекой <functional> и λ-исчислениями.
λ-исчисления
позволили осуществить
Первым функциональным языком был Lisp, созданный Джоном МакКарти в период его работы в Массачусетском технологическом институте в начале пятидесятых. Lisp ввел множество понятий функционального языка, хотя при этом исповедовал не только парадигму функционального программирования. Более поздние Scheme и Dylan были попытками упростить и усовершенствовать Lisp.
Язык обработки информации (ИПЛ) иногда определяется как самый первый машинный функциональный язык. Это язык ассемблерного типа для работы со списком символов. У него было понятие «генератор», использующий функцию в качестве аргумента, а так же, поскольку язык ассемблерного уровня, он может позиционироваться как язык имеющих функции высшего порядка. Хотя в целом ИПЛ акцентирован на использование императивных понятий.
Кеннет Е. Айверсон разработал язык APL в начале шестидесятых, документировав его в своей книге A Programming Language. APL оказал значительное влияние на FR-язык, созданный Джоном Бэкусом. В начале девяностых Айверсон и Роджер Хьюи создали преемника APL — язык программирования J. В середине девяностых Артур Витни, ранее работавший с Айверсоном, создал язык K, который впоследствии использовался в финансовой индустрии на коммерческой основе.
В семидесятых в университете Эдинбурга Робин Милнер создал язык ML, а Дэвид Тернер начинал разработку языка SASL в университете Сент-Эндрюса и, впоследствии, язык Miranda в университете города Кент. В конечном итоге на основе ML были созданы несколько языков, среди которых наиболее известные Objective Caml и Standard ML. Так же в семидесятых осуществлялась разработка языка программирования по принципу Scheme (реализация не только функциональной парадигмы), получившего описание в известной работе «Lambda Papers», а так же в книге восемьдесят пятого года «Structure and Interpretation of Computer Programs», в которой принципы функционального программирования были донесены до более широкой аудитори