Ассемблерлеу тілі

**Ассемблер тілі** (; ) — адрестер мен операцияларға символдық атау қою мүмкіндігі бар, нақты бір компьютердің командалар жиынымен тығыз байланысқан бағдарламалау тілі; әдетте, ассемблер коды машиналық бір кодқа ауыстырылады.
## Сипаттамасы
Ассемблер тілінде программаның барлық элементтері таңбалармен берілетіндігі оның басты артықшылығы болып табылады.Басқаша айтқанда ассамблер тілінің машина командаларының цифрлық кодтарын әріптермен немесе әріп-цифрлармен таңбалауға және деректердің таңбалық аттарын пайдалануға мүмкіндік беретіндігі оның машина тілінен айырмашылығы болып табылады. Ассамблер тілінің командаларын машина тіліне аударғанда машина командасын білдіретін әрбір оператор осы команданың цифрлық кодтарымен алмастырылады. Командалардың таңбалық аттарын олардың екілік кодтарына түрлендіру жұмысы программа жасаушы адамды өте қиын әрі күрделі машақаты көп жұмыстан босататын және бұл жағдайда құтылуға болмайтын қателіктерден құтқаратын арнайы программа-ассамблерге жүктеледі. 
Ассамблер тілінде программалауда пайдаланылатын таңбалық аттар программаның семантикасын, ал команданың қысқартылып берілген атаулары оның негізгі функциясын білдіреді. Мысалы, ADD-қосу, SUB-азайту, PARAM-параметр т.с.с.Мұндай аттарды программа жасаушылар оңай есінде сақтайтын болады. 
Ассамблер тілінде программа жасау үшін машина тілінде программа жасағандағыдан көп күрделі құралдар қажет болады: ‘

• сыртқы құрылғылармен жабдықталған дербес компьютер; 
• процессордың түріне қарай резиденттік немесе жүйелік программалар. 

Машина тіліне қарағанда ассамблер тілі едәуір күрделі, программаларды ұтымды жазуға және жөндеуге мүмкіндік береді. 
Ассамблер тілі машинаға бағдарланған тіл, яғни процессордың әрбір командасына таңбалық ат меншіктейтіндіктен машина тіліне және процессордың құрылысына тәуелді тіл болып табылады. 
Программа жасауда ассамблер тілі машина тіліне қарағанда программа жасаушылардың еңбек өнімділігін арттыруға сонымен бірге процессордың программалық және аппараттық ресурстарын толық пайдалануға мүмкіндік береді. 
Бұл біліктілігі жоғары программалаушыларға жоғары деңгейлі тілдермен жасалған бағдарламалармен салыстырғанда компьютердің жадында аз орын алатын жылдам жұмыс істейтін программалар жасауға мүмкіндік береді. 
Ассамблер тілінің осындай артықшылықтарына байланысты ендіру-шығару құрылғыларын басқарушы программалар неше түрлі жоғары деңгейлі тілдердің көптігіне қарамай ассамблер тілінде жазылады. 
Ассамблер тілінің көмегімен программа жасаушы адам мынадай параметрлерді бере алады: 

• процессордың машина тілінің әрбір командасының таңбалық атын; 
• ассамблер тілінде жазылған программалық қатардың стандартты пішімін; 
• командалардың нұсқаларын және адрестеудің тәсілдерін қалай көрсету керектігі туралы пішімді; 
• таңбалық тұрақтыларды және бүтін сандық тұрақтыларды әртүрлі санақ жүйелерінде көрсету үлгілерін;  
• программалауды ассамблерлеу (транслациялау) процесін басқарушы пседокомандаларды. 

