Шматварыянтнасць. вылічальны эксперымент


Г л а в а 4

шматварыянтнасць

Канфігурацыйныя пабудовы, разбіраліся ў папярэдніх раздзелах, могуць выкарыстоўвацца практычна ўсюды, дзе патрабуецца распрацоўка досыць складаных праграм. Вобласць ужывання варыянтнасць праграмавання, пра які пойдзе гаворка ў дадзенай частцы, таксама вельмі шырокая. (Дастаткова ўспомніць варыянтныя фрагменты, настраіваюць дадатак на тую ці іншую вылічальную платформу, - з імі, верагодна, шматлікім даводзілася мець справу.) Але адносны вага маніпуляцый над варыянтамі ў агульным аб'ёме работ часцяком аказваецца не такім ужо прыкметным, з-за чаго патрэбнасці ў рацыянальным іх афармленні адсоўваюцца на задні план.
Існуе, аднак, важны клас задач, для якога эфектыўнае забеспячэнне шматварыянтнасці зусім неабходна, больш за тое, яно ператвараецца ў цэнтральную праблему арганізацыі праграмавання. Гэты клас задач - вылічальны эксперымент.


4.1. вылічальны эксперымент

Вылічальны эксперымент - метад вывучэння прыладаў або фізічных працэсаў з дапамогай матэматычнага мадэлявання. Ён мяркуе, што ўслед за пабудовай матэматычнай мадэлі праводзіцца яе колькасную даследаванне, якое дазваляе «прайграць» паводзіны доследнага аб'екта ў розных умовах або ў розных мадыфікацыях [ Самарскі 1979 ; Гарбуноў-пасадзяць, 1990 ].
Колькасную даследаванне мадэлі дае магчымасць вызначаць разнастайныя характарыстыкі працэсаў, аптымізаваць канструкцыі або рэжымы функцыянавання праектаваных прылад. Больш за тое, здараецца, што падчас вылічальнага эксперыменту даследчык нечакана адкрывае новыя працэсы і ўласцівасці, пра якія яму раней нічога не было вядома.

4.1.1. Сфера прымянення. Вылічальны эксперымент займае прамежкавае становішча паміж натурных эксперыментам і аналітычным даследаваннем.
Натурный (фізічны) эксперымент пры належнай пастаноўцы можа, наогул кажучы, даць вычарпальныя і надзейныя вынікі. І ўсё ж у многіх выпадках перавага аддаецца вылічальным эксперыменту.
Справа ў тым, што ў вылічальным эксперыменце ў ролі доследнай ўстаноўкі выступае не канкрэтнае фізічная прылада, а праграма. Яе пабудова і наступныя мадыфікацыі, як правіла, патрабуюць істотна меншых выдаткаў, чым падобныя маніпуляцыі над рэальным аб'ектам.
Акрамя таго, у доследнай ўстаноўцы нярэдка проста немагчыма бывае узнавіць некаторыя крытычныя рэжымы або экстрэмальныя ўмовы. Таму матэматычнае мадэляванне можа апынуцца практычна адзіна магчымым спосабам даследаванні.
Пры аналітычным падыходзе гэтак жа, як і ў вылічальным эксперыменце, будуецца матэматычная мадэль. Але даследуецца гэтая мадэль выключна з дапамогай аналітычных выкладак, без прыцягнення якіх-небудзь лікавых метадаў. Калі аналітычных выкладак аказваецца дастаткова, то дадзены падыход прыводзіць да строгага дакладнаму вырашэнню.
Аднак на практыцы, як гэта ні парадаксальна, аналітычнаму падыходу звычайна адводзіцца роля інструмента для (параўнальна хуткага) атрымання грубых ацэнак. Тлумачыцца гэта тым, што аналітычнымі выкладкамі атрымоўваецца абмежавацца толькі для нескладаных, моцна спрошчаных мадэляў рэальных працэсаў. Якое атрымліваецца тут строгае аналітычнае рашэнне на самай справе ў сілу зыходнага огрубления мадэлі аказваецца вельмі далёкім ад дасканаласці. Наадварот, лікавыя метады, якія прымяняюцца ў вылічальным эксперыменце, даюць магчымасць вывучаць больш складаныя мадэлі, дастаткова поўна і дакладна адлюстроўваюць доследныя працэсы.
Адзначаныя годнасці вылічальнага эксперыменту вывелі яго ў лік асноўных метадаў даследавання такіх буйных фізічных і інжынерна-тэхнічных праблем, як задачы ядзернай энергетыкі, асваення касмічнай прасторы і інш. Праграмныя комплексы, якія абслугоўваюць вылічальны эксперымент, аб'ёмныя і складаныя, у іх стварэнне уцягнуты шматлікі атрад праграмістаў. Таму асаблівую актуальнасць набывае вывучэнне ўзнікаюць тут канфігурацыйных пабудоў, якія, як будзе відаць з далейшага выкладу, пастаянна знаходзяцца ў цэнтры ўвагі ўдзельнікаў такога роду распрацовак.

