Кіріспе

Теориялық компьютерлік ғылым – компьютерлік ғылым мен математиканың есептеудің абстрактілік және математикалық негіздеріне, мысалы есептеу теориясы, формалды тілдер теориясы, лямбда-есептеу және типтер теориясы сияқты салаларға бағытталған ішкі саласы. Теориялық аймақтарды нақты анықтау қиын. ACM-нің алгоритмдер және есептеу теориясы бойынша арнайы қызығушылық тобы (SIGACT) келесі сипаттаманы ұсынады:

Алгоритмдер

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

Автоматтар теориясы

Автоматтар теориясы – абстрактілі машиналар мен автоматтарды, сондай-ақ оларды қолдану арқылы шешілетін есептеу мәселелерін зерттейтін ғылым. Бұл теориялық компьютерлік ғылымның дискретті математика (математиканың және компьютерлік ғылымның бір бөлімі) саласындағы теориясы болып табылады. "Автомат" сөзі грек тіліндегі αὐτόματα сөзінен шыққан, ол "өздігінен әрекет ететін" деген мағынаны білдіреді. Автоматтар теориясы – кіріс және шығыс процесін логикалық тұрғыдан түсінуге көмектесетін, есептеудің аралық кезеңдерімен немесе оларсыз жұмыс істейтін виртуалды машиналарды зерттейді.

Кодтау теориясы

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

Есептеулік күрделілік теориясы

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

Есептеу геометриясы

Есептеу геометриясы – геометриялық ұғымдармен тұжырымдалатын алгоритмдерді зерттейтін компьютер ғылымының бір саласы. Таза геометриялық проблемалардың кейбіреуі есептеу геометриялық алгоритмдерді зерттеу нәтижесінде туындайды, және осындай проблемалар да есептеу геометриясының құрамына жатады. Есептеу геометриясының дамуына түрткіс болған негізгі фактор компьютерлік графика және компьютерлік көмекпен жобалау және өндіру (CAD/CAM) саласындағы жетістіктер болды, бірақ есептеу геометриясының көптеген мәселелері классикалық сипатқа ие және математикалық визуализациядан туындауы мүмкін. Есептеу геометриясының маңызды қолданыс аймақтарына робототехника (қозғалыс жоспарлау және көріс проблемалары), географиялық ақпараттық жүйелер (ГИС) (геометриялық орналасу және іздеу, бағытты жоспарлау), интегралды схемаларды жобалау (IC геометриясын жобалау және растау), компьютерлік инженерия (CAE) (тор генерациясы), компьютерлік көру (3D реконструкция) жатады.

Есептеулік оқыту теориясы

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

Есептеулік сандар теориясы

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

Криптография

Криптография – үшінші тараптардың (қарсыластардың) қатысуында қауіпсіз байланыс техникаларын зерттеу және қолдану практикасы. Көбінесе, бұл қарсыластардың ықпалын жоятын және ақпараттық қауіпсіздіктің түрлі салаларына қатысты хаттамаларды құру мен талдау туралы, мысалы, деректердің құпиялылығы, деректердің толықтығы, аутентификация және жауаптан бас тарту емес болуы. Қазіргі заманғы криптография математика, компьютерлік ғылым және электротехника ғылымдарының тоғысқан жері. Криптографияның қолданылуына банкомат карточкалары, компьютерлік парольдер және электрондық коммерция жатады. Қазіргі криптография математикалық теория мен компьютерлік ғылымның тәжірибесіне негізделген; криптографиялық алгоритмдер есептеу қиындығына байланысты жасалады, бұл оларды қарсыластар үшін тәжірибеде бұзуды қиындатады. Мұндай жүйені теориялық тұрғыдан бұзу мүмкін, бірақ белгілі бір практикалық тәсілдермен оны іске асыру мүмкін емес. Сондықтан мұндай схемалар есептеулік тұрғыдан қауіпсіз деп аталады; теориялық жетістіктер, мысалы, бүтін сандарды жіктеу алгоритмдерінің жақсаруы және жылдам есептеу технологиялары осы шешімдерді үнемі жаңартуды талап етеді. Теориялық тұрғыдан қауіпсіз ақпараттық схемалар да бар, оларды шексіз есептеу қуатымен де бұзу мүмкін емес – мысалы, бір реттік блокнот, бірақ мұндай схемаларды іске асыру, теориялық тұрғыдан бұзуға болатын, бірақ есептеулік қауіпсіздігі бар механизмдерге қарағанда қиын.

Деректер құрылымы

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

Таратылған есептеу

Таратылған есептеулер таратылған жүйелерді зерттейді. Таратылған жүйе – желідегі компьютерлерде орналасқан компоненттер хабар алмасу арқылы байланысып, өз әрекеттерін үйлестіретін бағдарламалық жүйе. Компоненттер ортақ мақсатқа жету үшін бір-бірімен өзара әрекеттеседі. Таратылған жүйелердің үш маңызды қасиеті: компоненттердің параллель жұмыс істеуі, ортақ уақыттың болмауы және компоненттердің жеке-жеке істен шығуы. Хабар алмасу механизмі үшін RPC сияқты қосылыстар мен хабар кезектері де болғанда, көптеген нұсқалар бар. Таратылған жүйелердің маңызды міндеті мен қиындығы – компоненттердің орналасқан жерін жасыру.

