АЛГОЛ W — бу дастурлаш тили. У Никлаус Wиртҳ ва Тонй Ҳоаре томонидан АЛГОЛ 60 нинг вориси сифатида АЛГОЛ Х таклифига асосланади. АЛГОЛ W асл АЛГОЛ 60 га нисбатан содда янгиланиши бўлиб, унда қатор, мураккаб рақам ва ёзув маълумотлар турларига ҳавола қўшилади ва параметрларни қўнғироқлар бўйича ўтказиш, wҳиле операторини киритиш, сwитч cасе баёноти билан алмаштириш ва умуман олганда тилни мустаҳкамлаш киради.

АЛГОЛ W
Оиласи АЛГОЛ
Тузилган йили 1966 (60 йил аввал) (1966)
Платформа ИБМ Сйстем/360
Операцион тизим Линух
Бунга асос бўлган тиллар
АЛГОЛ 60
Бунинг асосида тузилган тиллар
Пасcал, Модула-2

Wиртҳнинг кириши АЛГОЛ 60 дан жуда оз аванс деб ҳисобланди ва Адриаан ван Wижнгаардендан мураккаброқ кириш жуда баҳсли учрашувда бўлди. Кейинчалик Wиртҳ ўз версиясини АЛГОЛ ривожланишига ҳисса сифатида нашр этди[1]. Бир қатор кичик қўшимчалар билан бу охир-оқибат АЛГОЛ W га айланди.

Wиртҳ кенг тарқалган Стенфорд университетида ИБМ Сйстем/360 учун юқори сифатли дастурни назорат қилди[2][3].

Амалга ошириш Wиртҳ томонидан ишлаб чиқилган АЛГОЛ-га о'хшаш ассемблй тили бо'лган ПЛ360 да ёзилган. Амалга ошириш нуфузли диск раскадровка ва профил яратиш қобилиятларини о'з ичига олади.

АЛГОЛ W Паскал тили учун асос бўлиб хизмат қилди ва АЛГОЛ W синтаксиси Паскал тажрибасига эга бўлган ҳар бир кишига қийинчилик туғдирмайди. Асосий фарқлар Паскалда ёзувлар билан ишлашнинг яхшиланиши ва АЛГОЛ W нинг иш вақтида массив узунлигини аниқлаш қобилиятини йўқотишидир, бу Паскалнинг энг кўп шикоят қиладиган хусусиятларидан биридир.

Синтаксис ва семантика

АЛГОЛ W синтаксиси ЭБCДИC белгилар кодлаш тўпламининг кичик тўпламига қурилган. АЛГОЛ 60 да ажратилган сўзлар алоҳида лексик бирликлардир, лекин АЛГОЛ W да улар фақат белгилар кетма-кетлиги бўлиб, уларни кесиш шарт эмас. Захираланган сўзлар ва идентификаторлар бўш жойлар билан ажратилади. Шу жиҳатдан АЛГОЛ W синтаксиси Паскал ва кейинги тилларникига ўхшайди.

АЛГОЛ W тил тавсифи[4] АЛГОЛ W ни Баcкус-Наур шаклига (БНФ) ўхшаш аффикс грамматикасида белгилайди. Бу расмий грамматика Ван Wижнгаарден грамматикасининг кашшофи эди[5].

АЛГОЛ W семантикасининг катта қисми грамматик жиҳатдан аниқланади:

  • Идентификаторлар жорий доирада таърифи билан ажралиб туради. Масалан, ⟨проcедуре идентифиэр⟩ — бу процедура декларацияси билан аниқланган идентификатор, ⟨лабел идентифиэр⟩-ўтиш ёрлиғи сифатида ишлатиладиган идентификатор.
  • Ўзгарувчи ва ибораларнинг турлари аффикслар билан ифодаланади. Масалан, ⟨τ фунcтион идентифиэр⟩ бу функсиянинг синтактик об’экти бўлиб, τ типидаги қийматни қайтаради, агар идентификатор жорий доирада бутун сон функсияси сифатида эълон қилинган бўлса, у ⟨интегер фунcтион идентифиэр⟩ кенгайтирилади.
  • Тур хатолари грамматик хатолардир. Масалан, ⟨интегер эхпрессион⟩ / ⟨интегер эхпрессион⟩ ва ⟨реал эхпрессион⟩ / ⟨реал эхпрессион⟩ ҳақиқий, аммо аниқ синтактик бирликлардир, лекин ⟨реал эхпрессион⟩ ДИВ ⟨интегер эхпрессион⟩ сон ифодаси⟩ (яъни, бутун сонли бўлинишда бажарилади) сузувчи нуқта қиймати) нотўғри синтактик бирликдир.

Бу АЛГОЛ W нинг рекорд турдаги ускунасини намойиш этади.

РЕCОРД ПЕРСОН (
  СТРИНГ(20) НАМЕ; 
  ИНТЕГЕР АГЕ; 
  ЛОГИCАЛ МАЛЕ; 
  РЕФЕРЕНCЕ(ПЕРСОН) ФАТҲЕР, МОТҲЕР, ЙОУНГЕСТОФФСПРИНГ, ЭЛДЕРСИБЛИНГ
);

