Забонҳои алгоритмӣ ва мафҳуми алгоритм

Ба дигарон равон намоед

Барномасозӣ аз сабти барнома бевосита дар намуди фармонҳо барои компютер (дар намуди коди мошинӣ, чи тавре ки барномасозон мегӯянд) оғоз ёфта буд. Дертар барои сабуктар гардонидани барномасозӣ забони Ассемблер ихтироъ карда шуд. Ин забон имконият медиҳад, ки коди мошинӣ дар намуди рамзӣ навишта шавад. Масалан, ба барномасоз азёд донистани коди ададии амали ҷамъ лозим набуда, ба ивази ин барномасоз метавонад аз ишораи рамзии ADD истифода барад. Забони Ассемблер аз маҷмӯи фармонҳои компютери конкретӣ вобаста аст. Он барои сохтани барномаҳои хурде, ки суръати баландро талаб мекунанд, бисёр қулай аст. Лекин иҷро кардани лоиҳаҳои калон дар забони Ассемблер душвор аст.

Душвории асосӣ ин аст, ки барномаи дар Ассемблер сохташуда ба сохти компютери конкретӣ вобаста буда, ба машинаҳои дигар гузаронида намешавад. Ҳангоми мукаммал гардонидани мошина ҳамаи барномаҳои дар Ассемблер навишташударо азнав навиштан зарур мегардад.

Қариб баробари пайдошавии компютерҳо забонҳои савияи баланд, яъне забонҳои аз сохти компютери конкретӣ вобастанабуда, пайдо шуданд. Барои иҷро намудани барномаи забони савияи баланд, онро аввал ба забони фармонҳои машина тарҷума кардан зарур аст. Барномаи махсусе, ки чунин тарҷумаро иҷро мекунад, транслятор (translator) ё ки компилятор (compiler) номида мешавад. Баъдан, барномаи тарҷумашуда бевосита бо компютер иҷро карда мешавад. Инчунин имконияти тарҷумаи барнома ба забони мобайние, ки аз сохти компютери конкретӣ вобаста нест, мавҷуд аст. Баъд, барномаи дар забони мобайнӣ навишташуда аз тарафи барномаи махсусе, ки интерпретатор ном дорад, иҷро карда мешавад. Боз, тарзе мавҷуд аст, ки порчаи иҷрошавандаи барнома аз забони мобайнӣ ба забони фармонҳои машинӣ бевосита пеш аз иҷро шуданаш тарҷума мешавад.

Забонҳои машҳуртарини компилятсияшаванда ин Си, С++, Фортран, Паскал. Забонҳои интерпретатсияшаванда асосан забонҳои объектнигаронидашуда, ба мисоли Java, Visual Basic, С#, PHP. Ҳамаи онҳо дар аввал ба забони мобайнӣ тарҷума мешаванд: барои Java ин байткоди забони Java, барои Visual Basic ва C# ин забони мобайнии Intermediate Language ё ки IL аст, ки он яке аз қисмҳои асосии платформаи “.Net”-и ширкати Microsoft мебошад. Масалан, барномаи JVM (Java Virtual Machine) – Машинаи Виртуалии Java коди дар забони Java навишташударо тарҷума карда, ба иҷро шудан омода месозад. Таърихан яке аз аввалин забонҳои савияи баланд Фортран буд. Ин забон бениҳоят бобарор баромад, он содда ва бисёр самаранок аст. То ҳозир қисми калони барномаҳои илмӣ ва муҳандисӣ дар Фортран навишта шудаанд. Бо вуҷуди ин, дар 20 соли охир барномасозон забони Си ва гурӯҳи забонҳои бо он алоқаманд: С++, Java ва C#-ро мепазиранд.

Дигар воқеаи муҳим дар таърихи забонҳои алгоритмӣ ин сохта шудани забони Алгол-60 (ALGOL-60 аз ALGOrithmic Language) мебошад. Пайдоиши забони Алгол-60 бо инкишофи муносибати сохторӣ ба барномасозӣ алоқаманд аст. Дар барномасозии сохторӣ дохили ҳамдигар ҷойгир кардани сохторҳои забон татбиқ карда мешавад. Воҳиди асосии забон оператор аст. Оператор метавонад содда ва таркибӣ бошад. Оператори таркибӣ худ аз чанд операторҳое, ки ба блок муттаҳид шудаанд, иборат аст. Забони Алгол-60 ба инкишофи забонҳои алгоритмӣ кӯмак кардааст, ворисони он забонҳои Паскал, Modula-2, Oberon, Delphi мебошанд. Ба ҳамаи ин нигоҳ накарда, забони Алгол-60 аз Фортран бадтар ҳисобида мешавад. Имконияти навиштани як зербарнома дохили дигар зербарнома, механизми нокулайи додугирифти параметрҳои зербарнома мисоли норасогиҳои ин забон ҳисобида мешаванд.

Забони Паскал ҳамчун ислоҳи Алгол-60 пайдо гашт, лекин ин забон низ носарогии муҳими Алгол-60ро соҳиб гашта буд: дохили ҳамдигар будани зербарномаҳо. Инчунин, дар шакли аввалаи забони Паскал имконияти ҷудо кардани барнома ба якчанд файл мавҷуд набуд. Ин норасогиҳо баъдан аз тарафи муаллифи он, олим ва муаллими машҳури Швейцария Никлаус Вирт дар забонҳои Modula-2 ва Oberon ислоҳ гардиданд. Дар забони ҳозира забони Паскал дар таълими барномасозӣ истифода шавад ҳам, дар барномасозии амали қариб истифода намешавад. Вориси он Delphi дар амалияи барномасозӣ барои муҳити Windows хело машҳур аст.