Ассамблер тілі кез келген компьютерге түсінікті,өйткені басқа барлық тілдерге қарағанда машина тіліне ең жақын тіл ол ассамблер тілі. Бұл тіл компьютермен жақынырақ танысуға мүмкіндік береді. Сондықтан да ассамблерді оқу дегеніміз процессордың өзін оқып үйрену деген сөз. Ассемблер тілінде жазылған программа кез келген басқа тілдерде жазылған программаларға қарағанда өте тез орындалады. Мысалы, ассемблер тілінде жазылған программа дәл осы программаға баламалы СИ немесе Паскаль тілдерінде жазылған программалардан екі-үш есе, ал BASIC тілінде жазылған программалардан он бес және онда да көп есе тез орындалады. 
Ассемблер тіліндегі программалар басқа тілдерде жазылған программаларға қарағанда өлшемі жағынан шағын болады, сондықтан компьютердің жадын үнемдеуге мүмкіндік береді. 
Ассемблер тіліндегі программалар компьютердің барлық мүмкіндіктерін толық ұтымды пайдалануға сізге жол ашады. 
Ассемблер тілін әрқайсысы машина командаларының бір тобына баламалы макрокомандалармен толықтыру жүйе қолданылады. Мұндай тіл макроассемблер тілі деп аталады. Макрокомандаларды пайдалану ірі құрылыс блоктарының программалар құруға мүмкіндік береді және ассемблер тілін жоғары деңгейлі тілдерге жақындатады.

Трансляторлар

Жоғары деңгейлі тілдер көптеген алгоритмдерді үйреншікті математикалық амалдардың жазылуына жақын ыңғайлы түрде жазып түсіндіруге мүмкіндік береді. Бұл тілдерді пайдалану программалаудағы кездесетін қиындықтарды азайтады. 
Жоғары деңгейлі тілдерді программа жасауда пайдалану 60-шы жылдары басталды. Содан бері бүгінгі күнде дейін белгілі есептерді шешуге арналған әмбебап, сондай-ақ бағдарланған көптеген әртүрлі тілдер жасалып пайдаланылып келеді. 
Әрбір программалау тілінің өзінің аты бар.Көптеген программалау тілінің аты олар алғаш жасалғаннан бастап тіркелген.Содан бері программалау тілдерінде қолданылатын ережелер өзгергенімен тілдер аты сол бұрынғы күйінде өзгеріссіз қалуда. 
Қазіргі кезде жоғары деңгейлі программалау тілдері былай бөлінеді: 

• процедуралы (көптеген классикалық программалау тілдері, мысалы, FORTAN, PASCAL, BASIC, C);  
• логикалық (ЛИСП, ПРОЛОГ т.б.); 
• объектік-бағдарланған (С++, Java т.б.). 

Қысқа программаларды жасауда процедуралық программалау тілдерін пайдалану ыңғайлы; логикалық программалау тілдерін алгоритмдерді теориялық зерттеуде жасанды интеллекті оқытып үйрену жұмыстарында деректер базасымен жасалатын операцияларда өндіріс объектілерін және әскери бөлімдерді басқару жүйелерін басқаруда, ал объектік-бағдарланған программалау тілдерін бәрінен де үлкен және күрделі программаларды (Мысалы, компьютерлік ойындарда), жасақтауда пайдаланған жөн. 
Әртүрлі программалау тілдерінің арасында айтарлықтай елеулі айырмашылықтардың болуына қарамастан олардың барлығында негізгі операцияларды жүзеге асырудың ұқсас құралдары бар. Бұдан басқа әртүрлі программалау тілдерін пайдаланғанда жұмыс істеу қиындығының түрліше болатындағына қарамастан кез келген программаны жасауда кез келген типтегі программалау тілін пайдалануға болады. 
Бұл тілдердің әрқайсысына тоқталмай-ақ, осы тілдерді машина тіліне аударушы трансляторлардың жұмысына тоқталайық. Машина тілінен өзгеше программалау тілінде құрылған программа компьютерде орындалу үшін жарамды түрде, яғни машина тіліне түрлендіруі тиіс. Мұндай түрлендіру трансляциялау деп аталады. 
Ассемблердің ендірілетін тілі мнемокод, макроассемблер-макротіл, ал компилятордікі-поцедуралы бағдарланған тілдер болып табылады. Осыған байланысты ендірілетін тілдерді транслятордың түрлеріне қарай ассемблер тілі, макроассемблер тілі деп аталады т.с.с. 
Транслятор арқылы өңделіп алынған программа тікелей компьютерде орындалады немесе оны басқа транслятордың өңдеуіне тура келеді. Трансляциялау мен программаның орындалуы уақыт жағынан бөлінген болады. Интерпретатордан басқа трансляторларда алдымен барлық программа трансляцияланады содан кейін орындалады. Осы режімде жұмыс істейтін трансляторлар компиляциялаушы типті трансляторлар деп аталады. Егер мұндай транслятордың ендірілетін тілі процедуралы-бағдарланған тіл болса, онда транслятор компилятор деп аталады. 
Трансляциялау кезеңімен орындау кезеңдері уақыт бойынша ығысып ауысып келіп отыратын транслятор интерпретатор деп аталады. 
Машина тілінде немесе жүктелуші тілде ұсынылған программа транслятор жұмысының нәтижесі болып табылады. 
Транслятордың жұмысын төрт кезеңге бөлуге болады: 


