Л. 2.1

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

1.

4 Езици за програмиране
“Компютрите правят това, което им
казваме да правят, а не това което искаме
да правят.”

Вече неколкократно използвахме думата програма в тази книга.


Програма е списък от инструкции, които описват действията,
които трябва да бъдат извършени от компютъра.
Помнете, че компютрите са само машини. Те не са умни, дори
обратното. Те не правят нищо, докато не получат детайлни
инструкции. Например – текстовите редактори са програми, които са
написани от някой програмист, така че да вършат точно определени
действия, когато вие пишете текст. Поуката е, че за да правят
компютрите това, което искаме, трябва да им го „казваме” правилно.
За да постигнем това, най-напред трябва да усвоим основните
елементи, понятия и правила на езика за програмиране, на който ще
„разговаряме” с тях.
Процесът на проектиране и реализиране на програми се нарича
компютърно програмиране.
Както вече споменахме, процесорът изпълнява така наречените
машинни инструкции. Различните производители на процесори
задават различни набори от машинни инструкции. Машинният език,
най-общо можем да кажем, че е редица от команди, представени от
нули и единици. Все пак програмирането с използване на машинен
език е много сложно и неестествено, затова в течение на годините
програмистите са се стремили да го избегнат. Това е довело до
създаването на стотици езици за програмиране.
Език за програмиране се нарича множество от символи и
правила, които определят начините за съставяне на комбинации от
тези символи за записване на конструкции, имащи определен смисъл.
Езиците за програмиране могат да бъдат класифицирани по различни
признаци. Най-общият от които е - степента на зависимост на езика
от типа на компютъра. По този признак езиците се делят на две големи
групи – машинно зависими и машинно независими.

11
Представители на машинно зависимите езици са асемблерите.
Машинно независимите езици се делят на различни групи в
зависимост от критериите, по които ги оценяваме, и подходите и
методите за програмиране, които “изповядват”. Машинно
независимите езици са известни още и като езици от високо ниво. За
да може с езици от високо ниво да се създават програми, изпълними
от компютър, се разработват т.нар. транслатори.
Транслация е процес на превеждане на програма, написана на
един език, наречен изходен език (source), в еквивалентна програма на
втори език, наречен език-цел (target).
Обикновено, езикът-цел е машинния език за съответния процесор.
Програма преведена на машинен език се нарича машинен код. Друго
предимство на езиците от високо ниво е това, че транслаторите могат
да направят диагностика на програмата по време на нейното
превеждане на машинен език, което помага да се открият допуснати
или вероятни грешки.
Грешките най-общо се разделят на два основни вида, в зависимост от
фазата на откриването им. Те биват: грешки по време на транслиране
и грешки по време на изпълнение. Най-често грешките по време на
транслация са синтактични, т.е. транслаторът е открил, че в текста на
програмата нещо не отговаря на правилата на езика. Когато
съществуват синтактични грешки, транслаторът не генерира машинен
код. Съществуват компилатори, които при откриване на синтактична
грешка продължават с транслирането на програмата от следващата
възможна конструкция, като с това се цели да се открият наведнъж
повече синтактични грешки.
Грешките по време на изпълнение са по-трудни за откриване. Много
често те могат да останат скрити дълго време. Обикновено ги
откриваме, като изпълняваме многократно крайната програма с
различни входни данни. Отговорност на разработчика е да тества
програмата за възможни логически грешки. И тъй както няма
безгрешни хора, се предполага, че няма и безгрешни програми, които
се създават без да се налага да се поправят. Още повече, че и самите
транслатори, а и операционните системи (виж следващата точка) са
също програми, написани от хора.
Накратко можем да кажем, че транслаторите имат следните фази:
 Лексичен анализ – извършва се граматичен разбор на програмата

12
 Синтактичен анализ – разпознават се основните конструкции на
езика и се създава междинна форма (описание) на програмата
 Интерпретация – разпознава се точния смисъл на конструкциите,
открити при синтактичния анализ
 Оптимизация – търсят се начини за повишаване бързодействието
на програмата и/или съкращаване на обема й.
 Генериране на кода – съставят се машинните команди
 Свързване - окончателно се формира програмния код, като към
него се добавят библиотеки или други модули (от вече готови
алгоритми), който впоследствие може да бъде изпълнен.
Транслаторите биват два основни вида:
 интерпретатори
 компилатори.
Най-характерното различие между тях е, че имат различни фази,
както по време на транслация, така и по време на изпълнение на
програмата. Интерпретаторите превеждат програмите по
конструкции, като всеки път, когато дадена конструкция е преведена,
тя се изпълнява. Компилаторите от своя страна първо превеждат
цялата програма на машинен език и след това програмата е готова за
изпълнение.
Всеки един от различните видове транслатори има свои предимства и
недостатъци:
 Предимствата на компилатора са: по-добър за настройка, по-
ефективен краен код, по-бърз при многократно изпълнение на
една програма.
 Предимства на интерпретатора: по-лесен за създаване, по-лесен за
настройване (или настройка) на програмата.
Съществуват и хибридни транслатори. Те съдържат както елементи
на компилация, така и елементи на интерпретация. При тях
програмата се превежда до програма на междинен език с компилатор.
След това тази програма бива оптимизирана и чак след това се
предава за изпълнение на интерпретатор.
1.5 Задачи
Задача 1. Да се опишат двата основни вида транслатори. Какви са
принципните разлики между тях?

13

You might also like