Программ тәэминат төзүнең катлаулылыгы

Бу мәкаләдә без програм тәэминат, программалау телләре, аларның үсеше һәм кыскача концепцияләре турында сүз алып барырбыз. Хәзерге заманда программалар, программалау телләре белгечләр өчен генә түгел, киңрәк катлам кулланучылар өчен дә кирәк һәм бу гомуми белешмәләр һәркем өчен дә файдалы булыр дип уйлыйбыз.

Без катлаулы системалар белән әйләндереп алынган. Мәсәлән, шәхси санак; теләсә нинди агач, чәчәк, хайван; атомнан алып йолдызлар һәм галактикаларга кадәр теләсә кайсы материя; җәмгыять институтлары – корпорацияләр, берләшмәләр – катлаулы система мисаллары булып торалар.

Күпчелек катлаулы системалар иерархияле структурага ия. Ләкин барлык программ тәэминат та катлаулы түгел. Бер үк кеше проектлый, төзи һәм куллана торган кушымталар классы бар. Тик аларны куллану өлкәсе чикләнгән. Корпоратив программ тәэминат төзегәндә, сәнәгать өчен программалауны караганда катлаулылык сораулары килеп чыга. Программ тәэминат төзү катлаулылыгының дүрт төп сәбәбе бар:

· программа төзүгә заказ чыккан предмет өлкәсенең катлаулылыгы;

· программа төзү белән идарә итүнең катлаулылыгы;

· программаның җитәрлек сыгылмалы булуы кирәклеге;

· зур дискрет системаларны тасвирлауның катлаулылыгы.

  1. Декомпозиция

Декомпозиция – катлаулылык белән көрәшнең бер ысулы.

1нче рәс. Алгоритмик декомпозиция мисалы
1нче рәс. Алгоритмик декомпозиция мисалы
2 нче рәс. Объектка юнәлтелгән декомпозиция мисалы
2 нче рәс. Объектка юнәлтелгән декомпозиция мисалы

Системаны бәйсез астсистемаларга бүлеп, һәрберсен аерым эшләү зарур. Декомпозициянең түбәндәге ысулларын билгелиләр:

· алгоритмик декомпозиция (1 нче рәсем);

· объектка юнәлтелгән декомпозиция (2 нче рәсем).

2. Программалау телләренең кыскача тарихы

Югары дәрәҗәле программалау телләре үсешенең түбәндәге этапларын билгелиләр:

- Беренче буын телләре (1954-1958)

• FORTRAN 1 Математик формулалар

• ALGOL-58 Математик формулалар

- Икенче буын телләре (1959-1961)

• FORTRAN II Астпрограммалар

• ALGOL-60 Блоклы структура, мәгълүмат типлары

• COBOL Мәгълүматны тасвирлау, файллар белән эш

• LISP Исемлекләрне эшкәртү, күрсәткечләр, чүпне җыю

- Өченче буын телләре (1962-1970)

• PL/I FORTRAN+ALGOL+COBOL

• Pascal ALGOL-60 ның дәвам иттерүчесе, варисы

• Simula Класслар, мәгълүматны абстракцияләү

- Буныннан буынга күчүнең өзелүе (1970-1980)

• C Эффектив, нәтиҗәле югары дәрәҗәле тел

• FORTRAN 77 Блоклы структура, мәгълүмат типлары

- Объектка юнәлтелгән программалау үсеше (1980-1990)

• Smalltalk 80 Чиста объектка юнәлтелгән программалау теле

• C++ С + Simula

• Ada83 Катгый типлаштыру; Pascalнең көчле йогынтысы

- Инфраструктуралар барлыкка килү (1990-...)

• Java Блоклы структура, мәгълүмат типлары

• Python Объектка юнәлтелгән сценарийлар теле

• Visual C# Microsoft.NET мөхите өчен Java теленең конкуренты.

1 нче буын (3нче рәсем) башлыча фәнни һәм техник исәпләүләр өчен кулланыла, математик сүзлек. Телләр ассемблерның катлаулылыгыннан азат итәләр, бу санакның техник детальләренә игътибар итмәскә мөмкинлек бирә.

