1. Процесът на транслация.
За да бъде използван новосъздаден ЕП от високо ниво, той трябва да се реализира чрез някой от преди това съществуващите и реализирани ЕП тоест в крайна сметка той трябва да бъде реализиран на машинния език, който е материализиран чрез хардуера на машината, а не чрез софтуер. За да бъде изпълняван ЕП от високо ниво, той трябва да може да се превежда на машинен език тоест написаните програмиста програми в текстов вид трябва да се преведат във вид, който може да се изпълни от компютъра.
а) Транслация - процесът на превеждане на текстовия код на програмата в изпълним код.
б) Транслатор - инструмент, който превежда текстовия код на програмата в изпълним код.
2. Компилатори и интерпретатори.
а) Видове транслатори:
- компилатор (compiler) - превежда цялата програма в програма на друг ЕП (обектен код / целеви език, object / target language).
- интерпретатор (interpreter) - чете текста на програмата и я изпълнява директно твърдение след твърдение.
3. Програмиране.
Дейности, които включват процеса на програмиране.
а) написване на програмата в текстов вид.
б) превеждане на текстовия код на програмата в изпълним.
в) изпълнение на програмата със съответните входни данни.
г) проверка за грешки в програмата и тяхното отстраняване.
д) модифициране на програмата, за да се адаптира към промените в света и нуждите на потребителите.
е) разширяване и допълване на функционалните възможности на програмата, за да бъде тя по-полезна и удобна за потребителите.
4. Програмни грешки.
При създаването на една програма могат да се допуснат три вида грешки.
а) Синтактични грешки - твърдения в програмата, които са грешни от синтактична гледна точка.
б) Грешки по време на изпълнението на програмата - програмни конструкции, които са синтактично правилни, но са безсмислени.
в) Логически грешки - част от програмата, която е синтактично правилна, има смисъл, но е грешна от гледна точка на действията, които програмата трябва да изпълнява.
5. Среди за програмиране.
а) Среда за програмиране - съвкупност от програмни средства и инструменти за разработка на програми на някакъв ЕП.
б) Предназначение.
- цялостна поддръжка на програмните дейности.
- улеснява всички етапи от разработването на програмите.
- осигурява създаването на високо-качествени, ефективни и надеждни програми.
в) Могат да включват:
- Редактори.
- Дебъгери.
- Компилатори.
- Свързващи редактори и други.
6. Среди за програмиране. Програмен редактор.
а) Предназначение - написване (кодиране) на текста на програмата и създаване на файловете, от които се състои тя.
б) Характеристики:
- улесняват кодирането, като предлагат избор между допустимите възможности при въвеждане на следващата конструкция според контекста, формиран до момента.
- подпомагат структурирането на текста и подобряват четливостта на програмата за човека.
- предупреждават за синтактични грешки, чрез форматиране на кода на базата на синтаксиса на
използвания ЕП.
7. Среди за програмиране. Транслатори и свързващи редактори.
а) Транслатори.
- предназначение - превежда програмата, написана с помощта на редактора на език, разбираем за машината и я записва във файл.
- характеристики: подпомага откриването и премахването на синтактични грешки; оптимизиращи транслатори; файлът, създаден от транслатора се нарича обектен код – предимно машинен код. Той притежава повечето от изграждащите блокове на програмния код освен системния код, който се намира във вградените библиотеки;
б) Свързващи редактори.
- свързва обектния код със съответния библиотечен код, т.е. свързването на изграждащите блокове в едно.
- създава изпълнимият файл.
8. Среди за програмиране. Зареждаща програма и дебъгери.
а) Зареждаща програма.
- предназначение - зарежда изпълнима програма, създадена от компилатора в паметта на компютъра с цел тя да бъде изпълнена.
- характеристики: тя е част от операционната система; след зареждането на програмата операционната система казва на процесора да започне изпълнението на последователността от инструкции от мястото в паметта, където сега се намира програмата
б) Дебъгери.
- предназначение - подпомага откриването и премахването на грешките по време на изпълнението на програмата и логическите грешки. Самият процес се нарича дебъгване. Дебъгърът позволява т.нар. трасиране (Tracing) на програмата. Трасирането включва
следене на състоянието на паметта (напр. стойност на променлива) при изпълнението
на програмните инструкции, така че цикълът от операции да може да се проследи и да
се открият грешките.
9. C++ програмиране.
Съчетава принципите на две програмни парадигми - процедурната и обектно-ориентираната.
Създаден от Строуструп (Dr Bjarne Stroustrup) през 80-те години в AT&T Bell Labs.
10. Основни лексикални елементи на програмите.
Лексикалните елементи са основни градивни елементи на програмите, които са значещи за
компилатора.
а) име, идентификатор (identifier) - последователност от символи, което служи за идентификация обикновено на програми (алгоритми), подпрограми (подалгоритми), елементи на данните и др.
б) ключова дума (keyword) - предварително дефинирани имена, които имат специално
предназначение при писане на програмите и не могат да бъдат използвани за други цели.
в) константа (constant) - стойност, която не се променя по време на изпълнение използва в процеса на изчисление.
г) операция (operator) - задава намирането на някаква стойност по дадени един, два или
три операнда (съответно едно дву три аргументна операция).
д) коментар (comment) - текст, който се игнорира от компилатора, но е полезен за програмиста.
е) препинателен знак (punctuator) – ! % ^ & * ( ) – + = { } | ~[ ] \ ; ' : " < > ? , . / #.
11. Основни елементи на ЕП от гледна точка на синтаксиса и семантиката.
Най-общо ЕП включва средства за описание на два структурни елемента.
а) Деклариране и дефиниране на данните - служи за определяне на компютърното представяне на входните и изходните данни и междинните резултати, на техния тип и структура, както и свързаните с тях изисквания за памет.
б) Деклариране и дефиниране на обработката - определя правилата за обработка на данните, как евентуално те се групират, както и последователността на тяхното прилагане чрез т.н. оператори (команди, statements) на ЕП.
12. Абстракции в ЕП.
а) Необходимост.
- компютрите нямаше да са толкова популярни ако всеки път, когато искаме да умножим две числа трябва да слизаме до нивото на машинното представяне.
- програмистите имат нужда да описват програмите по начин, който има смисъл за самите тях.
б) Същност.
Абстракциите в ЕП се използват, за да пресъздадат човешкото разбиране за данните и тяхната обработка, отделяйки го от компютърното разбиране.
13. Видове абстракции в ЕП.
а) Абстракции на данните - служат за изразяване свойствата на данните и тяхната функционалност.
- базови абстракции на данни - представяне на данните на базата на концепцията
за тип на данните. Те се наричат прости или примитивни типове данни.
- структурирани абстракции на данни - абстракции на съвкупности или свързани
стойности от данни. Те се наричат структурни типове данни.
б) Абстракции за контрол на управлението - предназначени са да управляват последователността на изпълнението.
- базови абстракции за контрол - оператори, които комбинират няколко машинни
инструкции в по-разбираемо абстрактно твърдение. Те се наричат прости оператори.
- структурирани абстракции за контрол - оператори, които разделят програмата
на групи от инструкции и управляват тяхното изпълнение. Те се наричат структурни оператори.
петък, 30 декември 2011 г.
четвъртък, 29 декември 2011 г.
Езици за програмиране и програми
1. Дефиниция на език за програмиране.
а) Език - система от знаци, използвани за комуникация.
б) Език за програмиране(program language).
- система от знаци, използвана от човека при комуникация, която позволява определянето и записването на задачи(по-точно алгоритми) по недвусмислен начин с такава степен на детайлизация, че те да могат да бъдат интерпретирани (изпълнени) автоматично тоест от компютър.
- език за програмиране (ЕП) е система от означения за описание на изчисленията във форма, която може да се прочете машината и от човека.
в) Изчисление - всеки процес, извършван от компютъра.
г) Програма - спецификация на изчисленията.
2. Характеризиращи елементи на ЕП.
Както всеки писмен език, така и езикът за програмиране се основава на азбука. Азбуката е винаги крайно множество от символи.
а) Правилни изречения на даден език представляват последователности от символите на азбуката, конструирани по така наречените синтактични правила на езика (синтаксис, sytax). Правилните изречения написани на някой от езиците за програмиране се наричат програми. Разбирането, което се влага в така конструираните правилни изречения, тоест програмите и техните съставни части, се определят от така наречените семантични правила на езика (семантика, semantics). Взети заедно, азбуката, синтаксисът и семантиката определят езика за програмиране.
3. Синтаксис и семантика на ЕП.
Строго определен набор от правила на ЕП.
а) Необходимост.
- за да бъде сигурен програмистът в правилността и ефективността на програмата, която пише.
- програмата да бъде разбирана от компютъра и от всеки, който я чете.
б) Синтактичните правила определят как:
- програмите се изграждат като последователност от символи.
- думите на езикът могат да се обединяват, за да се получат правилни изречения.
в) Семантичните правила.
- преписват смисъл и значение на комбинациите от думи.
- тоест семантиката е смисълът на градивните елементи на езика и връзка на означените обекти.
Синтаксисът определя формите на програмите, а семантиката - техния смисъл.
4. Синтаксис и семантика на ЕП - примери.
а) Синтаксис:
- програма, начало, декларация, тяло, команда, израз, идентификатор и т.н. са синтактични концепции в програмните езици.
- int a = 2 е синтактично правилно твърдение на C++.
б) Семантика:
- int a = 2; за програмиста на C++ то означава да се намери ново място в паметта и да се запази в него числото две.
5. Видове езици за програмиране.
ЕП най-често се класифицират според:
- областта на приложение.
- нивото на абстракция.
- програмната парадигма заложена в основата на реализацията им.
6. Видове ЕП според областта на приложение.
а) Универсални ЕП - пригодени за описание на произволни алгоритми ако всяка задача, която може да се реши с компютър, има някакво решение и което може да се изрази с този език.
б) Специализирани ЕП - създадени за специфичен вид обработка.
Примери:
- PRG - за генериране на доклади.
- Logo - за графика.
- SQL - за управление на база данни.
7. Видове ЕП според нивото на абстракция - I и II поколение.
Разглеждат се четири поколения ЕП, всяко от които е стъпка по посока на писането на програми чрез термини, които представляват човешката интерпретация на задачата и резултатите.
а) Първо поколение (50-те) - машинни езици.
Азбуката, синтаксисът и семантиката на машинните езици се определят изцяло от вида и начина избрани от вида на вътрешното представяне на алгоритмите в компютъра. Всяка команда съответства пряко на едно единствено действие на машината.
б) Второ поколение (до 1954г.) - езици за асемблиране.
Позволяват задаване на символни и относителни адреси, както и на потребителски дефинирани
команди(макроси) в примитивна форма (например Add A B вместо 10110101001110100101101).
Програма, наречена асемблер превежда всеки символ от програмата на езика за асемблиране и връща символ от машинен език. Като се съберат всички символи от машинния език, асемблерът извежда програма на машинен език.
8. Видове ЕП според нивото на абстракция - III поколение.
а) Трето поколение(1954 - 1970) - ЕП от високо ниво. Абстракцията в техните семантични правила е доста развита, а синтаксисът им е близък до този на естествените езици.
Примери:
- FORTRAN I, Algol 58, Flowmatic (те са базирани на математически изрази).
- FORTRAN II (въвежда подпрограмите, отделното компилиране).
- Algol 60 (въвежда блоковата структура).
- Cobol (въвежда структурирането на данни, а обработката на файлове е вградена в самия език).
- APL (за научни изследвания).
- LISP (функционално програмиране за изкуствен интелект).
- Pascal (наследник на Algol 60).
- Simula (класове, абстракции от данни, ООП).
9. Видове ЕП според нивото на абстракция - IV поколение.
а) Четвърто поколение (1979 - 1980) - ЕП, които се характеризират с промяна в семантиката.
Позволяват на програмистите да изразяват идеите си за нещата по начин естествен за човека, чрез понятия, които не съответстват на никоя компютърна концепция.
Примери:
- Smaltalk (ООП).
- C (системно програмиране).
- Prolog (изкуствен интелект).
- Modula-2 (модули: капсулиране, скриване на информация, абстрактни типове данни, базиран на обекти).
- Ada (пакети: капсулиране, скриване на информация, абстрактни типове данни, ...).
- C++, Object-Pascal, Modula-3 (добавят ООП към съществуващи езици).
10. Видове ЕП според парадигмата на програмиране - Процедурно програмиране.
Това е стандартния програмен стил, в който програмите се раздробяват на отделни стъпки, чрез които се описват изчисленията.
а) Характеристики на процедурните ЕП.
- базирани на фон Ноймановата архитектура.
- изпълнението на програмите е последователно.
- променливите представляват определени места в паметта.
- за промяна стойността на променлива се използва операцията присвояване.
Примери: Pascal, C, Ada
11. Видове ЕП според парадигмата на програмиране - Функционално програмиране.
Функционалния стил на програмиране се основава на теорията на математическите функции. Изпълнението на програмата представлява изчисляване на стойности чрез изрази и функции. Те свободно могат да бъдат предавани като параметри, както да бъдат конструирани и връщани като параметри - резултат на други функции.
а) Характеристики на функционалните ЕП.
- функциите се прилагат върху стойности, както и върху други функции за създаването на по-сложни функции.
- предаване на параметри.
- липсва понятието променлива.
- няма цикли, но широко се използва рекурсията.
Примери: Lisp, Miranda, ML, Haskell.
12. Видове ЕП според парадигмата на програмиране - Логическо програмиране.
Този стил изисква декларитивно описание на задачата, вместо задаване на отделни стъпки на алгоритъма на задачата. Декларитивните програми са по-близки до спецификацията, от колкото
традиционното програмиране.
а) Характеристики на логическите ЕП.
- те са базирани на формалната логика.
- няма цикли.
- програмите се състоят от аксиоми, правила за правене на заключения и цел.
- програмата описва кое е вярно по отношение на очаквания резултат.
- изпълнението на програмата представлява правене на извод.
Примери: Prolog, OPSS, Clips.
13. Видове ЕП според парадигмата на програмиране - обектно ориентирано програмиране.
При обектно ориентирания стил на програмиране се набляга на дефинирането на класове от обекти. Нужните обекти от съответен клас се създават по време на изпълнението на програмата.
а) Характеристики на ООП.
- обектът е съвкупност от клетки в паметта и операции, които променят стойностите в тях.
- изчислението е взаимодействие и комуникация между обектите.
- всеки обект се държи като компютър - със собствена памет и операции.
а) Език - система от знаци, използвани за комуникация.
б) Език за програмиране(program language).
- система от знаци, използвана от човека при комуникация, която позволява определянето и записването на задачи(по-точно алгоритми) по недвусмислен начин с такава степен на детайлизация, че те да могат да бъдат интерпретирани (изпълнени) автоматично тоест от компютър.
- език за програмиране (ЕП) е система от означения за описание на изчисленията във форма, която може да се прочете машината и от човека.
в) Изчисление - всеки процес, извършван от компютъра.
г) Програма - спецификация на изчисленията.
2. Характеризиращи елементи на ЕП.
Както всеки писмен език, така и езикът за програмиране се основава на азбука. Азбуката е винаги крайно множество от символи.
а) Правилни изречения на даден език представляват последователности от символите на азбуката, конструирани по така наречените синтактични правила на езика (синтаксис, sytax). Правилните изречения написани на някой от езиците за програмиране се наричат програми. Разбирането, което се влага в така конструираните правилни изречения, тоест програмите и техните съставни части, се определят от така наречените семантични правила на езика (семантика, semantics). Взети заедно, азбуката, синтаксисът и семантиката определят езика за програмиране.
3. Синтаксис и семантика на ЕП.
Строго определен набор от правила на ЕП.
а) Необходимост.
- за да бъде сигурен програмистът в правилността и ефективността на програмата, която пише.
- програмата да бъде разбирана от компютъра и от всеки, който я чете.
б) Синтактичните правила определят как:
- програмите се изграждат като последователност от символи.
- думите на езикът могат да се обединяват, за да се получат правилни изречения.
в) Семантичните правила.
- преписват смисъл и значение на комбинациите от думи.
- тоест семантиката е смисълът на градивните елементи на езика и връзка на означените обекти.
Синтаксисът определя формите на програмите, а семантиката - техния смисъл.
4. Синтаксис и семантика на ЕП - примери.
а) Синтаксис:
- програма, начало, декларация, тяло, команда, израз, идентификатор и т.н. са синтактични концепции в програмните езици.
- int a = 2 е синтактично правилно твърдение на C++.
б) Семантика:
- int a = 2; за програмиста на C++ то означава да се намери ново място в паметта и да се запази в него числото две.
5. Видове езици за програмиране.
ЕП най-често се класифицират според:
- областта на приложение.
- нивото на абстракция.
- програмната парадигма заложена в основата на реализацията им.
6. Видове ЕП според областта на приложение.
а) Универсални ЕП - пригодени за описание на произволни алгоритми ако всяка задача, която може да се реши с компютър, има някакво решение и което може да се изрази с този език.
б) Специализирани ЕП - създадени за специфичен вид обработка.
Примери:
- PRG - за генериране на доклади.
- Logo - за графика.
- SQL - за управление на база данни.
7. Видове ЕП според нивото на абстракция - I и II поколение.
Разглеждат се четири поколения ЕП, всяко от които е стъпка по посока на писането на програми чрез термини, които представляват човешката интерпретация на задачата и резултатите.
а) Първо поколение (50-те) - машинни езици.
Азбуката, синтаксисът и семантиката на машинните езици се определят изцяло от вида и начина избрани от вида на вътрешното представяне на алгоритмите в компютъра. Всяка команда съответства пряко на едно единствено действие на машината.
б) Второ поколение (до 1954г.) - езици за асемблиране.
Позволяват задаване на символни и относителни адреси, както и на потребителски дефинирани
команди(макроси) в примитивна форма (например Add A B вместо 10110101001110100101101).
Програма, наречена асемблер превежда всеки символ от програмата на езика за асемблиране и връща символ от машинен език. Като се съберат всички символи от машинния език, асемблерът извежда програма на машинен език.
8. Видове ЕП според нивото на абстракция - III поколение.
а) Трето поколение(1954 - 1970) - ЕП от високо ниво. Абстракцията в техните семантични правила е доста развита, а синтаксисът им е близък до този на естествените езици.
Примери:
- FORTRAN I, Algol 58, Flowmatic (те са базирани на математически изрази).
- FORTRAN II (въвежда подпрограмите, отделното компилиране).
- Algol 60 (въвежда блоковата структура).
- Cobol (въвежда структурирането на данни, а обработката на файлове е вградена в самия език).
- APL (за научни изследвания).
- LISP (функционално програмиране за изкуствен интелект).
- Pascal (наследник на Algol 60).
- Simula (класове, абстракции от данни, ООП).
9. Видове ЕП според нивото на абстракция - IV поколение.
а) Четвърто поколение (1979 - 1980) - ЕП, които се характеризират с промяна в семантиката.
Позволяват на програмистите да изразяват идеите си за нещата по начин естествен за човека, чрез понятия, които не съответстват на никоя компютърна концепция.
Примери:
- Smaltalk (ООП).
- C (системно програмиране).
- Prolog (изкуствен интелект).
- Modula-2 (модули: капсулиране, скриване на информация, абстрактни типове данни, базиран на обекти).
- Ada (пакети: капсулиране, скриване на информация, абстрактни типове данни, ...).
- C++, Object-Pascal, Modula-3 (добавят ООП към съществуващи езици).
10. Видове ЕП според парадигмата на програмиране - Процедурно програмиране.
Това е стандартния програмен стил, в който програмите се раздробяват на отделни стъпки, чрез които се описват изчисленията.
а) Характеристики на процедурните ЕП.
- базирани на фон Ноймановата архитектура.
- изпълнението на програмите е последователно.
- променливите представляват определени места в паметта.
- за промяна стойността на променлива се използва операцията присвояване.
Примери: Pascal, C, Ada
11. Видове ЕП според парадигмата на програмиране - Функционално програмиране.
Функционалния стил на програмиране се основава на теорията на математическите функции. Изпълнението на програмата представлява изчисляване на стойности чрез изрази и функции. Те свободно могат да бъдат предавани като параметри, както да бъдат конструирани и връщани като параметри - резултат на други функции.
а) Характеристики на функционалните ЕП.
- функциите се прилагат върху стойности, както и върху други функции за създаването на по-сложни функции.
- предаване на параметри.
- липсва понятието променлива.
- няма цикли, но широко се използва рекурсията.
Примери: Lisp, Miranda, ML, Haskell.
12. Видове ЕП според парадигмата на програмиране - Логическо програмиране.
Този стил изисква декларитивно описание на задачата, вместо задаване на отделни стъпки на алгоритъма на задачата. Декларитивните програми са по-близки до спецификацията, от колкото
традиционното програмиране.
а) Характеристики на логическите ЕП.
- те са базирани на формалната логика.
- няма цикли.
- програмите се състоят от аксиоми, правила за правене на заключения и цел.
- програмата описва кое е вярно по отношение на очаквания резултат.
- изпълнението на програмата представлява правене на извод.
Примери: Prolog, OPSS, Clips.
13. Видове ЕП според парадигмата на програмиране - обектно ориентирано програмиране.
При обектно ориентирания стил на програмиране се набляга на дефинирането на класове от обекти. Нужните обекти от съответен клас се създават по време на изпълнението на програмата.
а) Характеристики на ООП.
- обектът е съвкупност от клетки в паметта и операции, които променят стойностите в тях.
- изчислението е взаимодействие и комуникация между обектите.
- всеки обект се държи като компютър - със собствена памет и операции.
Абонамент за:
Публикации (Atom)