• лексикалық талдау. Мұның негізгі атқаратын қызыметі программаның бастапқы мәтінін одан әрі қарай өңдеу үшін ең ықшамды және ыңғайлы етіп ұсыну. Осылауша алынған мәтін транслятордың синтаксистік талдаушы деп аталатын келесі бөліміне бастапқы деректер ретінде беріледі; 
• синтаксистік талдау. Бұл кезеңде бастапқы мәтінді синтаксистік талқылау жүргізіледі, яғни сөйлемдердің типтерін тану және программаның құрылымын айқындау, сонымен бірге синтаксистік қателіктерді айқындаушы синтаксистік бақылау; 
• объектік программаны жасау. Бұл кезеңде шын тілдің баламалы сөйлемдерінің мәні зерттеліп, семантикалық талдау жасалады; 
• объектік программаны безендіру және беру. Бұл транслятор жұмысының соңғы қорытынды кезеңі. Объектік программаны кітапханаға жазуға, баспаға шығаруға болады. Пайдаланушының нұсқауы бойынша транслятор ендіретін қосымша информацияның белгілі бір бөлігі ғана баспаға беріледі. 

Шығарылатын есептің сипатына және пайдаланушылардың категориясына байланысты трансляторларға әртүрлі талаптар қойылады. Мысалы, берілген программалау тілін игергісі келетін жаңадан бастаушыларға транслятордың ең маңызды сипаттамасы диагностикалық хабарларының толық әрі қарапайым болуы болып табылады. Егер компьютерде салыстырмалы түрде алғанда көп уақыт есептеуді қажет етпейтін көптеген ұсақ есептер шығарылатын болса, онда сол есептерді шығару үшін алынған программаның сапасына айтарлықтай мән берілмейді. Транслятордың жұмыс істеу жылдамдығы үлкен рөл атқарады. Ұзақ есептелетін күрделі есептер үшін талап етілетін машиналық уақытты және программаның орындалуы үшін қажетті жадтың көлемін ескере отырып транслятордың жасаған программаның ұтымдылығы ең маңызды рол атқарады. Мұндай ұтымды программалар алу трансляциялау алгоритмдерін күрделендіре түсуді талап етеді, ол трансляторды күрделендіре түсуге және оның жұмыс істеу уақытын арттыруға алып келеді. Осыған байланысты программалау жүйесінің өзінде тіптен бір программалау тілі үшін де бірнеше әртүрлі трансляторлар қарастырылады, ал пайдаланушы өзіне ең керекті трансляторларды таңдап алады.
Ассемблер бастапқы модульді объектік программаның бір түрі болып табылатын объектік модульге түрлендіреді. 
Объектік модульдің оны оған тәуелсіз трансляцияланған басқа модульдермен біріктіруге және оның жедел жадтағы орналасуын реттеуге арналған машиналық командалары және информациялары бар. Объектік модуль компьютерлерде тікелей орындалмайды, сондықтан да оны программа құрастырушының қосымша өңденуіне тура келеді.

Интерпретатор және компилятор

Жоғары деңгейлі тілдің трансляторы трансляциялау кезеңдерінің өту реттілігіне және программа операторының орындалуына байланысты интерпретатор немесе компилятор деп аталады. Интерпретатор әрбір жеке операторды трансляциялаған соң, оның тікелей тез орындалуын қамтамасыз етеді, яғни трансляция кезеңі мен орындалу кезеңі кезекпен қайталанады. Программаны интерпретациялау схемасы мына суретте көрсетілген.
Компилятор программаның барлық операторларын трансляциялайды, ал программаның орындалуы жалпы алғанда оның қатынасуынсыз өтеді, яғни жеке операторларды трансляциялау кезеңдері тікелей бірінен соң бірі өтеді және программаның орындалуынан толық оқшауланған болады. Программаны компиляциялаудың қысқартылған схемасы мына суретте көрсетілген.
Жоғарғы деңгейлі тілдердің көпшілігі үшін комбиляторлар жасалған. Интерпретаторлар жасалған тілдердің мысалына BASIC және FOCAL тілдерін атауға болады. Компьютерлердің программалау жүйесінде комбилятордың екі түрі бар. Бірінші түрдегі комбиляторлар бастапқы модульді машина тіліндегі объектік программаға түрлендіреді, яғни объектік модульді ассемблар тіліндегі объектік программаға түрлендіреді. Екінші түрдегі комбилятор қалыптастырған осы программадан объектік модульді алу үшін қосымша ассемблерді пайдалану қажет болады.

