Общая часть (часть 2) (2015) (by Кибитова) (1161598), страница 37
Текст из файла (страница 37)
9797 1.1. Краткий обзор основныхпарадигм программированияВ соответствии с концепцией фон-Неймана — основателя теоретической20.концепцииПарадигмыпрограммирования(функциональное,императивное,компьютернойтехники, процессоробрабатываетданные, вы-объектнополняя инструкции(команды), которые находятся в той же оперативнойориентированноепрограммирование)памяти, что и данные.Таким образом, можно выделить две основные сущности процесса об-Объектно-ориентированноепрограммирование(ООП) инструкций, и данные. Всеработки информации: код,как совокупностьпрограммы в соответствии с выбранной технологией программированияконцептуально организованы вокруг своего кода или вокруг своих данных.Рассмотримосновные обзорна сегодняшнийдень парадигмы программиро1.1.Краткийосновныхвания:парадигм программирования1.
Процессно-ориентированнаяпарадигма, при которой программапредставляет собой ряд последовательно выполняемых операций —В соответствииконцепцией фон-Нейманаоснователянатеоретическоймодельсфон-Неймана.При этом код —воздействуетданные.концепцииЯзыки,компьютернойтехники,процессоробрабатываетданные, выреализующие эту парадигму, называются процедурнымиполняя инструкции(команды), которыенаходятсяв той жеоперативнойили императивными.Такими языкамиявляются,например,C,памяти, чтоPascalи данные.и др.Такимобразом, можно выделить двеосновные присущностипроцессаоб2.
Объектно-ориентированнаяпарадигма,которойпрограммаработки информации:код,каккаксовокупностьсовокупностьинструкций,данные. Всерассматриваетсяфрагментовкода,и обрабатыпрограммывающихв соответствиисвыбраннойтехнологиейпрограммированияотдельные совокупности данных — объекты. Эти объектыконцептуальноорганизованыдругвокругсвоегопосредствомкода или вокругсвоих данных.взаимодействуютс другомтак называемыхинтерфейсов.При этомданные управляютдоступом к программирокоду.Рассмотримосновныена сегодняшнийдень парадигмывания: При повышении сложности алгоритма процессно-ориентированнаяпарадигмасталкивается с существеннымипроблемами.Переходк объект1.
Процессно-ориентированнаяпарадигма,при которойпрограмманым принципампрограммированияпозволяетзначительноулучшитьпредставляет собой ряд последовательно выполняемых операцийвнут—реннююмодельорганизациюпрограммы,в результатечего повышаетсяпроизвофон-Неймана.При этомкод воздействуетна данные.дительностьприразработке программныхкомплексов.Языки,реализующиеэту парадигму,называются процедурнымиили императивными.Такими языкамиявляются,например,времяC, паНарядус двумя вышеизложеннымиосновнымив настоящееPascalидр.радигмами программирования используются еще две парадигмы:2.1. Объектно-ориентированнаяпарадигма,парадигма.при которойпрограммаАппликативная или функциональнаяОсновнаяидеярассматриваетсякаксовокупностьфрагментовкода,обрабатыданного подхода заключается в формализованном определениивающихотдельныеданных —Такимобъекты.Эти объектыфункции,которуюсовокупностивыполняет программа.образом,вместовзаимодействуютдругсдругомпосредствомтакназываемыхинопределения последовательности состояний, через которые должентерфейсов.Приэтомданныеуправляютдоступомккоду.пройти компьютер, чтобы получить требуемый результат, необхоопределитьфункцию,алгоритмапри применениикоторой к исходнымПри димоповышениисложностипроцессно-ориентированнаяданнымполучаетсятребуемоерешение:парадигма сталкивается с существенными проблемами.
Переход к объектным принципам программирования позволяет значительно улучшить внутf (x) чего повышается произвореннюю организацию программы,y в=результатедительностьпри разработкепрограммныхкомплексов.Разработкапрограммыпри этом подходесводится к конструированиюсложнойфункцииизвышеизложеннымиимеющихся стандартныхпростыхфункций: время паНарядус двумяосновнымив настоящеерадигмами программирования используются еще две парадигмы:y = f1 ( f 2 ( f 3 (...), f 4 (...),...))1. Аппликативная или функциональная парадигма.
Основная идеяЯзыками,парадигму, являются,например,данного поддерживающимиподхода заключаетсятакуюв формализованномопределенииязыки LISPиML.Данныепритакомподходе,также,какикод,представфункции, которую выполняет программа. Таким образом, вместоопределения последовательности состояний, через которые долженпройти компьютер, чтобы получить требуемый результат, необхо6димо определить функцию, при применении которой к исходнымданным получается требуемое решение:y = f (x)Разработка программы при этом подходе сводится к конструированиюсложной функции из имеющихся стандартных простых функций:y = f1 ( f 2 ( f 3 (...), f 4 (...),...))димо определить функцию, при применении которой к исходнымданным получается требуемое решение:y = f (x)Разработка программы при этом подходе сводится к конструированиюсложной функции из имеющихся стандартных простых функций:y = f1 ( f 2 ( f 3 (...), f 4 (...),...))Языками, поддерживающими такую парадигму, являются, например,Объектно-ориентированноепрограммирование(ООП)языки LISP и ML.
Данные притаком подходе, так же,как и код, представ6ляютсясписками одинаковой структуры, значит, программа, работая подуправлением интерпретатора, может обрабатывать свой собственный код, какданные. в этом случае стирается грань между кодом и данными. Поэтомуодной из важных областей применения данной парадигмы являются системыискусственного интеллекта (ИИ).ПримечаниеОбрабатывать коды, как обрабатывают данные, можно и при использованиипроцессно-ориентированного подхода, однако, при этом программированиедолжно производиться в среде низкого уровня — на языке ассемблера.2.
Парадигма, основанная на использовании системы правил (парадигма логического программирования). При этом подходе операторы программы выполняются не в той последовательности,в которой они написаны, а на основе анализа разрешающих условий (РУ).Программа при такой парадигме состоит из списка пар:РУ1 → D1РУ 2 → D 2................РУ N → DNЗдесь D1 , D2 ,..., DN — действия, выполняемые в случае истинности соответствующих разрешающих условий РУ1 , РУ 2 ,..., РУ N .Выполнение программы заключается в циклической проверке разрешающих условий и выполнения действий, соответствующих разрешающимусловиям, в случае истинности последних.Примером языка логического программирования является языкPROLOG.Структура программы при логическом программировании концептуально связана с теоретической концепцией нормальных алгоритмов Маркова, представляющей алгоритм преобразования информации в виде совокупности подстановок:T11 → T12Функциональное программирование предполагает обходиться вычислением результатовT21 → T22 других функций, и не предполагает явногофункций от исходных данных и результатовхранения состояния программы.
Соответственно,не предполагает оно и изменяемость.............этого состояния (в отличие от императивного, где одной из базовых концепций являетсяTN 1и→TN 2переменная, хранящая своё значениепозволяющаяменять его по мере выполненияалгоритма).Операторы с разрешающими условиями и подстановки просматриваются циклически до обнаружения завершающего условия.В данном курсе рассматривается парадигма ООП.Концепции:Функции высших порядковОсновная статья: Функция высшего порядкаФункции высших порядков — это такие функции, которые могут принимать в качествеаргументов и возвращать другиефункции.[12] Математикитакую функциючаще называютОбъектно-ориентированноепрограммирование(ООП)Объектно-ориентированноепрограммирование(ООП)оператором, например, операторвзятия производнойили оператор интегрирования.Объектно-ориентированноепрограммирование(ООП)Рекурсияляютсясписками одинаковой структуры, значит, программа, работая подляютсяспискамиодинаковойструктуры,значит,программа,работаяподОсновнаястатья:Рекурсияляютсяспискамиодинаковойструктуры,значит,программа,работаяподуправлениеминтерпретатора,может обрабатыватьсвой собственныйкод,какуправлениеминтерпретатора,можетобрабатыватьсвойсобственныйкод,В функциональныхязыкахциклреализуетсяв видерекурсии.Строгоговоря, вуправлениеминтерпретатора,можетобычнообрабатыватьсвой собственныйкод,как какданные.в этомслучаестираетсяграньмеждукодоми данными.Поэтомуданные.вэтомслучаестираетсяграньмеждукодомиданными.Поэтомуфункциональнойпарадигмепрограммированиянет такогопонятия,как цикл.данные.в этомслучаестираетсягрань междуи данными.Поэтомуоднойизважныхобластейпримененияданной кодомпарадигмыявляютсясистемыоднойизважныхобластейпримененияданнойпарадигмыявляютсясистемыРекурсивныефункциивызываютсамисебя,позволяяоперациивыполнятьсяоднойиз важных областейпримененияискусственногоинтеллекта(ИИ).
данной парадигмы являются системы снова иискусственногоинтеллектаснова.Для использованиярекурсииможет потребоваться большой стек, но этого можноискусственногоинтеллекта(ИИ).(ИИ).Примечаниеизбежатьв случае хвостовой рекурсии. Хвостовая рекурсия может быть распознана иПримечаниеПримечаниеоптимизированакомпиляторомв код, получаемыйпослекомпиляциианалогичнойОбрабатывать коды,как обрабатываютданные, можнои прииспользованииОбрабатыватькоды,какобрабатываютданные,можноиприиспользованииОбъектно-ориентированноепрограммирование(ООП)Обрабатыватькоды, как обрабатываютданные,и прииспользованиипроцессно-ориентированногоподхода,однако,можнопри этомпрограммированиеитерациив императивномязыкепрограммирования.процессно-ориентированного подхода, однако, при этом программированиепроцессно-ориентированногоподхода,должно производиться в среденизкогооднако,уровня при— на этомязыкепрограммированиеассемблера.должнопроизводитьсяв среденизкого— на языкеассемблера.должнопроизводитьсяв среденизкогоуровняуровня— на языкеассемблера.2.
Парадигма,основаннаяна использованиисистемыправил(пара2. Парадигма,основаннаяна использованиисистемыправил(пара2. Парадигма,основаннаяна использованиисистемыправил(парадигмалогическогопрограммирования).Приэтомподходеопе-опедигмалогическогопрограммирования).Приэтомподходедигмалогическогопрограммирования).Приэтом подходе операторыпрограммывыполняютсяне внетойпоследовательности,раторыпрограммывыполняютсявпоследовательности,тойпоследовательности,раторыпрограммывыполняютсяневтойв которойонионинаписаны,а нааосновеанализаразрешающихуслов которойнаписаны,на основеанализаразрешающихв которойони написаны,а на основеанализаразрешающихусло-условийвий(РУ).(РУ).вий (РУ).В соответствиис концепциейфон-Неймана— основателятеоретическойПрограммаприпритакойпарадигмесостоитиз спискапар:Программатакойпарадигмесостоитизспискаконцепциикомпьютернойтехники,процессоробрабатываетданные, выПрограмма при такой парадигме состоит из списка пар: пар:РУ→Dполняя инструкции (команды), которыев той же оперативной1РУнаходятся1РУ1 →D1 1→ D1памяти, что и данные.РУ → D1.1.