Автор работы: Пользователь скрыл имя, 17 Февраля 2012 в 04:44, реферат
Кез келген адам жаңа бір бағдарламалау тілімен кездескенде қоятын бірінші сұрағы: «Бұл тіл не істей алады?» – жауабы өте қарапайым, барлық бағдарламалау тілдері есептеулер жасай алады.Егер олардың бәрі тек есептеулер жасаса, онда жаңа бағдарламалау тілдері пайда болуына не себеп? Анықтама берейік: Бағдарлама–бұл есептеулерді анықтайтын таңбалар тізбегі.Бағдарламалау тілдері – бұл бағдарламаны қандай таңбалар тізбегі құрайды және бағдарлама қандай есептеуді сипаттайтынын анықтайтын ережелер жиыны. Бұл анықтамада «компьютер» - деген сөз еске алынбайды. Бағдарламалар және тілдер формальды математикалық объектілер түрінде берілуі мүмкін.
Бағдарламалау тілдеріне шолу
Кез келген адам жаңа бір бағдарламалау тілімен кездескенде қоятын бірінші сұрағы: «Бұл тіл не істей алады?» – жауабы өте қарапайым, барлық бағдарламалау тілдері есептеулер жасай алады.Егер олардың бәрі тек есептеулер жасаса, онда жаңа бағдарламалау тілдері пайда болуына не себеп? Анықтама берейік: Бағдарлама–бұл есептеулерді анықтайтын таңбалар тізбегі.Бағдарламалау тілдері – бұл бағдарламаны қандай таңбалар тізбегі құрайды және бағдарлама қандай есептеуді сипаттайтынын анықтайтын ережелер жиыны. Бұл анықтамада «компьютер» - деген сөз еске алынбайды. Бағдарламалар және тілдер формальды математикалық объектілер түрінде берілуі мүмкін.
Компьютер – «екілік » машина болғандықтан, ЭЕМ-де бағдарламаны сақтау техникалық қарапайым, бірақ практикалық ыңғайсыз, әр команда «екілік» цифр (биттер) түрінде жазылуы қажет, оларды механикалық немесе электрлік түрде түсінуге болады. Ең бірінші бағдарламалық құралдардың бірі ретінде символикалық ассемблер болды. Ассемблер, ассемблер тілінде жазылған (мұнда, әр команда символдық түрде ұсынылған) бағдарламаны алады да, оның символдарын компьютерде орындауға жарайтындай етіп, «екілік» көрсетімге трансляциялайды. Мысалы: Load R3 54 командасы үшінші регистрге 54-ші ұяшықтағы деректерді жүктеу деген мағынада. Бұл биттердің эквиваленттік тізбегін оқудан әжептәуір оңай.
Бағдарламалау тілдері – бұл абстракциялау механизмі. Ол бағдарламалаушыға есептеулерді абстрактілі сипаттауға және сол кезеңде бағдарламаға осы сипаттамаларды компьютер орындауға қажетті детальданған формаға айналдыруға мүмкіндік береді. Неліктен екі әр түрлі сыныптардағы есептер үшін жүздеген бағдарламалау тілдері болатындығы осыдан түсінікті: екі әр түрлі сыныптардағы есептер үшін абстракциялық әр түрлі деңгейлер қажет және әр бағдарламалаушының бұл абстракциялар туралы өз көрсетілімі болады. Абстракция концепциясынан келесі ереже шығады: абстракция деңгейі неғұрлым жоғары болса, соғұрлым көп детальдар жоғалады.
Fortran. Ассемблерлік тіл деңгейінен асып шыққан бірінші бағдарламалау тілі Fortran болды. Ол 1950ж. IBM фирмасының мамандары және Джон Бекустың басқаруымен ғылыми есептеулерді абстракциялық сипаттауға арналды. Бағдарламалаушылардың көпшілігі fortranға қарсы болды, олар компьютермен генерацияланған бағдарламалық код ассемблер арқылы қолмен жазылған кодтан жақсы болуы мүмкін емес деп түсінді. Компьютерде басында ғылыми есептер шығарылғандықтан, fortran ғылым мен техникада стандартты тілге айналды, ол 1966ж., 1970ж., 1990ж. қазіргі дәуірдегі бағдарламалық құралдарға сәйкес модернизацияланды.
Cobol және PL / 1. Cоbol тілі 1950ж коммерциялық деректерді өңдеу үшін құрастырылды. Ол АҚШ қорғаныс министрлігі өкілдерінен сақтау компаниясы түріндегі коммерциялық ұйымдар және компьютер жасаушыларынан тұратын комитетпен құрылды. Коммерциялық деректерді өңдегенде деректердің үлкен санды күрделі жазбалары үшін қарапайым есептеулер жасау қажет, ал деректерді құрылымдау мүмкіндігі бойынша Cobоl fortran және С түріндегі алгоритмдік тілдерден бірталай жоғары. IBM фирмасы соңынан Fortran, Cobоl тілдерінің барлық қасиеттерін иемденген, әмбебап PL/ 1 тілін жасады. РL/1 IBM -нің көп компьютерлерінде fortran мен Cobоl -ді алмастырды.
Algol және оның ұрпақтары
Ертеректегі бағдарламалау тілдерінен Algol тілдерді құруға бірінші көп әсер етті. Алдымен жалпы және ғылыми қосымшалар үшін халықаралық топпен құрастырылған ол Fortran сияқты кең тарамады.Algol-дың бірінші нұсқасы 1958ж басылды. Algol 60 нұсқасы компютерлік зерттеулерде кең қолданылды және әсіресе, Еуропадағы көптеген машиналарда өткізілді, ал келесі нұсқасы онша әйгілі болған жоқ.Algol тілінен екі тіл тарады: нақты уақыт жүйесі үшін АҚШ-тың әуе соғыс күштері қолданған Jobial немесе модельдеудің алдыңғы тілдерінің бірі Sіmula.
Ең әйгілі ұрпағы Pascal. Pascal-ді 1960 жыл соңында Никлаус Вирт құрастырған. Құрастыру мақсаты типтерді жариялау идеясын көрсету және олардың сәйкестігін бақылау үшін қолдануға болатын тілді жасау. Н.Вирт модульде кез-келген практикалық тілдердің қажетті бөліктері болатынын бірдей түсініп, Modula тілін құрастырды.С тілін 1970 жылы Bell Laboratories қызметкері Денис Риччи операциялық жүйе Unix-ті өткізу тілі ретінде жасады. Операциялық жүйе ассемблерде жазылды, өйткені жоғарғы деңгейдегі тілдер тиімсіз деп есептелді.С тілі ассемблерге тән бағдарламалау детальдарынан абстракцияланады, ол ассемблерлік төмен деңгейдегі бағдарламалаудың барлық иілімділігін (бит деңгейіндегі көрсеткіштерді) сақтай отыра құрылымды басқару операторларын және деректер (сілемдер мен жазулар) құрылымдарын ұсынады.С тілі ассемблер тіліне жақындау жобаланды. Бұл оған төтенше иілімділікті жасайды. Бірақ бұл иілімділік жасырын қателері бар программа құру жеңілдігін шарттандырады, өйткені, тіл конструкциясы Pascal жасайтындай компилятормен тексерілмейді.С тілі 1989ж стандарттардың Американдық Ұлттық институтымен (АNSI) стандартталды.С++. 1980ж Bell laborotories-дегі Бьярн Строуструп С тілін С++ тілінің негізі ретінде қолданды. Оған Simula тілі ұсынған объектіге бағытталған программалауды қолдауды қосты. С тілінің көптеген қателері С++ тілінде түзетілді. 1994ж С++ тілі стандартталды.
Adа тілі 1997ж АҚШ-тың қорғаныс министірлігі әр түрлі соғыс жүйелеріне құрылған бағдарламаларды қолдайтын операциялық жүйелерді үйрену бағасын арзандату мақсатында бағдарламалау тілдерін бірегейлеуді шешуге тырысты. Нақты бар тілдерді бағаланғаннан кейін Pascal тілі негізінде жаңа тілді құруға, конкурс жариялауға шешімге келді. Нәтижесінде Adа тілі құрылды. Тілдің стандарты 1983ж қабылданды.Adа 95 осы тілдің бірінші стандарты қабылданғаннан кейін 12 жыл өткен соң, жаңа стандартпен шықты. Adа 95 деп аталған жаңа нұсқа объектіге – бағытталған бағдарламалауды қолдады.
Деректерге бағытталған тілдер
Бағдарламалау дәуірінде соңғы жылдары олардың дамуына өте әсер еткен бірнеше тілдер құрылды және өтімді болды. Олардың ортақ бір қасиеті болды: әр тіл өзіне қажет деректер құрылымынан және оған арналған кең көлемді командалар жиынтығынан тұрды. Бұл тілдер Fortrаn типіндегі тілдерде жасау қиын бағдарламаларды құруға мүмкіндік берді.
LISP тіліндегі деректердің негізгі құрылымы - байланысқан тізімдер. Алдымен бұл тіл есептеp теориясын зерттеу үшін құрылды және жасанды интеллект бойынша көп жұмыстар LISP тілінде жасалды. Бұл тілдің маңыздылығы сондай, тіпті компьютердің өзі LISP бағдарламаның орындалуын тиімдеу үшін сәйкестендіріліп құрылды. Қазіргі кезде объектіге бағытталған бағдарламаларды қолдайтын Lisp-CLOS тілінің диалектісі әйгілі.
APL – матрицалық
формуланың дамуы болып
Snobol, Icon. Алғашқы тілдер тек сандармен жұмыс істеді. Табиғи тілдерді өңдеу аймағында Snobol (және оның туындысы Icon )өте ыңғайлы. Өйткені олардың негізгі құрылымы – жолдар болды. Snobol тілінің негізгі операциясы – үлгіні жолмен салыстыру және жанама нәтижесі, жолды ішкі жолдарға бөлшектеу. Icon тіліндегі негізгі операция - өрнектерді есептеу, бұл өрнектер жолдармен жасалатын күрделі операцияларды қамтыды. Бұл тіл жолдардың күрделі өңделуін орындайтын бағдарламалар үшін ыңғайлы.
SETL - дегі деректердің негізгі құрылымы - көпшелер. Көпшелер - өзінің көмегімен басқа құрылымдар анықталатын жалпы матрицалық құрылым болғандықтан, мұндай бағдарламалар логикалық бағдарламаларға ұқсас, оларда матрицалық сипаттаулар тікелей орындалуы мүмкін.
Процедуралық емес тілдер
Қарастырылған тілдердің бәріне ортақ бір ерекшелік: олардағы негізгі оператор – бұл меншіктеу операторы, ол компьютерді деректерді бір орыннан екінші орынға ауыстыруға мәжбүр етеді. Шындығында бұл компьютер көмегімен шешілетін проблемалар деңгейімен салыстырғанда абстракцияның төменгі деңгейінде.Қазіргі бағдарламалық пакеттер, шындығында, абстракцияның жоғары деңгейіндегі тілдер. Қосымшалар генераторлары сізге экран жүйелілігін және деректер қоры құрылымын сипаттауға мүмүкіндік береді және осы сипаттамалар бойынша, сіздің есепті шығаратын командаларды автоматты түрде генерациялайды. Дәл осылай ЭК, үстелдік баспа жүйелері, моделдеу пакеттері және басқа жүйелер абстрактілі бағдарламалаудың көлемді құралдарына ие.
Бағдарламалау тілдерінің негізгі констукциялары
Синтаксис. Кәдімгі тілдердегідей, бағдарламалау тілдері элементтерінің синтаксисі бар. Бағдарламалау тілдері элементтерінің синтаксисі - бұл тілдегі қандай символдар тізбегі мүмкін өрнектер болып есептелетінін анықтайтын ережелер жиыны. Синтаксис формальды шартты белгілер көмегімен беріледі. Синтаксистің кең таралған формальды шартты белгісі – бұл Бекус Наураның кеңейтілген формасы (БНКФ). БНКФ-де біз ең жоғарғы деңгейдегі обьектіден (бағдарламалардан) бастауымыз керек, және обьектілерді декомпозициялау ережелерін қолдана отырып, белгілі бір символ деңгейіне жеткенге дейін. Мысалы:
Айнымалыны- жариялау::= тип-спецификаторы идентификатор
{, идентификатор};
Бұл былай оқылады: Айнымалыны жариялау тип спецификаторын көрсетеді, одан соң идентификатор (айнымалының аты) ұсынылады және бір-бірінен үтірмен ажыратылған міндетті емес идентификаторлар тізбегі, соңында нүктелі үтір қойылады.
Семантика - бұл бағдарламалау тілдері сөйлемдерінің (бағдарламаның) мағынасы, бағдарламалау тілінің семантикасын құрастыру қосымша үстемділік - бағдарламаның дұрыстығын дәлелдеу мүмкіндігін береді.Бағдарламаның орындалуын, қалай оператор кірістегі бекітілімдерді қанағаттандыратын күйді шығыстағы бекітілімдерді қанағаттандыратын күйге айналдыратынын сипаттайтын аксиомалар көмегімен қалыптастыруға болады.
Деректер. Бағдарламалау тілдерімен алғашқы танысқанда көңіліңіз оператор мен командаларға бөлінеді. Операторларды үйреніп, оларды қолдана бастаған кезде, деректерге көңіл аударасыз. Қазіргі тілдерде операторлар белгілі бір обьект үшін қолданылатын деректерді манипуляциялау құралдары деп есептеледі. Бағдарламалаудың орталық концепциясы:Тип - бұл шамалардың көпшесі және оларға жасалатын көптеген операциялар. Типті анықтау тілге байланысты. Деректерді талдау үшін кейбір анықтамалар қажет.
Шама. Қарапайым анықталмаған түсінік.
Литерал. Бағдарламада таңбалар тізбегі түрінде берілген нақты мән. Мысалы: 154, FALSE, «бағдарламалау».
Көрсеткіш (представление). Компьютер ішінде нақты биттер жолымен көрсетілген мән. Мысалы: символдық мән ' х ' 01 11 10 00 сегіз бит жолымен көрсетілуі мүмкін.
Айнымалы. Нақты типтегі мән көрсетілімінен тұратын жад ұяшығына немесе ұяшықтарына берілген ат. Мәні бағдарлама жұмысы үрдісінде өзгере алады.
Тұрақты. Нақты типтегі мән көрсетілімінен тұратын ұяшық немесе ұяшықтар аты. Программа орындалу барысында мәні өзгермейді.
Обьект- бұл айнымалы немесе тұрақты.
Меншіктеу операторы. Әдеттегі бағдарламалау тілдерінде нақты жұмыс істейтін бір ғана оператор бар. Ол- меншіктеу операторы. Басқа операторлар (шарт операторы, процедураларды шақыру) тек меншіктеу операторының орындалу тізбегін басқару үшін қолданылады. Меншіктеу операторы әртүрлі үш есептерді орындайды:
Оператордың оң жағындағы өрнек мәнін есептеу.
Оператордың сол жағындағы өрнекті есептеу; өрнек жад ұяшығының адресін анықтау керек.
1 қадамда есептелген мәнді 2 қадамда алынған адрестен бастап , жад ұяшықтарына көшіру.
Тип сәйкестіктерін бақылау. Тип сәйкестіктерін бақылау - бұл өрнек типі меншіктеу кезінде адрестелген айнымалы түрімен сәйкестігін тексеру. Бұған процедураны шақырғанда фактілік параметрді формалдыққа меншіктеу де кіреді. Тип сәйкестіктерін бақылауға келесі лайықты мүмкіндіктер бар:
Ештеңе істемеу; меншіктеу мағыналы болуына тек бағдарламалаушы жауапты;
Сол жағы талап ететін типке өрнек мәнін айқындамай түрлендіру.
Қатаң түрде тип сәйкестіктерін бақылау: егер тип айырмашылығы болса, меншіктеуден бастартамыз.
Басқару операторлары. Меншіктеу операторлары әдетте қандай тізбекте жазылды, сол тізбекпен орындалады. Басқару операторлары орындалу ретін өзгерту үшін қолданылады. Құрылымды бағдарламалау - бұл оқуға және түсінуге жеңіл, жақсы құрылымдағы бағдарламаларды қаматамасыздандыратын, басқару операторларын қолдануды мүмкіндейтін бағдарламалау стилі. Басқару операторларының екі класы бар:
1.таңдау операторы, бір немесе бірнеше альтернативті тізбектердегі орындауларды таңдайды; шарт операторы (if) және ауыстырып қосқыштар (переключатели) (Case switch);
2.цикл операторы, операторлар тізбегінің орындалуы қайталанады: for, repeat және while.
Ішкі бағдарламалар. Ішкі бағдарламалар – бұл бағдарламаның әр жерінде шақыруға болатын деректері және орындалатын операторлары жарияланған бағдарлама сегменті. Ішкі бағдарламаларды процедура, функция, ішкі бағдарлама немесе әдістер деп те атайды. Ішкі бағдарламаны шақырғанда оған параметр деп аталатын мәндер тізбегі беріледі. Параметрлер, ішкі бағдарламалар орындалуының әртүрлі варианттарын өткізу үшін, оған деректерді беру және есептеу нәтижесін алу үшін қолданылады.