РЕФЕРЕНCЕ(ПЕРСОН) ПРОCЕДУРЕ ЙОУНГЕСТУНCЛЕ (РЕФЕРЕНCЕ(ПЕРСОН) Р);
  БЕГИН
    РЕФЕРЕНCЕ(ПЕРСОН) П, М;
    П := ЙОУНГЕСТОФФСПРИНГ(ФАТҲЕР(ФАТҲЕР(Р)));
    WҲИЛЕ (П ¬= НУЛЛ) АНД (¬ МАЛЕ(П)) ОР (П = ФАТҲЕР(Р)) ДО
      П := ЭЛДЕРСИБЛИНГ(П);
    М := ЙОУНГЕСТОФФСПРИНГ(МОТҲЕР(МОТҲЕР(Р)));
    WҲИЛЕ (М ¬= НУЛЛ) АНД (¬ МАЛЕ(М)) ДО
      М := ЭЛДЕРСИБЛИНГ(М);
    ИФ П = НУЛЛ ТҲЕН 
      М 
    ЭЛСЕ ИФ М = НУЛЛ ТҲЕН 
      П 
    ЭЛСЕ 
      ИФ АГЕ(П) < АГЕ(М) ТҲЕН П ЭЛСЕ М
  ЭНД

Амалга ошириш

АЛГОЛ W нинг катта қисми, тахминан 2700 та карта Wиртҳ’с ПЛ360 да ёзилган. Амалдаги ИБМ операцион тизими (ОС) учун интерфейс модули (ОС, ДОС, МТС, ОРВЙЛ) ИБМ ассемблер тилида ёзилган бўлиб, 250 та картадан кам.

360/67 операцион тизимида кириш ва чиқиш файллари бириктирилганда, компилятор тахминан 25 сония ичида ўзини қайта компиляция қилади. Компилятор тахминан 2700 та карта тасвиридир. Шундай қилиб, юқорида келтирилган бажарилиш вақтидан ОС режалаштирувчи вақти айирилса, компилятор секундига 100 та картадан юқори тезликда ишлаётгани кўринади (зич код учун). 360/30 да ДОС муҳитида компилятор фақат картани о'қувчи тезлиги билан чекланади. Компилятор о'зини 64К 360/30 да дақиқасига 1200 та карта (картани о'қувчи тезлиги) тезлигида муваффақиятли қайта компиляция қилди. Бу ДОС Ассемблер учун 250 та картадан иборат интерфейс модулини йиг'иш учун зарур бо'лган вақт билан солиштирганда та'сирчан. Ибратли ко'рсатмалар кенгайтирилганда, ДОС интерфейси 972 та карта тасвирига эга ва Ассемблер йиг'иш учун 15 дақиқа вақт олади.

Манбалар

  1. ↑ Wиртҳ, Никлаус; Ҳоаре, C. А. Р. (1966-йил июн). „А cонтрибутион то тҳе девелопмент оф АЛГОЛ“. Cоммуниcатионс оф тҳе АCМ. 9-жилд. 413–432-бет. Қаралди: 7-октабр 2020-йил. {{cите магазине}}: сана киритилиши керак бўлган параметрга берилган қийматни текшириш лозим: |дате= (ёрдам)
  2. ↑ Бауэр, Ҳенрй Р.; Беcкер, Шелдон И.; Граҳам, Сусан Л.; Форсйтҳе, Георге Э.; Саттертҳwаите, Эдwин Ҳ. (1968-йил март). Течниcал Репорт Нумбер: CС-ТР-68-89 (Репорт). Станфорд Университй. ҳттп://www-дб.станфорд.эду/ТР/CС-ТР-68-89.ҳтмл.  (Вариоус доcуменц фор Станфорд’с 1972 имплементатион оф АЛГОЛ W; тҳис репорт инcлудес тҳе АЛГОЛ W Лангуаге Десcриптион.
  3. ↑ Ситес. „АЛГОЛ W Референcе Мануал“. и.станфорд.эду. Станфорд Университй. Қаралди: 24-июл 2022-йил.
  4. ↑ Бауэр, Ҳенрй Р.; Беcкер, Шелдон И.; Граҳам, Сусан Л.; Саттертҳwаите, Эдwин Ҳ.; Ситес, Ричард Л. (1972-йил июн). АЛГОЛ W Лангуаге Десcриптион (Репорт). ҳттпс://www.алгол60.орг/доcсW/алголw.пдф. 
  5. ↑ ван Wижнгаарден, Адриаан (22-октабр 1965-йил). Ортҳогонал Десигн анд Десcриптион оф а Формал Лангуаге: МР76 (Репорт). Амстердам, Нетҳерландс: Матҳематиcал Cентре. Арчивед фром тҳе оригинал он 29-октабр 2019-йил. ҳттпс://wеб.арчиве.орг/wеб/20191029151436/ҳттп://wеб.эаҳ-жена.де/%7Эклеине/ҳисторй/лангуагес/ВанWижнгаарден-МР76.пдф. Қаралди: 7-октабр 2020-йил. 

Ҳаволалар