Программалык камсыздоо — бул электрондук түзүлүштү, компьютерди башкаруу үчүн жасалган бир же бир нече программалар (ISO/IEC 26514:2008).
Достор дароо ушул жерден айтып коелу, программа менен программалык камсыздоо бири-бирине байланыштуу, бирок ар башка нерселер.
Эл аралык жана орусиянын стандарттары боюнча программалык камсыздоонун аныктамалары:
Программалык камсыздоо техникалык (аппараттык), математикалык, маалыматтык, лигвистикалык, уюштуруучулук, методикалык жана укуктук камсыздоо менен бирге эсептөөчү системаны камсыздоонун бир түрү.
Программалык камсыздоону изилдеген академиялык чөйрөлөр — информатика жана программдык инженерия.
Компьютердик сленгте көп учурда «софт» сөзү колдонулат, ал англисче «software» сөзүнөн чыккан. Мындай маанидеги сөздү биринчилерден болуп Пристон университетинин математиги Джон Тьюки 1958-жылы American Mathematical Monthly журналындагы макаласында колдонгон.
Программалык камсыздоо индустриясы үч негизги секторго бөлүнөт:
Атап өткөндөр биринин артынан бири пайда болуп, ортосундагы аралык орточо он жылдыкты түзгөн.
Эң биринчи программаны Чарльз Бэббиджтин айырмачылык машинасына Ада Лавлейс жазган, бирок бул машина аягына чейин жасалбаганына байланыштуу Лавлейстин иштеп чыгуулары теория бойдон калган.
Программалык камсыздоого байланыштуу биринчи теория англис математиги Алан Тьюрингдин 1936-жылы жазган «On computable numbers with an application to the Entscheidungsproblem» («Тиркемеси менен эсептелүүчү сандар жөнүндө, көйгөйдү чечүүгө карай») эссесинде сунуштаган.
Ал айтылуу Тьюринг машинасын жасаган, абстракттык машинанын модели. Машина рудиненталдык операциялардын иретин аткара алчу, башкача айтканда машинаны бир туруктуу абалдан экинчисине которо алчу. Негизги идеясы — системанын алдын ала берилген абалдары элементардык буйруктардын (программа) ырааты менен аткарылышын математикалык жактан тастыктоо эле.
1940—1950-жылдардын биринчи электрондук эсептөөчү машиналары тумблерди, кабелдерди кайра туташтыруу аркылуу программаланчу. Мындай ыкма алардын ички түзүлүшүн терең билүүнү талап кылган. Ушундай машиналардын катарына ENIAC кирчү, бирок муну кийинчирээк жарым-жартылай перфокарталардын жардамы менен программалануудай кылып модификациялашкан.
Заманбап компьютерлердин чөйрөсүнө багыт алуунун маанилүү кадамы Джон фон Неймандын архитектурасына өтүү болгон. Бул кадам Улуу Британияда Р. Уомерзлинин жетектөөсү алдында, Алан Тьюрингдин катышуусу менен Марк I компьютеринде ишке ашырылган. Компьютердин эсинде сакталуучу биринчи программа 1941-жылдын 21-июнунда иштеген. Марк I компьютеринин программалоосун жеңилдетүү үчүн Тьюринг кыскартылган кодировкалоо системасын ойлоп чыгарып, анда экилик машина кодун берүү үчүн перфолентага киргизилген телетайп символдорунун ырааты колдонулган.
Тьюрингдин кызматкеринин бири Джон Мочли кийинчирээк (Джон Преспер Эккерт менен биргеликте) Eckert–Mauchly Computer Corporation компаниясынын жетекчиси жана негиздөөчүсү болуп (BINAC, UNIVAC ЭЭМдеринин ойлоп чыгаруучусу), өзүнүн кызматкерлерине алгебралык формулалардын трансляторун чыгарууга буйрук берет. Мындай амбициоздук максат 1940-жылдары ишке ашпай калса да, «кыска код» аталган функция жасалып, анда операциялар жана өзгөрмөлөр эки символдуу айкалышуу менен коддолгон. «Кыска код» интерпретатордун жардамы менен ишке ашырылган.
Интерпретатор — интерпретацияны аткаруучу программа. Интерпретация — программанын алгачкы кодунун же суроонун саптык түрдө (солдон оңду жана өйдөдөн ылдый карай) анализи, иштетилиши жана аткарылышы.
Грейс Хоппер 1950-жылдардын башында UNIVAC I ЭЭМи үчүн математикалык програмчалардын тобунун үстүндө иштеп жатып «A-0[en]» аталган топтоштуруучу (компановкалоочу) программаны түзгөн. Ал берилген идентификатор аркылуу магниттик лентадагы керектүү програмчаны (подпрограмма) тандап, оперативдик эстин көрсөтүлгөн жерине жазчу.
1950-жылдары биринчи жогорку деңгээлдеги программалоо тилдери пайда болот. Джон Бэкус FORTRAN, Грейс Хоппер COBOLду иштеп чыгат. Ушул сыяктуу иштелмелер прикладдык программалык камсыздоону алда-канча жеңилдетүүгө алып келет.
50-жылдардын башында программалык камсыздоо түшүнүгү калыптана элек болчу. Бирок 50-жылдардын жарымында программалык камсыздоону буйрутма аркылуу жасатуу калыптанып, «буйрутма аркылуу программалоо» же «программалык тейлөө» түшүнүктөрү жайыла баштаган. Биринчи программа жасоочу фирма АКШнын RAND Corporation таандык System Development Corporation компаниясы болгон. Ал кезде уникалдуу жана тираждалбаган программалык камсыздоонун кардарлары ири корпорациялар, мамлекеттик түзүмдөр болуп, бир миллион долларлык программалар кадыресе көрүнүш эле.
Программалык камсыздоо термини кеңири колдонууга 1960-жылдарда кирип, компьютерди башкаруучу жана анын физикалык компоненттери (аппараттык жабдуу) ортосундагы чектер алынган. Ушундан тарта программалык камсыздоо индустриясы өз алдынча тармак боло баштаган. Программалык камсыздоону керектөөчүлөргө иштеп чыгуучу биринчи компания 1959-жылы Рой Натт жана Флетчер Джоунс тарабынан уюшулуп Computer Sciences Corporation аталган. Алардын баштапкы капиталы болгону 100 долларды түзгөн. Биринчи кардарларына NASA сыяктуу ири корпорациялар жана мамлекеттик мекемелер кирген.
Компьютерден өзүнчө жабдылуучу программалык өндүрүм 1965-жылы Applied Data Research фирмасы тарабынан AUTOFLOW документтер генератору, ал блок-схемаларды автоматтык түрдө чийип MARK-IV программалоо тилинин ретранслятор кызматын да аткарган. Корпоративдик программалык камсыздоо рыногунун калыптанышы IBM System/360 компьютерлер үй-бүлөөсүнүн пайда болуусу менен тыгыз байланышта. Массалык жана салыштырмалуу анча кымбат эмес, бири-бирине программалык код деңгээлинде айкалыша алган ЭЭМден тираждалуучу программалык камсыздоого жол ачкан.
Программалык камсыздоонун кардарлары акырындык менен көбөйүп, программалардын жаңы түрлөрү чыгып, алгачкы автоматташтырылган проектилөө системаларына адистешкен фирмалар жаралат.
1966-жылдын ноябрь айында «Business Week» журналындагы «Software Gap — A Growing Crisis for Computers» макаласында бул тармактагы бизнестин перспективдүүлүгү жана программисттердин жетишпегендиги жөнүндөгү кризис тууралуу жазган. Ал кездеги типтүү программалык өндүрүмдөр бизнеске тиешелүү жалпы тапшырмаларды аткарган, мисалы, айлык акыны берүү/киргизүү, бизнес процесстерин автоматташтыруу, банк тармагы ж.б. Мындай программалардын баасы 100 миңден 500 миңге чейин болгон.
1970-жылдары биринчи персоналдык компьютерлердин (мис, Альтаир 8800) пайда болушу, массалык программалык камсыздоо рыногун пайда болуусуна өбөлгө түзгөн. Персоналдык компьютерлердин программалары түрдүү кутучуларда, соода борборлор же почта аркылуу жайылтылып, баасы 100—500 долларга жеткен.
Инженер программист Дэниел Бриклин Гарвард мектебинде бизнестин курстарын өтөп жатканда, өзүнүн финансылык эсептерин жеңилдетүү максатында VisiCalc электрондук таблицалар программасын жазып, ошол эле убакта Сеймур Рубинштейн WordStar тексттик процессорун жазат. VisiCalc жана WordStar программалары мурда көңүл ачуу үчүн колдонулган персоналдык компьютерлерди жумушчу аспапка айландырат. Ушундан улам микрокомпьютердик революция башталып, атаандаш программалар пайда болот, алар: SuperCalc, Lotus 1-2-3 электрондук таблицалары, dBase II маалымат базасын башкаруучу система, WordPerfect тексттик процессору ж.б. Тексттик процессорлор, электрондук таблицалар, маалымат базасын башкаруу системалары, графикалык редакторлор персоналдык компьютерлер үчүн чыгарылуучу программалык камсыздоо рыногунун негизги өндүрүмдөрү болуп келүүдө.
Массалык тираждоо 1990-жылдардын жарымында программалардын баасын түшүрүп, орточо 100—300 доллар болот. Программалык камсыздоону чыгаруучулардын бизнеси кандайдыр бир деңгээлде үн жаздыруучу студиялардыкына окшошуп калган.
Учурда программалардын басымдуулугу Web тиркемелер, операциялык системалар, маалымат базалары өңдүү көп талап кылынуучу өндүрүмдөр боюнча чыгарылууда. Мындай камсыздоолор өзүлөрүнө көптөгөн даяр программалар пакетин камтыйт. Мисал катары кеңири жайылган операциялык системаларды айтсак болот: Windows, macOS, Android, Apple, Linux жана башкалар. Булар ичине түрдүү графикалык жана тексттик редакторлорду, электрондук таблицаны, видео жана аудио редакторун, маалымат базаларын жана башка көптөгөн кошумча жана жардамчы программаларга ээ. Ал эми буйрутма аркылуу программаларды жасатуу көбүн эсе «интернет» тармагына көчтү десе болот. Миллиондогон программисттер адамдын керектөөсүнө зарыл болгон каалагандай программалык камсыздоону жасап берүүгө даяр. Уюлдук телефондорго тиркемелер, сайт башкаруучу системалар, акылдуу үйлөрдү башкаруу системасы, автоунаа системалары ж.б.
Заманбап эсептөө системасынын, компьютерлердин курамы аппараттык жана программалык бөлүктөрдөн турат. Эсептөө системаларынын аппараттык камсыздоосуна (компьютердин аппараттык жабдылышы) аппараттык конфигурацияны түзүүчү түзүлүштөр жана куралдар кирет. Заманбап компьютерлер жана эсептөө комплекстери иштердин конкреттүү түрлөрүн аткаруу үчүн керек болгон блоктук–модулдук конструкцияга – аппараттык конфигурацияга ээ. Аларды даяр түйүндөрдөн жана блоктордон чогултууга болот.
Программалык камсыздоого оперативдик системаларды, бардык колдонмо программалык камсыздоолорду жана программалоо системаларынын тилдерин кошсо болот.
Программалык жана аппараттык камсыздоо компьютерде үзгүлтүксүз байланышта жана үзгүлтүксүз өз ара аракеттенүүдө иштейт. Биз бул категорияларды өз–өзүнчө караганыбызга карабай, булардын ортосунда диалектикалык байланыш бар экенин унутпашыбыз керек, аларды бөлүп кароо шарттуу гана болот.
Компьютерлердин иштөөсүнүн негизин башкаруунун программалык принциби түзөт, башкача айтканда компьютер аракеттерди алдын ала берилген программа боюнча аткарат. Бул принцип компьютерлерди колдонуунун универсалдуулугун камсыз кылат: убакыттын аныкталган учурунда тандалган программага тиешелүү болгон маселе чечилет. Ал аткарылгандан кийин эске башка программа жүктөлөт ж. б.
Программа – бул маселенин чечилишинин алгоритмин компьютер түрүнө ала турган тилде командалардын же операторлордун удаалаштыгы түрүндө жазуу. Каалаган компьютердик программанын акыркы максаты болуп аппараттык каражаттарды башкаруу эсептелет. Компьютерде маселелерди нормалдуу чыгаруу үчүн программа эч кандай толуктоолорду талап кылбашы жана тиешелүү документи бар болушу керек. Ошондуктан компьютерге иштөөгө салыштырмалуу көбүнчө программалык камсыздоо (software) терминин колдонушат. Программалык камсыздоо катарында программалардын, процедуралардын жана эрежелердин, ошондой эле берилмелерди иштетүү системдеринин жашоосуна тиешелүү болгон документтердин жыйындысын түшүнүшөт.
Эсептөө системасынын программалык камсыздоосунун курамын программалык конфигурация деп аташат. Программалар ортосунда өз ара аракеттенүү орун алган, башкача айтканда көпчүлүк программалар алардан төмөн турган программаларга таянып иш алып барышат.
Программалар аралык интерфейс – бул программалык камсыздоону бири–бири менен байланышкан бир канча деӊгээлге бөлүү. Программалык камсыздоонун деӊгээлдери пирамиданы элестетишет, мында ар бир жогору турган деӊгээл өзүнөн ылдый турган деӊгээлдерге таянат.
Базалык деӊгээл программалык камсыздоонун эӊ төмөнкү деӊгээли болуп эсептелет. Базалык программалык камсыздоо базалык аппараттык камсыздоонун курамында камтылган жана киргизүү–чыгаруунун базалык системасын (BIOS) уюштуруу менен туруктуу сактоочу түзүлүштүн (ТСТ) атайын микросхемаларында сакталат. Программалар жана берилмелер туруктуу сактоочу түзүлүшкө өндүрүштөн чыгуу этабында жазылат жана эксплуатация учурунда өзгөртүлбөйт.
Системдик деӊгээл өтмөк деӊгээл болуп эсептелет. Бул деӊгээлдин программалары компьютердин башка программаларын базалык деӊгээлдин программалары жана тикеден–тике аппараттык камсыздоо менен өз ара аракеттенүүсүн камсыз кылат. Системдик деӊгээлдин программаларынан бардык эсептөө системасынын иштетүү көрсөткүчтөрү көз каранды болот. Компьютерге жаӊы жабдууну кошууда системдик деӊгээлде калган программалар үчүн бул жабдуу менен өз ара байланышты камсыз кылуучу программа орнотулушу керек (драйвер). Айкын жабдуулар менен өз ара аракеттенүү үчүн арналган айкын программаларды драйверлер деп аташат.
Системдик деӊгээлдин программаларынын башка классы колдонуучу менен болгон өз ара аракеттенүүгө жооп берет. Ушуга ылайык берилмелерди эсептөө системасына киргизүүгө, анын ишин башкарууга жана жыйынтыкты ыӊгайлуу формада алууга болот. Булар колдонуучунун интерфейсин камсыз кылуу каражаты болуп эсептелишет жана алардан компьютер менен иштөө ыӊгайлуулугу жана өндүрүмдүүлүгү көз каранды болот. Системдик деӊгээлдин программалык камсыздоосунун жыйындысы компьютердин оперативдик сиетемасынын өзөгүн түзөт. Оперативдик системанын өзөгүнүн болушу – бул колдонуучуyнун эсептөө системасы менен практикалык иштөө мүмкүнчүлүгү үчүн биринчи шарт. Оперативдик системанын өзөгү эсти, киргизүү–чыгаруу процесстерин, файл системасын башкаруу, өз ара аракеттенүүнү уюштуруу жана процесстерди диспетчеризациялоо, ресурстарды колдонуу эсебин алуу, командаларды иштетүү ж. б. у. с. функцияларды аткарат.
Кызматчы деӊгээлдин программалары базалык деӊгээлдин программалары менен да, системдик деӊгээлдин программалары менен да өз ара аракеттенишет. Кызматчы программалардын милдети болуп компьютердик системаны текшерүү жана жөндөө боюнча иштерди автоматташтыруу, ошондой эле системалык программалардын функцияларын жакшыртуу эсептелет. Кээ бир кызматчы программалар (тейлөө программалары) дароо эле оперативдик системанын курамында болот, бирок көпчүлүгү сырткы программалар болуп эсептелишет жана операциялык системанын функцияларын кеӊейтишет. Башкача айтканда кызматчы программаларды иштеп чыгууда эки багыт каралат: операциондук система менен биргелешүү, автономдук иштөө.
Бул деӊгээлдин программалык камсыздоосу айкын маселер (өндүрүштүк, чыгармачылык, кызыктыруучу жана үйрөнүүчү) аткарыла турган колдонмо программалардын комплексин берет. Колдонмо (прикладдык) жана системдик программалык камсыздоонун ортосунда жакын өз ара аракеттенүү орун алган. Эсептөө системасынын универсалдуулугу, колдонмо программалардын жеткиликтүүлүгү жана компьютердин функционалдык мүмкүнчүлүктөрүнүн кеӊдиги карамагыбыздагы оперативдик системанын тибинен, анын өзөгүндө жайгашкан системалык каражаттардан жана адам–программа–жабдуу комплексинин өз ара аракеттенүүсүнөн көз каранды.
Программалык камсыздоонун классификациясы ISO/IEC 12182 эл аралык стандартында жетишээрлик толук формалдыштырылган. Стандарттын биринчи версиясы ПКнун классификациясынын 16 чен өлчөмүн караган:
Программалык каражаттардын класстык функциясынын мисалдары төмөнкүдөй:
Прикладдык чөйрөнүн класстар мисалы:
Программалык каражаттын көлөм класстарынын мисалы:
Критикалуулук класстарынын мисалы:
Колдонуучу класстары:
Туруктуулук класстары:
Индустриялык сектор боюнча программалык камсыздоо үч категорияга бөлүнөт:
Алып жүрүү (переносимость) деңгээли боюнча:
Жайылтуу жана колдонуу ыкмасы боюнча программалар төмөнкүдөй бөлүнөт:
Багыштоосу боюнча:
Программанын түрү боюнча:
Процессор, оперативдик эс, киргизүү-чыгаруу түзүлүштөрү, тармактык жабдуулар сыяктуу компьютердик системанын компоненттерин башкаруучу программалар комплекси системалык программалык камсыздоо болот. Бир жагынан аппаратура, экинчисинен колдонуучу болуп, кандайдыр бир катмар аралык интерфейстин ролун аткарат.
Прикладдык ПКдон айырмаланып, системалык конкреттүү бир тапшырмаларды чечпейт, болгону башка программалардын иштөөсүн камсыз кылат. Кызматчы функцияларды берип, эсептөөчү системанын аппараттык ресурстарын башкарат. Тигил же бул программаны системалык деп атоо шарттуу гана болуп, конкреттүү контекстте колдонулуучу макулдашуулардан көз каранды. Эреже катары системалык программалык камсыздоого: операциялык системалар, кызматчы программалар, кабыкча операциялык системалар жана программалар, утилиталар, техникалык тейлөө системалары, маалымат базасын башкаруу системалары, кеңири класстагы байланыштыруучу программалык камсыздоолор тишелүү.
Колдонуучунун кайсы бир тапшырмасын аткарууга арналган, жана колдонуучу менен түздөн-түз иш аракетте болуучу программа — прикладдык ПК болот.
Колдонуучу ПКну тиешелүү лицензиясы менен кошо алып, лицензиянын шарттарын аткарууга тийиш. Көбүн эсе бул шарттар колдонуучу тарабынан программдык өндүрүмдү башкаларга берүүсүн, кодун өзгөртүүсүн чектейт. Программалык камсыздоонун бөлүгү эркин лицензия менен да берилет. Мындай лицензиялар программаны жайылтууга, аны модификациялоого укук берет.
Акысыз, ошондой эле шарттуу акысыз программалар бар. Шарттуу акысыз учурунда колдонуучу программанын функциялары чектелген версиясын убактылуу колдонууга акысыз алат. Колдонуу убактысы бүткөн соң программаны сатып алууга тийиш, болбосо компьютерден же башка гаджетинен өчүрүп салышы (деинсталляция) керек.