3нче рәс. Беренче буын телләре топологиясе
3нче рәс. Беренче буын телләре топологиясе

Беренче буын телләрендә язылган программалар мәгълүмат һәм астпрограммалардан торучы чагыштырмача гади структурага ия.

2 нче буын телләре (4 нче рәсем) алгоритмик абстракцияләргә басым ясый, бу үзлек программа эшләүчеләрне предмет өлкәсенә якынайта. Абстракт программ функцияләрне астпрограммалар рәвешендә тасвирларга мөмкинлек бирүче процедур абстракция барлыкка килә.

3 нче буын телләренә (5 нче рәсем) аппарат тәэминатның бәяләре кисәк кимүе, шул ук вакытта җитештерүчәнлеге экспоненциаль закон буенча артуы йогынты ясый. Телләр мәгълүматны абстракцияләргә мөмкинлек бирә һәм кулланучы үз мәгълүмат типларын тасвирлый ала.

4 нче рәс. Икенче буын телләре топологиясе
4 нче рәс. Икенче буын телләре топологиясе

1970 нче елларда конкрет мәсьәләләрне чишү өчен берничә мең программалау теле эшләнелә, ләкин аларның барысы диярлек юкка чыга. Вакыт сынавын узган, хәзерге вакытта билгеле булган берничә тел генә кала.

5 нче рәс. Өченче буын телләре топологиясе
5 нче рәс. Өченче буын телләре топологиясе

Модульләргә бергә үзгәртеләчәк астпрограммар җыела, ләкин аларны абстракцияләүнең яңа техникасы итеп карамыйлар.

1980 нче елларда объектка юнәлтелгән программалау көчле үсеш кичерә (6 нчы рәсем). Бу чор телләре программ тәэминатның объектка юнәлтелгән декомпозициясен башкарырга ярдәм итә. 90 нчы елларда зур күләмдә интеграллашкан сервислар тәкъдим итүче инфраструктуралар (J2EE, .NET) барлыкка килә.

6 нчы рәс. Объектка юнәлтелгән программалау топологиясе
6 нчы рәс. Объектка юнәлтелгән программалау топологиясе

Конструкциянең төп элементы булып астпрограмма түгел, логик яктан бәйле класслар һәм объектлардан торган модуль хезмәт итә.

3 . Программалауның төп парадигмаларына кыскача күзәтү

Санак техникасының теоретик концепциясенә нигез салучы фон-Нейман концепциясе буенча, мәгълүматны эшкәртү өчен процессор мәгълүмат белән бер үк җәһәт хәтердә булган инструкцияләрне (командаларны, күрсәтмәләрне) үти.

Шул рәвешле, мәгълүматны эшкәртү процессының төп ике асылын аерып күрсәтеп була: инструкцияләр җыелмасы булган код һәм мәгълүмат, бирелмәләр. Сайлап алынган программалау технологиясенә бәйле рәвештә барлык программалар да концептуаль яктан үзләренең кодлары яки үзләренең мәгълүмат җыелмалары тирәсендә оештырылган.

Бүгенге көндәге төп программалау парадигмаларын карап үтик:

1) Процесска юнәлтелгән парадигма, программа бер-бер артлы үтәлүче операцияләрдән тора – фон-Нейман моделе. Бу очракта код мәгълүматка тәэсир итә. Бу парадигманы гамәлгә ашыручы телләр процедур яки императив дип атала. Мондый телләр мисалы булып С, Раsса1, һ.б. лар тора.

2) Объектка юнәлтелгән парадигма, бу очракта программа мәгълүматның аерым җыелмаларын – объектларны эшкәртүче код фрагментлары берлеге итеп карала. Мондый объектлар бер-берсе белән интерфейс аша тәэсир итешәләр. Бу очракта мәгълүмат кодның үтәлүе белән идарә итә.