Бағыныңқы программалар кітапханасы 

Бірнеше программада немесе бір программаның бірнеше жерінде белгілі бір әрекетке қол жеткізу үшін пайдаланылатын машина тіліндегі командалар тізбегін бағыныңқы программа деп атайды. Әртүрлі программаларда жиі қолданылатын бағыныңқы программаны бірыңғай ереже бойынша безендіріп, оны стандартты бағыныңқы программа деп атайды. Программаларды осылай стандарттау оларға бір пішінде ат беріп, онымен қарым-қатынас орнатуды, аргументтер мен нәтижелер туралы информацияны беру тәсілін формальды тіркеуді, сонымен бірге бағыныңқы программаны негізгі программаға қосу мүмкіндігін автоматтандыруды қамтамасыз ететін бағыныңқы программалардың өздерін жасаудың бірыңғай ережелерін құруды көздейді. 
Компьютердің жадында тұрақты сақталатын стандартты бағыныңқы программалар жиыны стандартты бағыныңқы программалар кітапханасын құрады. Мұндай кітапхана құрамында бірнеше ондаған программалардан бірнеше жүздеген программаларға дейін болады. Әртүрлі есептерді шығаруда оларды қолдану мақсатында жиі кездесетін бағыныңқы программаларды жинау идеясы копьютерлердің өмірге келумен бірге пайда болды. 
Жеткілікті толық бағыныңқы программалар кітапханасы бар жағдайда көптеген күрделі есептерді программалау есептелу процесін бірнеше кезеңдерге жіктеп, оларға бағыныңқы программалар кітапханасындағы дайын программаларды қолдануға және ол кезеңдерді үйлестіруге алып келеді. 
Сенімді жұмыс істейтін сыртқы есте сақтау құрылғыларын жасау стандартты бағыныңқы программалар кітапханасын компьютердің жадында сақтауға мүмкіндік береді. Стандартты бағыныңқы программалар кітарханасы шын мәнінде компьютердің орындайтын операциялары жиынының программалық кеңейтілуі болып табылады. Осы операциялардың көпшілігін компьютердің аппараттық бөлігінің көмегімен жүзеге асыруға болар еді, бірақ бұл компьютердің құрылысын күрделендіріп жібереді. 
Құрылып жатқан программаға компилятор математикалық функциялардың мәндерін есептейтін, ендіру-шығару операцияларын орындайтын объектік модульді қолдануды қосады. Бұл модульдер стандартты бағыныңқы программалар кітапханасында сақталады және одан құрастырушы программа автоматты түрде алады.

Құрастырушы

Құрастырушы бірнеше объектік модульді операциялық жүйе жүктегенннен кейін компьютерде тікелей орындалу үшін мына төменднгі схемада көрсетілгендей даяр жүктелетін бір модуль етіп құрастырады.
Мұндай құрастырудың қажеттілігін әрбір объектік модульде берілген модульге тәуелсіз трансляцияланған немесе стандартты бағыныңқы программалар кітапханасында сақталатын басқа объектік модульге өтудің барлығымен қамтамасыз етіледі. 
Құрастырушы әрбір машина командасының және деректердің әр бір элементтің операциялық жүйедегі өз орнын анықтайды және модульдердің бірімен-бірінің қатынас жасауын қамтамасыз етеді. 
Жөндеуші
Пайдаланушы құрған программадағы қателіктерді іздеуді және жөндеуді тездетіп қысқарту үшін программалау жүйесінің құрамына жөндеуші деп аталатын программа ендірілген. 
Әрбір жөндеуші программа нақтылы программалау тілінде жазылған программамен бірігіп жұмыс істеуге бағдарланған. Ол программадағы айнымалы мәндерінің өзгерістерін қарап шығуға, программаның орындалуын оперативті басқаруға, программаның орындалыушы операторын баспаға шығаруға, сонымен бірге басқа да қателіктерді іздеуді диалог режімінде жүзеге асыруға арналған программалық құралдарды береді. 
Компьютердің оперативті жадына машина тіліндегі программа жүктеліп, компьютер оны орындауды бастағаннан кейін ғана компьютерде тікелей есеп шығару басталады. Машина тіліндегі программаның жұмысқа жарамды артық нұсқасы онда жіберілген қателіктерді тауып жөндейтін жөндеушіден өткеннен кейін ғана алынады. 
Пайдаланушы модуліндегі қателіктерді екі түрге бөлуге болады: 

