Машина тілі
Программалау тілдері туралы
Программаларды жасау кезінде қазіргі заманғы компьютерлерде әр түрлі деңгейдегі программалау тілдері пайдаланылады. Жалпы алғанда, тіл деп ақпаратты жазу және оны белгілі ережелер бойынша түрлендіруді формальды түрде сипаттайтын құралдар жиынын айтамыз. Тілдің құрамында ақпараттың негізгі элементтерін құруға арналған құралдар және сол элементтерден мазмұны әр түрлі құрылымдар құрастыруға мүмкіндік беретін ережелер жүйесі болады.
Программалау тілі — деректерді жазуға және оларды белгілі ережелер бойынша өңдеуге арналған, адам мен компьютерді байланыстыратын формальды тіл.
Программалау тілдерін жіктеу
Әр түрлі белгілер бойынша жіктеуге болатын жүздеген программалау тілі бар. Ең кең тараған жіктеу — тілдің машинаға жақындық дәрежесіне негізделеді. Осы белгі бойынша тілдер екі үлкен топқа бөлінеді:
Машинаға тәуелді тілдер
- Машина тілі
- Машинаға бағдарланған тілдер (автокодтар)
Машинаға тәуелсіз тілдер
- Процедуралы-бағдарланған тілдер
- Проблемалы-бағдарланған тілдер
Машинаға бағдарланған тілдердің деңгейлері
Машинаға бағдарланған тілдер (автокодтар) әдетте екі деңгейге бөлінеді:
- Символдық кодтау тілдері (мнемокодтар)
- Макротілдер
Макротілдер машина тілінің командаларына тікелей ұқсамайтын макрокомандаларды қолдануға мүмкіндік береді. Нәтижесінде программа қысқарады, тіл құралдарының жиыны кеңейеді, ал программалаушының еңбек өнімділігі артады.
Машинаға тәуелсіз тілдер: процедуралы және проблемалы бағыт
Процедуралы-бағдарланған тілдер
Бұл тілдер есепті шешу алгоритмін сипаттауға арналған, сондықтан оларды кейде алгоритмдік тілдер деп те атайды.
Маңызды ескерту: «алгоритмдік тіл» ұғымы әрдайым «программалау тілі» ұғымымен толық сәйкес келе бермейді. Егер алгоритмдік жазу компьютерге тікелей енгізіліп, дайын жұмысшы программаға түрлене алса, онда ол программалау тілі ретінде қолданылады. Кейбір алгоритмдік тілдер тек қосымша құралдармен толықтырылғаннан кейін ғана программалау тіліне айналады.
Проблемалы-бағдарланған тілдер
Бұл тілдер есептерді сипаттауға қызмет етеді. Алайда мұндай тілде жазылған программа компьютерде тікелей орындалмайды: оны орындау үшін алдын ала сол компьютердің машина тіліне аудару қажет, ал бұл — жеткілікті күрделі мәселе.
Транслятор (аудармашы-программа) не үшін керек?
Алгоритмдік тілден программа мәтінін машина тіліне аудару жұмысын компьютердің өзіне жүктеуге болады. Ол үшін әрбір алгоритмдік тіл машина тіліне формальды аударылатын болуы керек, яғни аудару ережелерін алгоритм түрінде дәл тұжырымдауға мүмкіндік беруі тиіс. Осы алгоритм бір рет машиналық программа түрінде жасалса, кейін компьютер сол программаның көмегімен берілген тілде жазылған кез келген программаны нақтылы компьютердің машина тіліне аударып береді. Мұндай арнайы аудармашы программа транслятор деп аталады.
Машина тілі
Компьютердің ақпараттық бөлігі тікелей түсінетін жалғыз тіл — машина тілі. Машина тілі деп компьютер процессоры орындайтын командалардың кодын айтамыз. Процессор архитектурасы әр түрлі болса, машина тілдері де әр түрлі болады. Тек өзара үйлестірілген процессорларда ғана командалар жүйесі сәйкес келеді (төменнен жоғары қарай үйлесімділік).
Команда кодтарын жазу тәсілдері
Машина тілінде программалау — программадағы командалардың нақты кодтарын тікелей жазу. Командалар коды әр түрлі санақ жүйелерінде берілуі мүмкін:
- екілік
- сегіздік
- он алтылық
Мысал: MOV B, A командасының коды
Мағынасы: A аккумуляторындағы мәнді B регистріне жіберу
| Санақ жүйесі | Коды |
|---|---|
| Екілік | 010001111 |
| Сегіздік | 107 |
| Он алтылық | 47 |
Көрсетілгендей, команда он алтылық санақ жүйесінде ықшамырақ жазылады. Машина кодтарымен программалау үшін ең қарапайым жағдайда қағаз, қалам және кодты тасымалдаушыға түсіретін құрал жеткілікті. Дегенмен практикада кодтарды енгізу, түзету және бақылау көп уақыт алады.
Машина тілінің негізгі қиындықтары
- Процессор командаларының көптеген кодтарын жаттап алу қажет.
- Жадтың абсолюттік адрестерімен жұмыс жасау қиын; шартты өтулер көп болса, ұзын программаны қадағалау күрделенеді.
- Дайын программаны жетілдіру және өзгерту өте күрделі.
- Машина кодындағы программалар оқуға ауыр.
- Тек сандармен жұмыс жасау жалықтырады және қателік ықтималдығын арттырады.
Сондықтан машина тілі — «цифрлар тілі»: программаны жазу және жөндеу көп уақыт алады, әрі күнделікті программалау үшін қолайлылығы төмен. Қазіргі кезде машина тілі көбіне қысқа фрагменттерге шағын түзету енгізу қажет болғанда ғана қолданылады.
Ассемблер және макроассемблер тілдері
Ассемблер — символдық (таңбалық) тіл. Ол машина тілінде программа жасаудың бірқатар кемшіліктерін азайтады: командалар мен деректерді әріптік немесе әріп-цифрлық таңбалармен белгілеуге мүмкіндік береді.
Ассемблер қалай жұмыс істейді?
Ассемблер тіліндегі командалар машина тіліне аударылған кезде, әрбір оператор өзіне сәйкес цифрлық кодпен алмастырылады. Командалардың символдық аттарын екілік кодқа түрлендіру жұмысын арнайы программа — ассемблер (аударғыш) орындайды. Бұл программалаушыны күрделі, қателікке бейім қол еңбегінен босатады.
Мнемоникалар: оқылымдылық пен мағына
Ассемблерде таңбалық атаулар программаның мағынасын (семантикасын) айқындайды, ал команданың қысқартылған атауы оның негізгі функциясын көрсетеді. Мысалы: ADD — қосу, SUB — азайту, PARAM — параметр. Мұндай атауларды есте сақтау әлдеқайда жеңіл.
Артықшылықтары және қолданылуы
- Машина тіліне қарағанда программаны ұтымды жазуға және жөндеуге ыңғайлы.
- Процессор ресурстарын толық пайдалануға мүмкіндік береді.
- Жоғары біліктілікте өте жылдам әрі жадыны аз алатын программалар жасауға жағдай жасайды.
Ассемблер — машинаға бағдарланған тіл: процессордың әр командасына символдық ат беретіндіктен, ол белгілі бір процессор архитектурасына тәуелді. Соған қарамастан, енгізу-шығару құрылғыларын басқару сияқты төмен деңгейлі міндеттерде ассемблер жиі пайдаланылады.
Ассемблер программалаушысы нені анықтай алады?
- Процессор командасының символдық атауын.
- Программалық жолдардың стандартты пішімін.
- Команда нұсқалары мен адрестеу тәсілдерін көрсету ережелерін.
- Таңбалық және бүтін сандық тұрақтыларды әр түрлі санақ жүйесінде жазу үлгілерін.
- Трансляция процесін басқаруға арналған псевдокомандаларды.
Орындау жылдамдығы және өлшемі
Ассемблерде жазылған программалар, әдетте, басқа көптеген тілдерде жазылған баламаларымен салыстырғанда жылдамырақ орындалады және көлемі кіші болады. Бұл жадты үнемдеуге және компьютер мүмкіндіктерін тиімді пайдалануға көмектеседі.
Макроассемблер
Ассемблерді машина командаларының белгілі бір тобына баламалы макрокомандалармен толықтыру тәжірибесі кең тараған. Осындай кеңейтілген тіл макроассемблер деп аталады. Макрокомандалар ірі «құрылыс блоктары» арқылы программа құруды жеңілдетіп, ассемблерді жоғары деңгейлі тілдерге бір табан жақындатады.