Алгоритмның катлаулылыгы артканда процесска юнәлтелгән парадигма алдында җитди проблемалар туа. Программалауның объектлы принципларына күчү программаның эчке оештырылуын яхшыртырга мөмкинлек бирә, моның нәтиҗәсе булып программ комплекслар эшләү вакытында нәтиҗәлелек арту тора.

Югарыда әйтеп үтелгән төп ике парадигма белән беррәттән хәзерге вакытта тагын ике парадигма кулланыла:

3) Аппликатив яки функциональ парадигма. Бу ысулның төп идеясы булып программа үти торган функцияне формаль яктан билгеләү тора. Шул рәвешле, нәтиҗә алу өчен санак үтәргә тиешле халәтләр эзлеклелеге билгеләү урынына бирелгән мәгълүматка кулланганда кирәкле нәтиҗә китереп чыгаручы функцияне билгеләргә кирәк:

¯y=f(¯x)

Бу очракта программа язу бирелгән стандарт гади функцияләрдән катлаулы функция төзүгә кайтып кала:

¯y=f1 (f2 (f3 (…),f4 (…),…))

Бу парадигманы кулланучы телләр булып, мәсәлән, LISP, Wolfram Mathematica һәм ML тора. Бу ысулны кулланганда мәгълүмат та, код та бертөрле структуралы тезмәләр белән күрсәтелә, димәк, программа, интерпретатор идарәсе астында эшләп, үз кодын мәгълүмат кебек эшкәртә ала. Бу очракта код белән мәгълүмат арасында аерма әкренләп югала. Шуңа күрә карала торган парадигманың мөһим куллану өлкәләренең берсе булып ясалма интеллект системалары тора.

Искәрмә. Кодларны мәгълүмат эшкәрткән кебек эшкәртү процесска юнәлтелгән алымны кулланганда да мөмкин, ләкин алай булганда программалау түбән дәрәҗәле мөхиттә – ассемблер телендә башкарылырга тиеш.

4) Кагыйдәләр системасын куллануга нигезләнгән парадигма (логик программалау парадигмасы). Бу алымны кулланганда программаның операторлары язылган тәртиптә түгел, рөхсәт итүче шартлар (русча разрешающие условия – РУ) анализы нигезендә үтәләләр.

Бу парадигма очрагында программа парлар исемлегеннән тора:

РУ1→D1
РУ2→D2
……….
РУN→DN

РУ1, РУ2, ...,РУN рөхсәт итүче шартлары дөрес булганда тиешле D1, D2, … DN гамәлләре үтәлә.

Программа эше рөхсәт итүче шартларны циклик рәвештә тикшерү һәм алар хак булганда тиешле гамәлләрне үтәүдән тора.

Логик программалау мисалы булып PROLOG теле тора.

Логик программалау вакытында программаның структурасы мәгълүматны эшкәртү алгоритмын алыштырып кую берлеге итеп күрсәтүче Марков нормаль алгоритмнары теоретик концепциясе белән концептуаль бәйләнгән:

T11→ T12
T21→ T22
……………..
TN1→ TN2

Рөхсәт итүче шартлар операторлары һәм алыштырып куюлар йомгаклаучы шарт табылганчы циклик рәвештә карап чыгыла.

Без бу курста объектка юнәлтелгән парадигмага бәйле сорауларны карарбыз.

4. Объектка юнәлтелгән программалауның (ОЮП) төп принциплары

ОЮПның үзәк идеясы булып «абстракция» төшенчәсен гамәлгә ашыру тора. Абстракциянең мәгънәсе шунда: теләсә нинди катлаулы затны, төшенчәне эчке төзелеше һәм эше детальләренә игътибар итмичә, бербөтен итеп карап, гамәлләрне дә аның өстендә шул рәвешле эшләп була.

Программ комплекс төзегәндә кирәкле абстракцияләрне билгеләү мөһим.

Мисал: Дәресләр расписаниесе төзү.

Кирәкле абстракцияләр: студент, лекцияләр курсы, укытучы, аудитория.

Операцияләр:

- Студентны группага билгеләү

- Группага аудитория билгеләү