• синтаксистік (пайдаланып отырған программалау тілінің синтаксисі бойынша жіберуге болмайтын модуль мәніндегі құрылымдар); 
• мазмұндық (арифметикалық өрнектердегі дұрыс қойылмаған жақшалар, есептелу процесіндегі тармақталу шарттарының дұрыс тұжырымдалмауы, циклдің қайталану санының дұрыс берілмеуі т.с.с.). 

Мазмұнындағы қателіктер шын мәнінде автор ойлаған алгоритмді емес, программада басқа бір алгоритмнің орындалуына алып келеді. 
Синтаксистік қателерді мәтінді синтаксистік талдау кезеңінде транслятор анықтайды және мәтіннен табылған қателіктің орнымен сипатын көрсететін диагностикалық хабар береді. 
Мазмұнындағы қателіктерді анықтау үшін жоғарыда айтылғандай тест қолданылады. 
Программаны жөндеу процесі кезінде программалаушыға аралық нәтижелерді беру қажет немесе кейбір командалардың орындалуының дұрыстығын тексеру керек. Бұл үшін программалау жүйесіндегі қызмет етуші жөндеушіні жұмысқа қосу керек. Программалаушы жөндеушіге тапсырма даярлау үшін арнайы тіл жасалады. Жөндеуші бұл тапсырмаларды компьютердің көмегімен орындайды. Ол жөнделіп жатқан программаның машиналық командалардың орындалуын қамтамасыз етуі және бақылау нүктелерінен өтуін қадағалауы тиіс. 
Бақылау нүктесі–бұл мына төмендегідей қосымша әрекеттер жасау керектігін білдіретін программадағы нүкте: 

• аралық нәтижелерді баспаға шығару; 
• программаның кезектегі бөлігіне қажетті бастапқы деректерді беру; 
• прогрммада қарастырған командалардың орындалу реттілігін өзгерту т.с.с.  

Егер кезектегі орындаған (немесе орындалуға тиісті) команда бақылау нүктелерінің бірі болса, онда жөндеуші жөнделіп жатқан прогрмманың орындалуын үзеді және осы бақылау нүктесі үшін берілген жөндеу әрекеттерін жүзеге асырады. 
Жөндеуші екі бөлімнен тұрады; 

• қайталаушы; 
• өңдеуші. 

Қайталаушы программа жөнделіп жатқан программаның командаларын кезекпеннен алып орындайды, бірақ олардың әрқайсысы орындалып болғаннан кейін, жөндеушінің екінші бөлігі өңдеуші программаға өтуді жүзеге асырады. Бұл программа таңдалынып алынған командада жөндеу үшін көрсетілген тапсырма бақылау нүктесінің бірі не немесе жоқ па? соны тағайындайды. Егер бақылау нүктесі болса, онда өңдеуші программа осы нүкте үшін берілген өңдеу әрекеттерінің орындалуын қамтамасыз етеді және бұдан соң қайталаушы программаға қайта оралу жүзеге асырылады. Жөндеуші жөнделетін тапсырма синтаксисінің дұрыстығын алдын ала тексереді. Синтаксистік қатесі бар тапсырмаларды жөндеуші орындамайды, оған сәйкес хабарларды баспаға шығарумен шектеледі. 
Компьютерде программаны орындауға даярлаудың танымал схемасы (келесі 80-ші бетте) мына төменгідей болады. Программаны даярлау мәтін редакторын пайдаланып орындалатын бастапқы модуль файлын құрып қалыптастырудан басталады. Бұдан соң бастапқы модульді компилятордың немесе ассемблердің көмегімен трансляциялау орындалады. Трансляциялаудың нәтижесінде басқа объектік модульдермен бірге құрастырушы бір жүктелетін модульге біріктіретін объектік модуль файлы пайда болады. Пайдаланушының командасы бойынша монитор жүктелетін модульді операциялық жүйеге орналастырады және оның орындалуын қамтамасыз етеді.

