Кіріспе

ALGOL – компьютерлік бағдарламалау тілдері тобының мүшесі. ALGOL 60 (Algorithmic Language 1960) – компьютерлік бағдарламалау тілдері тобының мүшесі. Ол ALGOL 58-ден кейін пайда болды, ол код блоктарын және оларды шектеу үшін бастау және аяқтау жұптарын енгізді, бұл құрылымдық бағдарламалаудың дамуындағы маңызды қадам болды. ALGOL 60 функцияларды анықтауды (оларды рекурсивті шақыруға болатын) енгізген алғашқы тілдердің бірі болды. ALGOL 60 функцияларының анықтамалары бір-біріне орналастырылуы мүмкін еді (бұл кез келген бағдарламалау тілінде алғаш рет пайда болды), лексикалық ауқыммен. Ол CPL, PL/I, Simula, BCPL, B, Pascal және C сияқты көптеген басқа тілдердің пайда болуына әкелді. Осы дәуірдегі дерлік барлық компьютерлерде ALGOL 60 тұжырымдамаларына негізделген жүйелік бағдарламалау тілі болды. Никлаус Вирт өзінің ALGOL W-ін ALGOL 60 негізінде жасап, содан кейін Pascal-ды әзірлеуге көшті. Algol W келесі буын ALGOL болуы тиіс еді, бірақ ALGOL 68 комитеті тазартылған, қарапайым ALGOL 60-тан гөрі күрделі және жетілдірілген дизайнды таңдады. ALGOL-дің ресми нұсқалары алғаш жарияланған жылдарымен аталады. ALGOL 68, ALGOL 60-нан едәуір өзгеше және осы себепті сынға ұшырады, сондықтан әдетте "ALGOL" термині ALGOL 60-тың диалектілерін білдіреді.

ALGOL 60 іске асырудың мерзімдері

Бүгінгі күнге дейін ALGOL 60-тың кем дегенде 70 кеңейтілген нұсқасы, қосымшасы, туындысы және кіші тілдері пайда болды. АтауыЖылАвторМемлекетТағылымМақсаты CPU X1 ALGOL 60 тамыз 1960 Эдсгер В. Дикстра және Жап А. Зонневельд ALGOL 60-тың алғашқы іске асырылуы Electrologica X1 Algol 1960 Эдгар Т. Иронс ALGOL 60 CDC 1604 Burroughs Algol (бірнеше нұсқасы) 1961 Burroughs Corporation (Хоар, Дикстра және басқалардың қатысуымен) Burroughs (қазір Unisys MCP негізінде) компьютерлерінің негізі Burroughs Үлкен және орта деңгейдегі жүйелер Case ALGOL 1961 Симулятор бастапқыда Case ALGOL-дың симуляциялық кеңейтуі ретінде келісімшартқа алынған UNIVAC 1107 GOGOL 1961 Уильям М. Маккиман ODIN уақыт бөлісу жүйесі үшін PDP 1 DASK ALGOL 1961 Петер Наур, Йорн Йенсен ALGOL 60 DASK Regnecentralen-де SMIL ALGOL 1962 Торгил Экман, Карл Эрик Фрёберг ALGOL 60 SMIL Lund университетінде GIER ALGOL 1962 Петер Наур, Йорн Йенсен ALGOL 60 GIER Regnecentralen-де Dartmouth ALGOL 30 1962 Томас Юджин Куртц, Стивен Дж. Гарланд, Роберт Ф. Харгравес, Энтони В. Кнапп, Хорхе Лласер ALGOL 60 LGP 30 Alcor Mainz 2002 1962 Урсула Хилл Самэльсон, Ханс Лангмаак Siemens 2002 ALCOR Illinois 7090 1962 Манфред Пауль, Ханс Рюдигер Виле, Дэвид Гриз, және Рудольф Байер ALGOL 60 Illinois және TH München-де іске асырылды 1962 1964 IBM 7090 USS 90 Algol 1962 Л. Петроне Elliott ALGOL 1962 К. А. Р. Хоар 1980 жылғы Тьюринг сыйлығының лекциясында талданған Elliott 803 және Elliott 503 ALGOL 60 1962 Роланд Штробель Берлиндегі қолданбалы математика институты іске асырды Zeiss Rechenautomat ZRA 1ALGOL 60 1962 Бернар Вокуа, Луи Боллие Institut d'Informatique et Mathématiques Appliquées de Grenoble (IMAG) және Compagnie des Machines Bull Bull Gamma 60 Algol Translator 1962 Г. ван дер Мей және В. Л. ван дер Поэль Staatsbedrijf der Posterijen, Telegrafie en Telefonie ZEBRA Kidsgrove Algol 1963 Ф. Г. Дункан English Electric Company KDF9 SCALP 1963 Стивен Дж. Гарланд, Энтони В. Кнапп, Томас Юджин Куртц ALGOL 60-тың кіші жиынтығы үшін жеке ALgol процессор LGP 30 VALGOL 1963 Вал Шорре META II компилятор-компиляторының сынағы FP6000 Algol 1963 Роджер Мур Саскачеван энергетикалық корпорациясы үшін жазылған FP6000 Whetstone 1964 Брайан Ранделл және Лауфорд Джон Рассел English Electric Company Atomic Power Division. Ferranti Pegasus, National Physical Laboratories ACE және English Electric DEUCE іске асыруларының алдын қамтамасыз етті English Electric Company KDF9 ALGOL 60 1964 Жан Клод Буссард fr IBM 7090 ALGOL 60 1965 fr Centre de calcul de la Faculté des Sciences de Nancy IBM 1620 Dartmouth ALGOL 1965 Стивен Дж. Гарланд, Сарр Блумсон, Рон Мартин ALGOL 60 Dartmouth Time Sharing System for the GE 235 NU ALGOL 1965 UNIVAC ALGOL 60 1965 Ф. Е. Дж. Круземан Арец MC EL X8 Electrologica X8ALGEK 1965 Минск 22 АЛГЭК, ALGOL 60 және COBOL қолдауы негізінде, экономикалық міндеттер үшін MALGOL 1966 жарияланды. А. Виил, М. Котли & М. Ракенди, Минск 22 ALGAMS 1967 GAMS тобы (ГАМС, орта кластағы машиналар үшін бағдарламалауды автоматтандыру тобы), Comecon ғылым академияларының ынтымақтастығы Comecon Минск 22, кейін ES EVM, BESM ALGOL/ZAM 1967 Поляк ZAM компьютері Қытай Algol 1972 Символдық жүйе арқылы бейнеленген қытай таңбалары DG/L 1972 DG Eclipse компьютерлер отбасы NASE1990 Эрик Шоенфельдер Интерпретатор Linux және MS Windows MARST 2000 Эндрю Махорин ALGOL 60-ты C-ге аудармашы Барлық GNU Compiler Collection қолдайтын CPU; MARST GNU жобасының бөлігі. Burroughs диалектілері ESPOL және NEWP сияқты арнайы жүйелік бағдарламалау диалектілерін қамтыды.