4.1.2. Цыкл вылічальнага эксперыменту. У цыкле вылічальнага эксперыменту можна вылучыць наступныя этапы (мал. 4.1).



Мал. 4.1. Этапы вылічальнага эксперыменту

Э т а п 1. Пабудова матэматычнай мадэлі (складанне раўнанняў, якія апісваюць доследнае з'ява).
Э т а п 2. Выбар лікавых метадаў разліку (пабудова дыскрэтнай мадэлі, апраксімуецца зыходную матэматычную задачу, лагічнага схемы, распрацоўка вылічальнага алгарытму і т. Д.).
Э т а п 3. Стварэнне праграмы, якая рэалізуе вылічальны алгарытм.
Э т а п 4. Правядзенне разлікаў і апрацоўка атрыманай інфармацыі.
Э т а п 5. Аналіз вынікаў разлікаў, параўнанне (калі гэта магчыма) з натурных эксперыментам.

Звычайна на апошнім (5-м) этапе даследчык прыходзіць да высновы аб тым, што неабходна ўнесці пэўныя змены ў рашэнні, прынятыя на этапах 1, 2 ці 3.
Так, можа высьветліцца, што пабудаваная мадэль недастаткова добра адлюстроўвае асаблівасці доследнага з'явы. У гэтым выпадку мадэль карэктуецца, ўносяцца адпаведныя папраўкі ў лікавыя метады і рэалізуюць іх праграмы і выконваецца новы разлік. Тым самым цыкл вылічальнага эксперыменту прайграваецца ў поўным аб'ёме.
Пры аналізе вынікаў могуць быць выяўленыя якія-небудзь недахопы выкарыстоўваюцца лікавых метадаў, звязаныя, у прыватнасці, з меркаваннямі дакладнасці або эфектыўнасці. Змена метадаў цягне за сабой змяненне адпаведных праграм і т. Д. Інакш кажучы, цыкл паўтараецца ў некалькі скарочаным выглядзе (этапы 2-5).
Нарэшце, можа апынуцца няўдалым некаторы праграмнае рашэнне, напрыклад абраны спосаб працы з вонкавай памяццю. Перагляд такіх рашэнняў прыводзіць да паўтарэння этапаў 3-5.

4.1.3. Асаблівасці праграмавання. Зразумела, цыклы, падобныя цыкле вылічальнага эксперыменту, ўзнікаюць практычна ў любым хоць трохі складаным праграмным праекце. Самая першая версія праграмы звычайна чым-небудзь не задавальняе распрацоўніка або заказчыка, і прыходзіцца ўдакладняць пастаноўку задачы, паляпшаць асобныя алгарытмы і т. Д. Аднак у большасці выпадкаў досыць бывае выканаць некалькі цыклаў, якія патрабуюць параўнальна невялікіх намаганняў, і праграма здабывае жаданы выгляд.
Зусім інакш ідзе справу ў вылічальным эксперыменце. Тут праграма мысліцца як эксперыментальная ўстаноўка, ад першых досведаў з якой наўрад ці варта чакаць колькі-небудзь цікавых вынікаў. Дадзеныя першых досведаў паслужаць ўсяго толькі адпраўной кропкай працяглага працэсу зменаў і удасканаленняў ўстаноўкі, які толькі і здольны прывесці да досыць абгрунтаваным зняволенняў аб доследным аб'екце.
Такім чынам, з'яўленне першапачатковай версіі праграмы толькі ў самых агульных рысах вызначае кірунак даследаванняў. Асноўная ж праца па праграмаванні яшчэ наперадзе - яна звязаная з шматразовымі мадыфікацыямі праграмы, якія адлюстроўваюць эвалюцыю матэматычнай мадэлі і метадаў яе разліку. Лік цыклаў вылічальнага эксперыменту, кожны з якіх спалучаны з мадыфікацыяй разліковай праграмы, нярэдка дасягае дзясяткаў тысяч. Таму рацыянальная арганізацыя такіх мадыфікацый - ключ да эфектыўнага праграмаванні дадзенага класа задач.
Працягваючы паралель з натурных эксперыментам, можна заўважыць, што там звычайна не спяшаюцца выкідваць на сметнік асобныя вузлы, выключаныя цi замененыя ў эксперыментальнай ўсталёўцы пры правядзенні чарговага вопыту: яны яшчэ не раз могуць спатрэбіцца пасля. Аналагічна і рашэнні (а разам з імі і адпаведныя ім фрагменты праграм), пераглядаем на чарговым цыкле вылічальнага эксперыменту, як правіла, не адкідаюцца і могуць выкарыстоўвацца затым для іншых разлікаў. Напрыклад, метад, які апынуўся непрыдатным для адной мадэлі, цалкам можа падысці для разліку наступнай мадэлі і т. Д.
Такім чынам, галоўны кірунак дзейнасці праграміста, занятага вылічальных эксперыментам, - не ў стварэньні новых, а развіццё існуючых праграм. Гэта развіццё ажыццяўляецца, як правіла, не за кошт замены наяўных модуляў іх больш дасканалымі версіямі, а за кошт пашырэння: ўключэння ў праграмны фонд ўсё новых і новых модуляў, якія адлюстроўваюць розныя рашэнні, што прымаюцца ў ходзе эксперыменту.
Назапашваецца модулі могуць затым камбінавацца ў самых разнастайных спалучэннях, дазваляючы тым самым правесці досыць сістэматычнае і глыбокае даследаванне. Патрэба ў падобных маніпуляцыях над модулямі рэгулярна ўзнікае ў сувязі з тым, што даследчык пастаянна канструюе новыя варыянты мадэлі, якія спалучаюць у сабе тыя ці іншыя што выконваліся калі-небудзь змены або ўдакладненні. Такім чынам, якая цікавіць нас шматварыянтнасць праграм вылічальнага эксперыменту з'яўляецца заканамерным вынікам першапачатковай шматварыянтнасці мадэлі.
Складанасць рэалізуюцца матэматычных мадэляў, а таксама неабходнасць захоўвання шматлікіх варыянтных модуляў прыводзяць да таго, што характэрныя памеры праграмнага фонду вылічальнага эксперыменту аказваюцца даволі вялікімі. Колькасць удзельнiкаў у разліках модуляў тут нярэдка дасягае некалькіх тысяч, а сумарная даўжыня тэкстаў праграм - сотняў тысяч радкоў.
Арганізаваць эфектыўнае функцыянаванне і развіццё гэтак шырокага, складанага і спецыфічнага праграмнага гаспадаркі вельмі нялёгка. Тым не менш жыццё паказала, што ўсе якія ўзнікаюць тут цяжкасці цалкам пераадольныя - метадам вылічальнага эксперыменту былі паспяхова вырашаны многія важныя практычныя задачы. Гісторыя праграмавання задач вылічальнага эксперыменту налічвае звыш трох дзесяцігоддзяў, і за гэты час назапашаны вельмі значны вопыт, які дазваляе казаць пра існаванне пэўнай тэхналогіі працы з Шматварыянтнасць праграмамі. Гэтая тэхналогія апынулася досыць надзейнай і эфектыўнай; менавіта дыхтоўнасцю якая ўжывалася тэхналогіі тлумачыцца жыццеўстойлівасць вядомых праграмных рэалізацый вылічальнага эксперыменту.
У задачах вылічальнага эксперыменту ў поўнай меры выяўляюцца практычна ўсе спецыфічныя асаблівасці шматварыянтнасць праграм. У той жа час вылічальны эксперымент з'яўляецца найбольш буйным спажыўцом тэхналогіі шматварыянтнасці. Таму выразы «праграмаванне задач вылічальнага эксперыменту» і «стварэнне шматварыянтнасць праграм» часам будуць выкарыстоўвацца як сінонімы.