Модульді программалау

Басқа программалармен бірлесе отырып бірнеше рет жұмыс істеуге есептеліп жасалған, әрі тиісті түрде безендірілген программа модуль деп аталады. 
Стандартты бағыныңқы программаның өзі модуль болып табылады, өйткені әрбір бағыныңқы программаны басқа программаны пайдалануға болады. Бағыныңқы программаның кемшілігі сонда, ол өзін шақырған программанмен ғана жұмыс істейді, ал бағыныңқы программаны орындалуына қажетті барлық информация сол шақырушы программа арқылы беріледі. Бұдан басқа кейбір жағдайларда бір программаның бірден бірнеше программамен бірге жұмыс істеу қажеттілігі пайда болады. 
Модульдің бағыныңқы программадан айырмашылығы басқа модульдермен кеңінен жұмыс істеуге мүмкіндік береді. Бұл модуль ұғымы бағыныңқы программа ұғымының одан әрі дамытылуы деген сөз, ал соңғысы модульдің дербес жағдайы болып табылады. 
Қазіргі заманғы программалау жүйелері осы модульді программалауды ескеріп құрылады. Программалау жүйесінде модульдің үш түрі қолданылады: 

• пайдаланушы модуль; 
• жүктелуші модуль; 
• абсолютті модуль. 


Пайдаланушы модулі

Бұл үлгідегі модуль адамға ыңғайлы программалау тілінде жасалады. 
Пайдаланушы модулі екі бөлімнен тұрады: 

• модуль денесі;  
• паспорт. 
 
Модуль денесі модульдің мәнін анықтайтын оның негізгі бөлігі болып табылады, ал паспорт-бұл оны түсіндіруші бөлігі. Паспортта модульді келесі кезекте қалай пайдалану туралы қажетті қосымша информация болады.

Жүктелуші модуль

Модульдер біреше қайтара пайдалануға арналғандықтан компьютерге арнйы ұйымдастырылған кітапханада сақталады одан қажет болуына қарай шақырылады. 
Программаны алгоритмдік тілден машина тіліне аудару екі кезеңнен тұрады. Бірінші кезеңде модульді басқа модульдермен жұмыс істей алу күйіне келдіретін пайдаланушы модулінің пішінінен машиналық пішінге өту орындалады. Модульді ұсынудың осындай пішінді жүктелетін модуль деп аталады. Пайдаланушы модулінен жүктеуші модульге өту соған сай транслятордың көмегімен жүзеге асырылады. Әрбір модульді трансляциялау бар болғаны бір рет орындалады, одан соң ол кітапханада жүктелуші модуль түрінде сақталады. 
Екінші кезеңде жүктелетін модульді нақтылы программамен жұмыс істеуге икемдеу жұмысы орындалады. Бұл кезең жүктеу деп, ал орындалатын программа жүктеуші деп аталады. Компьютердің жадына модульді ендіру, оның жадтағы оған бөлінген орынға икемделіп орналасуын, сонымен бірге модульді берілген параметрлерге икемдеуді жүктеу деп түсінеміз. 
Модульді жүктеу жаңа программаға модуль қосылған сайын орындалатандықтан, жүктеу қарапайым әрі тез орындалу үшін жүктелуші модуль машина тіліне мүмкіндігінше жақын болуы тиіс. 
Жүктелуші модуль пайдаланушы модуль сияқты екі бөлімнен тұрады: 

• модуль денесі; 
• паспорт. 
 
Модуль туралы қосымша информациясы бар және оны жүктеуге пайдаланылатын паспорт жүктеушіге ыңғайлы пішімде ұсынылады.

Абсолютті модуль

