text: алгол сөзі алгоритмдік және тіл деген мағынаны білдіреді) мәселелерді эем-де шешу үшін қолданылатын бағдарламаларды құруда пайдаланылатын бағдарламалау тілдерінің қатары атауы. 1958—1960 жж. ifip жоғары дәрежелі бағдарламалау тілдері комитетімен құрылған (алгол-58, алгол-60); 1964—1968 жж. (алгол 68) жетілдірілді. алгол жоғары дәрежелі бағдарламалау тілдеріне жатады және алгебралық формулаларды бағдарламалау нұсқауларына оңай аударуға болады. алгол тілі еуропа, соның ішінде ксро-да кең таралса,сол уақытта оған ұқсас тіл фортран ақш пен канадада қанат жайды. кейінірек жасап шығарылған императивті бағдарламалау тілдеріне, соның ішінде pascal тіліне, елеулі әсерін тигізді. жалпы алгол (нұсқасын нақтылаусыз) деп алгол-60 тілін айтады, ал алгол 68 жеке тіл ретінде қарастырылады. алгол 1958 жылы, eth (цюрих, швейцария), апталық конференция барысында қолданылу аясы кең әмбебап бағдарламалау тілі ретінде жасап шығарылды,содан кейін халықаралық ақпарат өңдеу федерциясы (ifip) құрған комитет тілді жетілдіріп, аяқтады.бұл комитет құрамына еуропа мен американың жетекші ғалымдары мен бағдарламалау тілін жасаушы инженерлер кірді. солардың ішінде: джон бэкус фортран тілін жасаушылардың бірі, джозеф уэгстен кейінірек кобол тілін жасаушылар комитетін басқарды, джон маккарти алголмен бірге пайда болған лисп тілінің авторы, петер наур кейінірек «бэкустың қалыпты түрін» жетілдіріп, аяқтады, эдсгер дейкстра нидерландтық ғалым, кейінірек құрылысдық бағдарламалау мен бағдарламалауға математикалық тәсілін жақтаушылардың бірі ретінде кеңінен танымал болды, келешек тьюринг премиясының иегері. басында бұл бастама принципиалды сипаттағы емес өте үлкен қиындықтарға тап болды. мысалға, комитеттің бір мүшесінің еске алуы бойынша америкалық және еуропалық ғалымдар арасында санның бүтін және ондық бөлігін айыратын таңба жөнінде үлкен дау туған. америкалықтар нүкте десе, еуропалықтар еуропадағы дәстүрлі түрде қолданылатын үтірді қабылдау керек деді. осы дау себебінен ары қарайғы жұмыс тоқтап қалудың алдында болды. осындай даулардан қашу үшін алголдың сипаттамасы үш сатылы: сипаттау, жариялау және орындау түрінде болады деп шешілді. үтір, нүкте немесе қолданылатын әліпби сияқты ұсақ мәселелер екінші, үшінші сатыларға шығарылды, осы жағдай принципиалды даулардың шешімін оңай табуға септігін тигізді. кейінірек қабылданған жариялау сатысында ұлттық кілтсөздер мен ақпарат көрінісі үлгілерін (соның ішінде айырма нүкте) қолдануға рұқсат етілді, ал орындау сатысын тіл бүтіндей өзі анықтайды, оған сәйкес трансляторлар құрылуы керек. 1958 жылы алгол-58 тілінің бірінші нұсқасы сипаттамасының қабылдануынан кейін (алғашында тілді ial international algebraic language деп атамақшы болды, бірақ кейін ол ойдан бас тартты) салыстырмалы түрде аз уақытта шешімін таппаған мәселелер анықталып оларды шешу үшін комитет жаңа үлгінің нұсқасын ұсынды, ол алгол-60 еді; тілдің осы нұсқасы «классикалық алгол деген атпен танымал болды. 1959 жылы джон бэкус «бэкустың қалыпты түрін» ұсынды алгоритмдік тілдерді сипаттаудың формалды жолы. сипаттамасы «бэкустың қалыпты түрінде» жазылған бірінші тіл алгол-58 болды. кейінірек, питер наур ұсынған жетілдірулерден соң, «бэкус-наурдың қалыпты түрі» ұсынылды және алгол-60-тың өмірге келу барысында-ақ сипаттамаларда қолданылды. жаңа тілді жақтаушылармен қатар даттаушылар да көп болды. ақш-та алгол тілін суық қарсы алды, ол тек академиялық ортада ғана танымал болды, оның өзінде барлық жерде емес. ал алголды жүзеге асырмақшы болғандар бірқатар қиындықтарға тап болды. мысалға, сол кездегі болған бірде-бір компьютер алгол тілі әліпбиінің 116 қаріпінің бәрін бірдей енгізіп-шығара алмады. share ibm компьютерлері американдық ассоциациясы алголды өз компьютерлеріне сай етуді талап етті, бірақ пайда болған ibm os/360-қа арналған компилятор пайдалануда өте ыңғайсыз болды бұл түсінікті де еді, өйткені фортран тіліне үлкен көлемде қаражат салған кәсіпорын, жаңа бағдарлмалық тіл жасауды қаламады, себебі ол өзіндегі бар тілмен бәсекеге түсу қаупінен қорықты. сол уақытта фортранның кем тұстары ibm-ді оған басқа тіл жасауға итермелеп, pl/i тілінің пайда болуына әкеліп соқты. фортранның мұрагері болған бұл тілде алголдың әсер еткен тұстары өте көп болды. ал сол мезетте еуропада алголды қызығушылықпен қарсы алды. ол аз уақытта академиялық ортада атақ тауып, барлық жерде компиляторлар құрастырылды, олардың көбісін іске асырудың қиындықтарына қарамастан олар өте таынмал болды. алгол ұлыбританиядан қиыр шығысқа дейін таралды, ғылыми мақалалар алгоритмдерінің сипаттамасын жазатын әмбебап тіл және нақты бағдарламалау құралы болды. алгол тілі burroughs corporation фирмасымен олардың іске асырылып, b5000 моделінен бастап бұл тіл elliott algol деген ат алды. lgp-30 dartmouth algol 30 тілі қолданылды. шығып қалғанның өзінде алгол тілі ұзақ уақыт бойы алгоритм жариялаудың ресми тілі болып қалды. алгол тілінінің ерекшеліктері одан кейін құрылған императивті тілдердің ажырамас бөлігі болды. нақ осы алголда бірінші рет бағдарлама нұсқаулардың еркін тізбесі емес, айқын сипатталған, бір-бірінен аластатылған блок-құрылым ретінде ұсынылды. алголда негізгі блок сол басты бағдарламаның өзі болады. ол begin және end кілтсөздерімен жабылған негізгі орындалатын блоктан, сонымен қатар бағынышты бағдарламаларды сипаттайтын бөлімнен тұрады. әр бағынышты бағдарлама бұл өз ішінде сипатталған ақпараты, формалды параметрлер тізімі мен атаулары анықталған интерфейсі, нұсқаулар тізімі бар кішірейтілген ішкі бағдарлама. сонымен қатар блогтың ішінде де бағынышты блогтар болуы мүмкін. конструкцияның құрылымдық басқарушылары да бөліп көрсетілді: тармақтану цикл, тізбектелген аумақтар, шартты және көпқайталамалы операторлар жиынтығын орындайтын, сонымен қатар begin және end кілтсөздерімен жабылған операторлар, мұның бәрі бағдарламаны шартсыз өту аса жақсы атты емес goto операторынсыз құруға мүмкіндік берді. goto құрылымы аса жақсы емес бағдарламаның басты айыпкері болатын. қазіргі кездегі бұл құрылым өз-өзінен анықталып қойған, кей жерде ескірген, ал кейде ыңғайсыз паскалде қолданылатын, шексіз қайталанатын begin end жиі сынға алынатын осы бір ерекшелік алголдан алынған болатын) болып көрінгенмен, өз заманында бұл елеулі қадам еді. бағдарламалар біртекті қайталанатын бола бастады, бұл олардың көлемін өсіруге мүмкіндік беріп қана қоймай, сонымен қатар көрнекті, түсінікті, сараптау мен жөндеуге икемді етті. нақ алгол мен дұрыстығын сараптау арқылы дәлелдеуде сәтті жұмыстар істелді. алголдың аса маңызды ерекшелігі рекурсивті процедураларды ұйымдастыру мүмкіндігі болды. рекурсивті процедураларға нарық көшбасшылары фортран мен коболда тікелей тиым салынса, лиспте олар кеңінен қолданылды. рекурсивті процедураларды қолдану кейбір жағдайларда бағдарлама құрылымын қарапайым етіп, алгоритмнің математикалық сипаттамасына жақын болғандықтан түсініктірек те қылды. әлбетте, алголдың барлық ерекшеліктерін сәтті және соңына дейін ойластырылған деп айта алмаймыз. мысалға тілдің стандарттары енгізу-шығару мүмкіндіктерін жоққа шығарды. тілді жасаушылар бұл мәселе тілді арнайы компьютер немесе талаптарына сай шығарылатын тілдің жаңа нұсқасымен шешіледі деп тұжырымдады. бірақ, екінші жағынан, ол кезде стандартты кітапханалар қолданылатын модульдук бағдарламалау концепциясы әлі іске асырылмаған болатын, сондықтан енгізу-шығару құралдары тікелей тілдің өзіне қосылу керек болатын. мұның бәрі әр нұсқа енгізу-шығаруды өз бетінше жасап, әр компиляторда бір-біріне мүлдем сәйкес келмейтін болды. алголда параметрді бағынышты бағдарламаға берудің екі жолы ұсынылды: аты бойынша, мәні бойынша. егер екінші жолы ешқандай қарсылық тудырмаған болса (ол қазіргі тілдердің бәрінде дерлік қолдынылады), ал бірінші жолы компилятор жасауда үлкен қиындықтарға әкеліп, қиын анықталатын қателердің пайда болуына жол ашты. procedure absmax(a) size:(n, m) result:(y) subscripts:(i, k); value n, m; array a; integer n, m, i, k; real y; comment n*m өлшемді матрицасының максималды мүшесі y-дің нәтижесі түрінде, ал оның индексы және түрінде беріледі; begin integer p, q; := 0; := := 1; for p:=1 step until do for q:=1 step until do if abs(ap, q) then begin := abs(ap, q); := p; := end end absmax алгол elliott 803 algol-дағы таблицаны басып шығаруға жіберу мысалы floating point algol test' begin real a,b,c,d' read d' for a:= 0.0 step until 6.3 do begin print punch(3),££l??' := sin(a)' := cos(a)' print end' end' punch(3) мәтінді перфораторға емес, принтерге жібереді. sameline сызықшаны орнына қайтаруын жоққа шығарады. aligned(1,6) форматты көрсетеді ондық үтірге дейін, үтірден соң. hello, world бағдарламасы, dartmouth algol 30-да орындалған сілтемені қараңыз begin file (kind=remote); ebcdic array 0:11; replace by "hello, world!"; while true do begin write (f, *, e); end; end. elliott algol-дағы нұсқасы. program hifolks; begin print "hello, world"; end; ibm os/360 algol f. 'begin' outstring (1, '('hello, world!')'); 'end' алголдағы келесі бағдарламаланы қарастырайық: begin procedure (a, b); name a, b; integer a, b; begin for a:=1 step until 10 do := end p; integer i; integer array 1:10; (i, si) end параметрді аты бойынша беруге сәйкес процедураны шақыру осы жағдайда массивының барлық мүшелерінің нөлге тең болуына алып келуі тиіс. параметрді аты бойынша беруді осылай қолдануды ұсынған құрметіне орай бұл тәсіл «йенсен әдісі» деп аталды. шынтуайтына келгенде аты бойынша параметрді беру үшін компилятор арнайы аты жоқ, бұл өрнекті өз ішінде бөлек орындайтын, санк деп аталатын функция істеу керек болатын. algol 68 jovial с++ паскаль iso 1538:1984 programming languages algol 60 алгол-60 бағдарламалау тілі синтаксис algol 60 бэкус-наур түрі. «803 algol» elliott 803 algol бойынша нұсқау. пайда болу тарихы.