Абстракцияләр билгеләүнең төп ысулларының берсе – иерархияле классификация концепциясен куллану. Аның асылы булып катлаулы системаларның гадиерәк фрагментларга (кисәкләргә) бүленүе тора.

Гомумән алганда барлык катлаулы системалар да иерархияле, аларның иерархия дәрәҗәсе абстракцияләрнең төрле дәрәҗәсен (биеклеген, күрсәткечен) чагылдыра. Һәр конкрет мәсьәләнең үз дәрәҗәсе карала. Абстракциянең иң түбән дәрәҗәсен сайлау шактый ирекле. Бер очракта иң түбән дип сайланган дәрәҗә башка проектта хәйран югары абстракция дәрәҗәсе булырга мөмкин.

Тип иерархиясе һәм структура иерархиясен аералар, без аларны класслар структурасы һәм объектлар структурасы дип атарбыз.

Барлык объектка юнәлтелгән программалау телләрендә түбәндәге төп механизмнар (постулатлар) реализацияләнгән:

· Инкапсуляция

· Мирас итеп алу

· Полиморфизм

Бу механизмнар абстракцияләрне билгеләү һәм куллану өчен мөһим.

1) Инкапсуляция – кодны һәм код тәэсир итә торган мәгълүматны бәйләүче, шул ук вакытта аларны бу код өчен тышкы (чит) булган код тарафыннан кирәк булмаган тәэсир итүдән саклаучы механизм. Код һәм мәгълүмат белән эш мөмкинлеге интерфейс тарафыннан катгый саклана, контрольләнә.

ОЮП кулланганда инкапсуляция нигезе булып класс тора.

Инкапсуляция механизмы классның кайбер детальләрен кулланучыдан яшерергә (капсула эченә куярга) мөмкинлек бирә, бу гамәл класс объектлары белән эшләүне җиңеләйтә.

2) Мирас итеп алу – бу механизм ярдәмендә бер объект (төзелгән классныкы, бала классныкы) икенче объектның (баба классныкын, база классыныкын) сыйфатларын үзенә ала. Мирас итеп алуны кулланганда яңа объектны өр яңадан тасвирлау мәҗбүри түгел, шуңа программлаучының эше күпкә җиңеләя. Мирас итеп алу объектка үзенең баба объекты (баба, база классыннан) атрибутларын (үзлекләрен, сыйфатларын) алырга, ә үзе өчен үзенә генә хас булган, уникаль характеристикаларны билгеләргә мөмкинлек бирә.

Мирас итеп алу иерархияле классификация концепциясенә туры килүче бик мөһим төшенчә.

3) Полиморфизм – бер үк интерфейсны гамәлләрнең гомуми классына куллану мөмкинчелеге бирә торган механизм.

Мисал: Саклау өчен 3 төрле стәк бар:

· бөтен саннар өчен

· йөзмә нокталы саннар өчен

· символлар өчен

Объектка юнәлтелгән программада өч идарә итүче астпрограмма урынына бер генә астпрограмма (бер интерфейс) кирәк булачак.

Полиморфизмның гомуми концепциясе: бер интерфейс – күп метод, ысул.

Конкрет очракка карата кирәкле ысулны (методны) сайлау компиляторга йөкләнә. Программалаучыга берничә урынына бер интерфейсны истә калдыру һәм куллану җитә, бу шулай ук эшне җиңеләйтә.

Статик (компиляция этабында функция һәм операцияләрне яңадан йөкләү ярдәмендә башкарыла), динамик (программа үтәлгән вакытта виртуаль функцияләр механизмы ярдәмендә башкарыла) һәм параметрик (компиляция этабында шаблоннар механизмын кулланып башкарыла) полиморфизм була.

Искәрмә. Каралган абстракция, инкапсуляция, мирас итеп алу, полиморфизм төшенчәләре ОЮП парадигмасына гына хас түгел. Бөтен саннар һәм йөзмә нокталы саннар өстендә арифметик гамәлләр процессорда төрле алгоритмнар буенча башкарыла. Бу очракта полиморфизм анык түгел, яшерен күренә.

116 views·1 share