Бұл жүктеу нәтижесінде алынған модуль. Ол машина тілінде ұсынылады, жадта өз орнында және басқа модульдермен бірлесіп жұмыс істеуге икемделеді. Сондықтан да абсолютті модуль компьютерде тікелей орындауға жарамды машина тіліндегі программаның бөлігі болып табылады. 
Модульді программалаудағы нақты есепті шешуге арналған программа осы программаны құрайтын барлық модульдерді жіктеп, оларды біріктіру жолымен алынады. Егер бұл жағдайда кітапханада сақталуы дайын модульді пайдалануға болатын болса, онда тек жетіспендіктерін ғана қайта құруға тура келеді. Бұдан модульдердің бай кітапханасы программалауды жеделдетіп әрі қысқартатындығын көреміз. 
Пайдаланушының компьютер көмегімен белгілі бір жұмыс атқаратын тапсырманы программалау жүйесінде тұжырымдап беру мүмкіндігі бар. Бұл үшін адамның жүйемен қарым-қатынас тілі пайдаланылады. Тапсырманың құрамында мыналар болуы мүмкін: 

трансляциялауға жататын пайдаланушы модулінің мәтіні; 
қандай модулдерді трансляциялағанан соң кітапханаға жазу керектігі туралы информация; 
жеке модулдерден, оның ішінде дайын модулдерден пайдаланушыны қызықтыратын программаны жинау туралы жүйеге берілетін нұсқау; 
алынған программаларды орындау туралы нұсқау. 

Қазіргі заманғы, программалау жүйесі көп тілді болып табылады, яғни программа жазу үшін және оның әртүрлі модулдерін жазу үшін ең ыңғайлы әр түрлі программалау тілдері пайдаланылады. 
Трансляторлар пайдаланушы модулін жүктелуші тілге аударады, сондықтан да бұдан әрі жүктелуші модуль қай модуль қандай транслятордың көмегімен алынғандығына қарамастан пайдаланыла беретін болады. 
Жүктелуші модулдер компьютердің сыртқы жадындағы бір кітапханада сақталады. Әрбір модуль үшін кітапхана каталогында белгіленген модулдің аты, оның ұзындығы және кітапханадағы орны болады. Модулдің паспортын жеке сақтауға болады, сонда каталогта берілген модулдің паспортының ұзындығы және оның жадтағы орны туралы информация болады. 
Біріне-бірі сілтеме жасай толтырылған паспорттар болған жағдайда машиналық программаны алу үшін модульдерді жүктеу процесін негізгі екі кезеңге бөлуге болады. Бірінші кезеңде берілген программаны алу үшін жүктелуге жататын барлық модулдер айқындалады, программалық модульдер арасындағы жадты болу жұмысы атқарылады және әрбір модуль үшін барлық сыртқы және жалпы объектілердің шын адрестері анықталады. 
Бұдан әрі модульдерді тікелей жүктеу жұмысы атқарылып, екінші кезең орындалады. 


Программалау тілдерінің қолданылуы