Қасиеттері

ALGOL 60 ресми түрде I/O мүмкіндіктеріне ие болған жоқ; іске асырулар оларды өзара сирек үйлесімді болатын тәсілдермен анықтады. Ал ALGOL 68 кеңейтілген транспаут кітапханасын ұсынды (ALGOL 68 терминологиясында кіріс/шығыс). ALGOL 60 параметрлерді жіберудің екі бағалау стратегиясын қамтамасыз етті: әдеттегі мән бойынша шақыру және атау бойынша шақыру. Процедура жариялануы әрбір формальды параметр үшін қайсысы қолданылатынын көрсетті: мән бойынша шақыру үшін «мәні» деп көрсетілген, ал атау бойынша шақыру үшін көрсетілмеген. Атау бойынша шақыру, анықтама бойынша шақырудан өзгеше әсер етеді. Мысалы, параметрлерді мән немесе сілтеме ретінде нақты көрсетілмесе, нақты параметрлер бүтін сандық айнымалы және сол бүтін сандық айнымалымен индексиленген массив болған жағдайда, екі параметрдің мәндерін ауыстыратын процедураны жасау мүмкін емес. Функцияға swap(i, A[i]) дегенге сілтеме беруді ойлап көріңіз. Енді swap-қа әр сілтеме жасалған сайын, ол қайта бағаланады. Мысалы, i := 1 және A[i] := 2 болсын, сондықтан swap-қа сілтеме жасалған сайын ол мәндердің басқа комбинациясын қайтарады ([1,2], [2,1], [1,2] және т.б.). Ұқсас жағдай нақты аргумент ретінде берілген кездейсоқ функциямен де орын алады. Атау бойынша шақыруды көптеген компилятор жасаушылар оны іске асыру үшін қолданылатын қызықты «трюктер» үшін біледі. Дональд Кнут «рекурсия және жергілікті емес сілтемелерді» дұрыс іске асыратын компиляторларды анықтау үшін «адам немесе бала тестін» ойлап тапты. Бұл тестте атау бойынша шақырудың мысалы бар.

LEAP

LEAP – ALGOL 60 бағдарламалау тіліне қосымша, үштіктердің ассоциативтік жадын ұсынады. Үштік құрамындағы үш элемент объектінің атрибутының нақты мәнімен байланысын көрсетеді. LEAP 1967 жылы Джером Фельдман (Калифорния университеті, Беркли) және Пол Ровнер (МИТ Линкольн зертханасы) жасаған. LEAP, сонымен қатар SAIL жүйесінде де іске асырылды.