Аз ҳама забони бобарои барномасозӣ забони Си аст ва силсилаи забонҳои бо он алоқаманд C++, Java, C# низ мавҷуданд. Забони Си на аз тарафи олимони назария, балки бо барномасозони амалие, ки бар илова маданияти баланди математикӣ доштанд, офарида шудааст. Забон охири солҳои 60-уми асри XX сохта шуда буд. Воқеан маҳз ҳамин забон имконият дод, ки барномасоз аз Ассемблер раҳои ёбад. Масалан, қариб тамоми матни муҳити оператсионии Unix дар забони навишта шудааст ва ба шарофати ин аз компютери конкретӣ вобаста нест.

Қадру қимати асосии забони Си дар соддагӣ ва мураттабии он аст. Си аз норасогии воқеъ будани як зербарнома дар дохили дигараш фориғ аст. Дар Си ба ивази калимаи зербарнома калимаи функсия истифода мешавад ва ягон функсия дар дохили худ функсияи дигарро надорад. Тағйирёбандаҳо қатъӣ ба глобалӣ ва локалӣ ҷудо шудаанд. Ҳар як тағйирёбандаи истифодашаванда ҳатман бояд эълон гардад. Барномасозе, ки дар Си барнома месозад, ҳама вақ аниқ медонанд, ки ин барнома чи тавр иҷро мешавад. Мафҳуми ишоракунак (pointer), тағйирёбандаҳои статикӣ ва автоматики забони Си сохтори компютерҳои ҳозираро инъикос мекунанд, бинобар ин барномаҳои дар Си навишташуда барои ислоҳ қулай мебошанд.

Дар замони ҳозира қисми зиёди барномаҳо дар забонҳои Си ва С++ навишта мешаванд. Интерфейси ҳаргуна муҳити оператсионӣ (бо ном API – Application Programming Interface), яъне маҷмӯи фармонҳои системавие, ки барои созандагони барномаҳои амалӣ офарида шудаанд, дар асл маҷмӯи функсияҳо (зербарномаҳо) дар Си мебошанд. Забонҳои объектнигаронидашудаи С++, Java, C# низ дар асоси забони Си сохта шудаанд.

Мафҳуми алгоритм – яке аз мафҳумҳои асосии барномасозӣ аст. Алгоритм – ин пайдарпаии фармонҳо ба иҷрокунанда, ки дар натиҷаи иҷрои ин пайдарпаӣ иҷрокунанда масъалаи гузошташударо ҳал мекунад. Алгоритм дар забони расмие, ки ба гуногунфаҳмӣ роҳ намедиҳад, навишта мешавад. Иҷрокунанда – одам, компютер, дастгоҳи автоматӣ ва ғайра буда метавонад. Иҷрокунанда бояд механикӣ ва бе баҳсу мунозира ҳамаи фармонҳои дар таркиби алгоритм бударо иҷро карда тавонад.

Сабти алгоритм дар забони расмӣ барнома (program) номида мешавад. Дар баъзе мавридҳо худи мафҳуми алгоритм бо сабти он иваз карда мешавад. Яъне калимаҳои «алгоритм» ва «барнома» қариб синоним ҳастанд. Фарқи хурдакак, лекин асосӣ ҳангоми истифодаи калимаи «алгоритм» он аст, ки бо ин калима одатан ғояи асосии бунёди алгоритмро, ки барои ҳамаи забонҳои алгоритмӣ умумӣ аст, дар назар доранд. Калимаи «барнома» бошад фақат ба сабти алгоритм дар ягон забони расмии мушаххас алоқаманд аст.

Дар математика намудҳои гуногуни алгоритмҳо баррасӣ мегарданд – барномаҳо барои машинаҳои Тюринг, алгоритмҳои Марков, функсияҳои рекурсивӣ ва ғайра. Дар барномасозӣ қабул карда мешавад, ки ҳамаи забонҳои барномасозӣ баробарқувва мебошанд. Яъне ҳаргуна масъалаеро, ки ба алгоритми ҳал соҳиб аст, бо ҳаргуна забони барномасозӣ ҳал кардан мумкин аст. Интихоби забон дар ҳолати конкретӣ аз қулай будани абзорҳои (tools) ин забон барои масъалаи муоинашаванда вобаста аст. Масалан, забонҳои объектнигаронидашуда (object-oriented) барои барномасозии муҳитҳои тирезадор (window) қулай буда, забони Фортран дар ҳисобҳои илмӣ ва муҳандисӣ бомуваффақият истифода бурда мешавад.

Бисёрии забонҳои алгоритмии дар барномасозӣ истифодашаванда монандиҳо доранд. Лекин ҳангоми баёни ғояи алгоритм на ҳама вақт мувофиқи мақсад аст, ки он дар ягон забони конкретии барномасозӣ баён гардад, чунки баёни ғоя бо чизҳои номуҳим хира гаштанаш мумкин аст. Дар чунин ҳолатҳо аз забони алгоритмии бештар ба забони одамӣ наздик истифода мекунанд. Чунин забонро псевдокод низ меноманд. Барои мутахассис азнав навиштани барномаи дар псевдокод навишташуда ба забони конкретии барномасозӣ мушкил нест. Сабти алгоритм дар псевдокод дар бисёр ҳолатҳо аниқтар ва фаҳмотар аст. Псевдокод имконият медиҳад, ки тарзи баёни алгоритм интихоб карда шавад: аз овардани нақшаи умумии алгоритм то овардани нозукиҳои ҳар як қисми алгоритм.

Пседвокод моҳияти аксарияти забонҳои алгоритмиро дар бар мегирад.

Ҳакимов Раҳматҷон

Манба:   oftob.com

Маводҳои ҳамсон