ЕЗИЦИ ЗА ПРОГРАМИРАНЕ НА СИСТЕМИ ЗА РАБОТА В РЕАЛНО ВРЕМЕ
| Информационни технологии | 2009-12-04 | 97 сваляния |
ГЛАВА 2. ЕЗИЦИ ЗА ПРОГРАМИРАНЕ
НА СИСТЕМИ ЗА РАБОТА В РЕАЛНО ВРЕМЕ
2.1. Дефиниране на ново лингвинистично ниво
По-дълго, отколкото в други области на обработката на данни, асемблерните езици са доминирали при програмиране на приложения за работа в реално време. Причина за това са били високите цени за процесорите и паметите, форсиращи оптималното програмиране от гледана точка на време за изпълнение и използване на паметта. Асемблерният език е първото ниво на абстракция във виртуалната машина на програмните езици. Той е основата, върху която се проектират езиците за програмиране от високо ниво.
Ако даден език е пригоден за използуване в една машина, има три начина, чрез които може да се дефинира ново лингвинистично ниво: разширение, транслация, интерпретация [1].
Разширение. При процедурно разширение се създава едно ново лингвинистично ниво чрез написване на множество процедури, които изразяват елементарните операции на новото ниво с термините на елементарните операции на оригиналното изходно ниво. По този начин новите типове данни и елементарните операции могат да бъдат определени и да стане възможен достъпът до типовете данни и елементарните операции от изходното ниво.
Транслация. Дефинирането на ново лингвинистично ниво чрез транслация означава написване на компилатор, който транслира програмите от новото ниво в програми на езика на изходното ниво. Характерна за този метод е необходимостта от компилация, като стъпка към изпълнение на програмата. Програмите, кодирани на езика от новото ниво, не се изпълняват директно.
Интерпретация. Дефиниране на ново лингвинистично ниво чрез интерпретация означава написване на една интерпретираща програма за езика на новото ниво с термините на типовете данни и елементарните операции на изходното ниво. Програмите от новото лингвинистично ниво са представени във форма, удобна за непосредствено изпълнение (като машинен код на новото ниво).
Разликата между разширение и интерпретация е тази, че при разширението елементарните операции на основната система остават непосредствено достъпни за новото ниво, докато това не е така при интерпретацията. А разликата между транслация и интерпретация е тази, че при транслацията операторите и данните се създават на езика на изходното ниво. Напротив при интерпретацията се въвежда една фундаментално различна форма на организация на данните и елементарните операции. Съвременните стандартни процедурни езици фактически не създават възможност за интерпретация, докато много внимание се отделя на процедурното разширение и транслация. Това не е учудващо, като се имат предвид характерните особености на интерпретацията, а именно:
съществено различни елементарни операции и организация на данни;
недостъпен (непосредствено) изходен език за ползващия интерпре-тацията.
Ролята на разширението и транслацията са всъщност очевидни, но на пръв поглед изглежда, че интерпретацията няма място при програми-рането в реално време, тъй като води до загуби на много време. Интерпретиращият код обаче, има следните предимства:
изисква по-малко памет за запомняне на кода;
по-лек е за модификация;
осигурява вградена софтуерна защита срещу грешки, породени от случайни причини.
Тези преимущества правят интерпретацията много съществен метод при програмното осигуряване на комутационни системи, където съвременните тенденции оценяват по-високо икономията на човешки ресурси, отколкото на машинно време. В този смисъл използуването на интерпретацията е предпочитан метод за дефиниране на ново лингвинистично ниво.
2.2. Общи критерий за проектиране на езици за работа в реално време от високо
ниво
Ще разгледаме 6 основни критерия за проектиране на езици за работа в реално време. Тези критерии са: надеждност, четливост, гъвкавост, простота, преносимост и ефективност.
Надеждност. Надеждността на езика е мярка за степента, до която програмните грешки могат да бъдат открити автоматично чрез компилатора или системата на езика,
Тагове от реферата: сембернит, ингвинистно, иниране, амиане, доминира, колкот, дълго, други