Ақпаратқа негізделген күрделілік

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

Ресми әдістер

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

Ақпарат теориясы

Ақпараттық теория – қолданбалы математиканың, электр техникасының және компьютерлік ғылымның ақпаратты сандық өлшеуді қамтитын саласы. Ақпараттық теорияны Клод Э. Шеннон деректерді сығу және деректерді сенімді сақтау мен беру сияқты сигналдарды өңдеу операцияларының негізгі шектерін табу үшін әзірледі. Ол пайда болғаннан бері статистикалық қорытындылау, табиғи тілді өңдеу, криптография, нейробиология, молекулалық кодтардың эволюциясы мен функциясы, статистикадағы модельдерді таңдау, термиялық физика, кванттық есептеу, лингвистика, плагиатты анықтау, үлгілерді тану, аномалияларды анықтау және деректерді талдаудың басқа да түрлері сияқты көптеген басқа салаларда қолданыла бастады. Ақпараттық теорияның негізгі тақырыптарының қолданылуына жоғалтусыз деректерді сығу (мысалы, ZIP файлдары), жоғалтулы деректерді сығу (мысалы, MP3 және JPEG файлдары) және арналық кодтау (мысалы, сандық абоненттік желі (DSL)) жатады. Бұл сала математика, статистика, компьютерлік ғылым, физика, нейробиология және электр техникасының тоғысқан жерінде орналасқан. Оның әсері ғарышқа "Вояджер" миссияларының табысқа жетуіне, компакт-дискінің ойлап табылуына, ұялы телефондардың мүмкіндігіне, Интернеттің дамуына, лингвистика мен адамның қабылдауын зерттеуге, қара тесіктерді түсінуге және көптеген басқа салаларға зор үлес қосты. Ақпараттық теорияның маңызды кіші салалары: бастапқы кодтау, арналық кодтау, алгоритмдік күрделілік теориясы, алгоритмдік ақпарат теориясы, ақпараттық-теориялық қауіпсіздік және ақпаратты өлшеу.

Машиналық оқыту

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

Параллель есептеу

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

Бағдарламалау тілінің теориясы және бағдарлама семантикасы

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

Кванттық есептеулер

Кванттық компьютер – деректерге операция жасау үшін суперпозиция және түйісу сияқты кванттық механикалық құбылыстарды тікелей пайдаланатын есептеу жүйесі. Кванттық компьютерлер транзисторларға негізделген цифрлық компьютерлерден өзгеше. Цифрлық компьютерлер деректерді екілік сандарға (биттерге) кодтауды қажет етеді, олардың әрқайсысы әрқашан екі анық күйдің (0 немесе 1) бірінде болады, ал кванттық есептеулер кубиттерді (кванттық биттерді) қолданады, олар күйлердің суперпозициясында болуы мүмкін. Теориялық модель – кванттық Тьюринг машинасы, сондай-ақ әмбебап кванттық компьютер деп те аталады. Кванттық компьютерлердің детерминистік емес және ықтималдық компьютерлермен теориялық ұқсастықтары бар; мысалы, бір уақытта бірнеше күйде болу мүмкіндігі. Кванттық есептеулер саласын алғаш рет 1980 жылы Юрий Манин және 1982 жылы Ричард Фейнман енгізді. Кванттық биттер ретінде кванттық кеңістік-уақыт ретінде пайдалану үшін спиндерге негізделген кванттық компьютер 1968 жылы жасалды. Кванттық есептеу операциялары өте аз кубиттерде орындалған тәжірибелер жүргізілді. Практикалық және теориялық зерттеулер жалғасуда, көптеген ұлттық үкіметтер мен әскери қаржыландыру агенттіктері криптоанализ сияқты азаматтық және ұлттық қауіпсіздік мақсаттары үшін кванттық компьютерлерді әзірлеу үшін кванттық есептеулерді зерттеуді қолдайды.

Символды есептеу

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

Өте ауқымды интеграция

Өте ірі масштабтағы интеграция (VLSI) – мыңдаған транзисторларды бір микросхемаға біріктіру арқылы интегралды схема (IC) құру процесі. VLSI 1970 жылдары күрделі жартылай өткізгіш және коммуникациялық технологиялар дамыған кезде басталды. Микропроцессор – VLSI құрылғысы. VLSI технологиясы енгізілгенге дейін көптеген интегралды схемалардың атқара алатын функциялары шектеулі болды. Электрондық тізбек процессор (CPU), оқуға арналған жад (ROM), жедел жад (RAM) және басқа да қосымша логикалық тізбектерден тұруы мүмкін. VLSI микросхема өндірушілеріне осы тізбектердің барлығын бір чипке біріктіруге мүмкіндік береді.