Кез келген компьютер информацияны жадына жүктелген программаны орындау арқылы өңдейді. 
Программалау тілі символдардың жиынынан, осы символдардан тұратын тілдік нұсқаулардың семантикасынан және синтаксистен, яғни программаларды құру ережелерінің жүйесінен құралады. 
Есептелуге тиісті есептерді шығаруға операторлы программалау тілдері пайдаланылады. Осы тілдердің көмегімен математикалық, физикалық және инженерлік есептерді шешу ыңғайлы. Бірақ есептелмейтін, яғни сандық емес есептерді шығаруда программаны сол есептерді шығару үшін арнайы жасалған, басқа тілдерден құрған дұрыс. Мысалы, бір тілден екінші тілге аудару немесе қателіктерді алдын ала болжау программаларын басқа тілдерде құру жақсы нәтиже береді. 
Операторлы тілдерде алгоритмнің әрбір элементі қандайда бір оператордың көмегімен жазылады. Программада әрбір оператор белгілі бір әрекетті (операцияны) орындайды. 
Кәдімгі жағдайда барлық операторлар арнайы ағылшын сөздерімен жазылады. Бір есепті шешуге арналған программа әртүрлі программалау тілдерінде жазылап трансляциялануы және әртүрлі компьютерлерде орындалуы мүмкін. Бір программаның өзін әр түрлі трансляторлар процессордың әртүрлі нұсқайлар тізбегіне түрлендіреді. Осыған қарамастан программаның орындалу барысында барлық айырмашылықтар жоғалып кетеді және бірдей нәтиже алынады. Осылайша, программа қандай программалау тілінде жазылмағандығына қарамастан, оның тұрақты нәтижесі болады және бұл есепті шешу тәсілін анықтайды. 
Шын мәнінде программа мүлтіксіз орындалғанда есептің шешімін алуға мүмкіндік беретін әрекеттердің реттелген тізбегінен тұрады. Бұл әректтердің қалайша орындалатындығынның ешқандай мазмұны жоқ, яғни компьютердің көмегімен бе, қарандаш пен қағазды пайдаланып қолмен есептеу жолымен бе немесе қандай да бір басқа тәсілмен бе бәрібір. Әректтердің мұндай ретті тізбегі бұрын айтып кеткеніміздей есепті шешу алгоритмі деп аталады. 
Осы тұрғыдан қарағанда программалау тілдері алгоритмдерді компьютердің көмегімен орындауға мүмкіндік беретін пішінде жазушы тілдер болып табылады. Алгоритмнің орындалуын берілген әректтерді ретімен іс жүзіне асыру деп түсіну керек. 
Сонымен программа дегеніміз-бұл алгоритмді компьютер түсінетін тілде жазып көрсету деген сөз. 
Қалай біз программалауды алгоритмдеуден бөліп қарасақ болады, алгоритмдерді жазу, сондай-ақ оны жасақтау проблемалары программалауда қиындықтар туғызатындығы түсінікті болады. Программалаудың осы екі кезеңін ажырата білу керек. Программалауды алгоритмді жасақтау және оны жүзеге асыру деп түсінген жөн. 
Алгоритмді жазуға байланысты қиындақтарды әдетте оңай жеңуге болады. Қазіргі заманғы программалау тілдерінде кез келген проблемаларды жеңіп шығуға болатын әртүрлі қуатты операторлардың саны жеткілікті. 
Алгоритмді жазудың күрделілігі берілген тілді одан да тереңірек оқып үйренуге немесе өте қуатты программалау тілін игеруге итермелеуі мүмкін. 
Егер алгоритмді жасақтау проблемасы қиындық тудырса, онда біраз уақытқа дейін программаны жазуды қоя тұрып, есепті шешу үшін не істеу керектігін, оны қалай жүзеге асыруды ойлану керек. Есепті шешудің алгоритмін жасау жай ған программа жазғанға қарағанда өте күрделі және шығармашылықпен жұмыс істеуді талап ететін мәселе. 
Нақтылы дағдылар әр түрлі есептерді шығару кезіндегі программалау тәжірибелерімен бірге келеді. 
Жинақталған білім мен дағдыны қолдану мүмкіндігі алгоритмді жасау мезетінде есептің нақтылы мазмұнының мәні болмайтын жағдаймен байланысты. Ғылымның, техниканың және мәдениеттің әртүрлі салаларындағы есептердің бәріне бір ғана немесе оған өте жақын алгоритмнің өзі пайдаланылуы мүмкін. Жинақталған тәжірибелер тіптен басқа есептерді шешуде пайдаланылған принциптерге сүйене отырып программалар құруға мүмкіндік береді. Алгоритмдерді қайталап пайдаланғанда кейде оларды бір программалау тілінен басқа программалау тіліне аудару талап етіледі. Мұндай түрлендіру программаны қайтадан жасағанға қарағанда өте ыңғайлы және кейбір жүйелерде автоматты түрде жасалуы мүмкін. 
Әрбір есеп әдетте сөз түрінде адам тілінде тұжырымдалады. Есепті компьютердің көмегімен шығаруға даярлау үшін оны формальды түрде көрсету керек. Есепті формальды түрде көрсетудің әртүрлі тәсілдері программалауда ғана емес білім берудің түрлі салаларында пайдаланылады. Мысалы, есепті алгебралық немесе гоеметриялық тәсілдер арқылы шығарғанда шығарылып отырған есептегі айтарлықтай мәні жоқ барлық деректерді алып тастау керек, яғни есепті ықшамдап математикалық пішінге келтіру оны шешудің бірінші қадамы болып табылады. Бұдан кейін есептің күрделілігін бағалау шамамен есепті шешуге қажетті ресурстарды және оған кететін уақытты анықтау керек.

## Дереккөздер

Санат:Бағдарламалау тілдері
Санат:Ақпараттану