Бағдарлама

**Бағдарлама** (; soft - жұмсақ, ware — өнім; басқаша айтылуы: **бағдарламалық жасақтама**, **бағдарламалық қамтамасыз ету**) — компьютердің жұмыс істеуіне арналған компьютер бағдарламалары жиынтығы, ол әдетте компьютердің физикалық бөлігі болған Жабдықтамаға салыстырмалы айтылады және де компьютерлер әртүрлі тапсырмаларды орындау үшін пайдаланатын нұсқаулар мен деректер жиынтығына жатады.

## Тарихы
Ең алғашқы бағдарламаны Ада Лавлейс Чарльз Бэббидждың айырымдық машинасына ойлап тапты, алайда ол машина түгелімен жасалып бітпегендіктен Лавлейс ханымның туындысы тек теориялық тұрғыда қалып қойды.

Бағдарлама туралы ең алғашқы теорияны ағылшын математика ғалымы Алан Тьюринг 1936 жылы «On computable numbers with an application to the Entscheidungsproblem» эссесінде ұсынған болатын. Алан Тьюринг математикалық модельдегі абстрактты машина ойлап тапқан. Тьюринг машинасы тізбек бойымен орындалып, бір қалыптан екінші қалыпқа ауысып отырады. Бұл машинаның басты идеясы оның математикалық фактіні дәлелдеу, яғни кез-келген алдын ала берілген қалыпты жүйеге тізбектелген қарапайым командаларды жасау арқылы қол жеткізуе болатындығы.

### Бағдарлама түрлері
Бағдарламаның екі түрі бар:
* 1) Программалар (computer program), яғни есептеу жүйесі ретіндегі алгоритмдер мен программалар жиынтығы; мәліметтер мен бағдарламалық құжаттарды өңдеу жүйесі. Программа әдетте ақпарат құралдарының қалыпты жұмыс жасауына мүмкіндік береді.
* 2) Қолданбалар (application), мәлім нақты қолдану қажетіне бола пайда болған, жұмыстық қолданбалар, яғни қолданбалы бағдарламалар..
Image:Operating system placement.svg|thumb|Деңгейлермен көрсетілген: ең үстінде Қолданушы, одан төменде Қолданба, одан төменде Операциялық жүйе, ең төменде Жабдықтама


### Нарық және мекемелер
Бағдарлама нарығы бүгінгі әлемдегі ірі фирмалар мен бағларламашылар құрайды. Бұл нарыққа мол табыс әкелуіде мүмкін, мысалы: Билл Гейтс Microsoft мекемесінің негізін қалаушысы 2009 жылы әлемнің ең қаражаты көп адам ретінде танылды, үлкен мөлшерде өзінің Microsoft Windows және Microsoft Office бағдарлама өнімдері арқылы. Ларри Элисон-да оған ұқсас, өзінің Oracle database бағдарламалық жасақтамасы арқылы үлкен танымалдыққа ие болды, әлбетте соңғы уақытта бағдарламалық жасақтама нарығы өте көп специялизацияланудан өтуде.

Коммерциялық-емес мекемелерге Free Software Foundation, GNU Project және Mozilla Foundation кіреді. Бағдарлама стандарттау мекемелері: W3C, IETF бұлар XML, HTML, HTTP және FTP сияқты бағдарлама стандарттарын дамытуда, мақсаты көптеген әр-түрлі мекемелер дамытқан бағдарламалар өзара жұмыс істеу қабілеттігін арттыру болып табылады.

Ірі бағдарламаларын өндірумен айналысатын ірі мекемелердің тізімін Novell, SAP, Symantec, Adobe Systems, және Corel құрайды, одан басқа кіші-гірім мекемелердің бағдарламалық жасақтамалардың жаңа түрлерін дамытуға жаппай ат салысуда.

## Бағдарламаларды құру
Көбінесе бағдарлама кескіні орындалатын модуль ретінде сақталады (жеке файл немесе файлдар тобы). Әдетте дискіде орналасқан бұл кескіннен жедел жадыдағы орындалатын бағдарламаны бағдарламалық құрал жүктеушісі құрастыра алады.

*Жүйелік бағдарламалауда бағдарлама* компьютерлік жүйені басқаруға арналған нұсқаулар ретінде процессор пайдаланатын мәліметтерді білдіреді. Бағдарлама белгілі бір мақсатқа жету үшін процессор орындайтын машиналық кодты да, оған қажетті мәліметтерді де қамтуы мүмкін. Бағдарламаның айрықша ерекшелігі оның жадыда орналасуы және процессормен орындалуы болып табылады.

Бағдарламалық қамтамасыз етуді әзірлеу процесі бірнеше кезеңдерден тұрады, олардың ішінде тар мағынада бағдарлама кодын тікелей жасау ғана «бағдарламалау» деп аталады. Кең мағынада бағдарламалау көбінесе бағдарламалық жасақтаманы әзірлеудің бүкіл процесін білдіреді және осы қызмет түріне қатысатын адамдарды бағдарламашылар деп атайды.

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

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

Әдетте компиляция процесі қолданылмайтын және операциялық жүйе немесе арнайы интерпретатор бағдарламалары арқылы түсіндірілетін интерпретацияланған бағдарламалар скрипттер немесе «сценарийлер» деп аталады.

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

Бағдарламаларды мәтіндік және визуалды түрде жасауға болады. Бірінші жағдайда бастапқы код қолмен теріледі, екіншісінде графикалық пайдаланушы интерфейсінің элементтері арқылы бағдарламаның функционалдығы көрсетіледі, ал бағдарлама мәтіні автоматты түрде жасалады және оны қолмен өзгертуге немесе бағдарламашыдан толығымен жасыруға болады.

## Сақтау және орындау
Компьютер пайдаланушысы нақты немесе жасырын түрде компьютерлік бағдарламаны орындауға сұраныс бермейінше, ол әдетте тұрақты жадта сақталады. Мұндай сұраныс түскен кезде, операциялық жүйе деп аталатын басқа компьютерлік бағдарлама арқылы бағдарлама жедел жадқа жүктеледі, ол жерден оны орталық процессор тікелей орындай алады.

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

**Бір мезгілде орындау**

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

Бір компьютерлік бағдарламаның кодының үзінділері орындалу ағындарының көмегімен бір уақытта орындалуы мүмкін. Бірнеше ағынды іске қосу үшін арнайы оңтайландырылған көп ағынды процессорлар бар.

**Өзін-өзі өзгертетін бағдарламалар**

Орындалатын компьютерлік бағдарлама ол өңдейтін мәліметтерден өзгеше деп саналады. Алайда, бұл айырмашылық компьютерлік бағдарлама өзін өзгерткен кезде бұлыңғыр болады. Содан кейін өзгертілген компьютерлік бағдарлама бастапқы бағдарламаның бөлігі ретінде орындалады. Кодтың өздігінен модификациясы машиналық кодта, ассемблер, Лисп, Си, Кобол, ПЛ/1 және Пролог тілінде жазылған бағдарламаларда мүмкін.

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

Санат:Бағдарламалық жасақтама
Санат:Ақпараттану
Санат:Компьютерлік техника
Санат:Компьютерлік бағдарлама