ALGOL 60 - ALGOL 60

ALGOL 60
Paradigmalarprotsessual, majburiy, tuzilgan
OilaALGOL
LoyihalashtirilganBackus, Bauer, Yashil, Kats, Makkarti, Naur, Perlis, Rutishauser, Samelson, van Wijngaarden, Vauquois, Wegstein, Vudger
Birinchi paydo bo'ldi1960; 60 yil oldin (1960)
Matnni yozishStatik, kuchli
Qo'llash sohasiLeksik
Ta'sirlangan
ALGOL 58
Ta'sirlangan
Ko'pgina keyingi imperativ tillar (shunday deb nomlangan) ALGOLga o'xshash tillar), masalan. Simula, CPL, Paskal, Ada, C

ALGOL 60 (qisqacha Algoritmik til 1960 yil) a'zosi ALGOL kompyuter dasturlash tillari oilasi. U ergashdi ALGOL 58 joriy etgan kod bloklari va boshlash va oxiri ularni chegaralash uchun juftliklar, ko'tarilishdagi asosiy avansni ifodalaydi tizimli dasturlash. ALGOL 60 birinchi tilni amalga oshirdi ichki funktsiya bilan ta'riflar leksik ko'lam. Bu ko'plab boshqa dasturlash tillarini, shu jumladan, paydo bo'lishiga olib keldi CPL, Simula, BCPL, B, Paskal va C. Deyarli davrning har bir kompyuterida a tizimlarni dasturlash tili ALGOL 60 tushunchalari asosida.

Niklaus Virt o'z asosiga asoslangan ALGOL V rivojlantirishga o'tishdan oldin ALGOL 60-da Paskal. Algol-W kelajak avlod ALGOL bo'lishga mo'ljallangan edi, ammo ALGOL 68 qo'mita dizayni soddalashtirilgan ALGOL 60 dan ko'ra murakkabroq va takomillashtirilgan dizayni to'g'risida qaror qabul qildi. Rasmiy ALGOL versiyalari birinchi nashr qilingan yil nomi bilan nomlandi. Algol 68 Algol 60 dan sezilarli darajada farq qiladi va qisman shunday bo'lganligi uchun tanqid qilingan, shuning uchun umuman "Algol" Algol 60 shevalarini nazarda tutadi.

Standartlashtirish

ALGOL 60 - bilan COBOL - standartlashtirishni izlagan birinchi tillar edi.

Tarix

ALGOL 60 asosan AQSh va Evropadagi tadqiqotchi kompyuter olimlari tomonidan ishlatilgan. Uning tijorat dasturlarida ishlatilishiga uning tavsifida standart kirish / chiqish imkoniyatlarining yo'qligi va yirik kompyuter sotuvchilari tomonidan tilga qiziqishning yo'qligi to'sqinlik qildi. ALGOL 60 shu bilan birga algoritmlarni nashr etish uchun standart bo'lib qoldi va kelajakdagi til rivojlanishiga katta ta'sir ko'rsatdi.

Jon Backus ishlab chiqilgan Backus normal shakli dasturlash tillarini ALGOL 58 uchun maxsus tavsiflash usuli. U qayta ko'rib chiqilgan va kengaytirilgan Piter Naur ALGOL 60 uchun va Donald Knuth taklifining nomi o'zgartirildi Backus-Naur shakli.[1]

Piter Naur: "Men ALGOL byulletenining muharriri sifatida ushbu tilning xalqaro munozaralariga jalb etildim va 1959 yil noyabrda Evropa tillarini loyihalash guruhining a'zosi sifatida tanlandim. Ushbu lavozimda men ALGOL 60 ma'ruzasining muharriri edim. 1960 yil yanvar oyida Parijda o'tkazilgan ALGOL 60 yig'ilishi natijasida. "[2]

Parijdagi yig'ilishda quyidagi odamlar qatnashdilar (11-16 yanvar kunlari):

Alan Perlis uchrashuvning yorqin ta'rifini berdi: "Uchrashuvlar charchagan, bir-birlariga ta'sirchan va hayajonli edi. O'zining yaxshi g'oyalari boshqalarning yomonlari bilan birga tashlanganida ham og'irlashdi. Shunga qaramay, butun davr mobaynida mehnatsevarlik saqlanib qoldi. Kimyo 13 zo'r edi. "

Dastlab til o'z ichiga olmagan rekursiya. Bu spetsifikatsiyaga so'nggi daqiqada, ba'zi qo'mitalarning xohishiga qarshi kiritilgan.[3]

ALGOL 60 unga ergashgan ko'plab tillarni ilhomlantirdi. Toni Xare "Mana shu til o'z zamonasidan ancha ilgarilab ketganki, bu nafaqat o'tmishdoshlarni, balki deyarli barcha merosxo'rlarni ham takomillashtirish edi".[4][5]

ALGOL 60 dasturlarini amalga oshirish muddati

Bugungi kunga qadar Algol 60 ning kamida 70 ta kengaytmalari, kengaytmalari, derivatsiyalari va tillari mavjud.[6]

IsmYilMuallifShtatTavsifMaqsadli protsessor
X1 ALGOL 601960 yil avgust[7]Edsger V. Dijkstra va Yaap A. ZonneveldGollandiyaALGOL 60 ning birinchi tatbiq etilishi[8]Electrologica X1
Algol1960[9]Edgar T. DazmollarAQSHAlgol 60CDC 1604
Burrouz Algol
(Bir nechta variant)
1961Burrouz korporatsiyasi (Hoare ishtirokida, Dijkstra va boshqalar)AQSHAsoslari Burrouz (va hozir Unisys MCP asoslangan) kompyuterlarKatta tizimlarni ishlab chiqaradi
va ularning o'rta darajasi ham.
Case ALGOL1961AQSHSimula dastlab Case ALGOL-ning simulyatsion kengaytmasi sifatida tuzilganUNIVAC 1107
GOGOL1961Uilyam M. MakkimanAQSHODIN vaqtini taqsimlash tizimi uchunPDP-1
DASK ALGOL1961Piter Naur, Yorn JensenDaniyaAlgol 60Regnecentralen-da DASK
JILGA ALGOL1962Torgil Ekman, Karl-Erik FröbergShvetsiyaAlgol 60Tabassum da Lund universiteti
GIER ALGOL1962Piter Naur, Yorn JensenDaniyaAlgol 60Regnecentralen-da GIER
Dartmut ALGOL 301962Tomas Eugene Kurtz va boshq.AQSHLGP-30
Alcor Mayns 2002 yil1962Ursula Xill-Samelson, Xans LangmaakGermaniyaSiemens 2002 yil
USS 90 Algol1962L. PetroneItaliya
Elliott ALGOL1962C. A. R. HoareBuyuk BritaniyaUning 1980 yilda muhokama qilingan Turing mukofoti leksiyaElliott 803 & Elliott 503
Algol 601962Roland Strobel[10]Sharqiy GermaniyaAmaliy matematika instituti tomonidan amalga oshirilgan, Berlinda Germaniya Fanlar akademiyasiZeiss-Rechenautomat ZRA 1
Algol tarjimoni1962G. van der Mey va V.L. van der PoelGollandiyaStaatsbedrijf der Posterijen, Telegrafie en TelefonieZEBRA
Kidsgrove Algol1963F. G. DunkanBuyuk BritaniyaIngliz elektr kompaniyasi KDF9
VALGOL1963Val ShorreAQSHNing sinovi META II kompilyator kompilyatori
FP6000 Algol1963Rojer MurKanadauchun yozilgan Saskaçevan Power CorpFP6000
Vetston1964Brian Randell va Lawford Jon RassellBuyuk BritaniyaEnglish Electric Company atom energiyasi bo'limi. Oldin Ferranti Pegasus, Milliy jismoniy laboratoriyalar ACE va English Electric DEUCE amalga oshirish.Ingliz elektr kompaniyasi KDF9
NU ALGOL1965NorvegiyaUNIVAC
Algol 601965[11]F.E.J. Kruseman AretsGollandiyaEL-X8 uchun MC kompilyatoriElectrologica X8
ALGEK1965SSSRMinsk-22ALGOL-60 asosida ishlab chiqarilgan ALGEK COBOL iqtisodiy vazifalar uchun qo'llab-quvvatlash
MALGOL1966publ. A. Viil, M Kotli va M. Raxendi,Estoniya SSRMinsk-22
ALGAMS1967GAMS guruhi (GAMS, gruppa avtomatizatsiyalashtirilgan programmalashtirish dlya mashin srednego klassa), Comecon Fan Akademiyalari hamkorligiKomekonMinsk-22, keyinroq ES EVM, BESM
ALGOL / ZAM1967PolshaPolsha ZAM kompyuter
Xitoy Algol1972XitoySymbol tizimi orqali ifodalangan xitoycha belgilar
DG / L1972AQSHDG Tutilish Kompyuterlar oilasi
NASE1990Erik ShoenfelderGermaniyaTarjimonLinux va MS Windows
MART2000Endryu MaxhorinRossiyaAlgol-60 dan S gacha tarjimonGNU Compiler Collection tomonidan qo'llab-quvvatlanadigan barcha protsessorlar; MARST GNU loyihasining bir qismidir

Burrouz shevalari maxsus tizim dasturlash shevalarini o'z ichiga olgan ESPOL va NEWP.

Xususiyatlari

Rasmiy ravishda belgilangan ALGOL 60 ning kirish-chiqarish imkoniyatlari yo'q edi; amalga oshirishlar o'zlarini kamdan-kam bir-biriga mos keladigan usullar bilan aniqladilar. Aksincha, ALGOL 68 keng kutubxonasini taqdim etdi translyatsiya (Kirish / chiqarish uchun ALGOL 68 so'zlashuvi) moslamalari.

ALGOL 60 ikkita ta'minladi baholash strategiyalari uchun parametr o'tish: umumiy chaqiruv qiymati va ism-sharif. Amalga oshiriladigan har bir rasmiy parametr uchun protsedura deklaratsiyasi ko'rsatilgan: qiymat chaqiruv qiymati uchun belgilangan va qo'ng'iroq nomi uchun qoldirilgan. Qo'ng'iroq farqli o'laroq ma'lum ta'sirga ega qo'ng'iroq orqali. Masalan, parametrlarini ko'rsatmasdan qiymat yoki ma'lumotnoma, agar qabul qilingan haqiqiy parametrlar butun son o'zgaruvchisi va shu tamsayı o'zgaruvchisi tomonidan indekslangan qator bo'lsa, ikkita parametr qiymatini almashtiradigan protsedurani ishlab chiqish mumkin emas.[12] (I, A [i]) ni funktsiyaga almashtirish uchun ko'rsatkichni uzatishni o'ylab ko'ring. Endi har safar almashtirishga murojaat qilinganida, u qayta baholanadi. I: = 1 va A [i]: = 2 deb ayting, shuning uchun har doim almashtirishga murojaat qilinganida u qiymatlarning boshqa kombinatsiyasini qaytaradi ([1,2], [2,1], [1,2] va boshqalar) yoqilgan). Shunga o'xshash holat haqiqiy argument sifatida qabul qilingan tasodifiy funktsiya bilan sodir bo'ladi.

Ko'plab kompilyatorlar dizaynerlar tomonidan chaqirilgan nomlar qiziqarli "thunks "uni amalga oshirish uchun ishlatiladi. Donald Knuth o'ylab topdi "erkak yoki bola testi "to'g'ri bajarilgan kompilyatorlarni ajratish uchun"rekursiya va mahalliy bo'lmagan ma'lumotnomalar. "Ushbu testda qo'ng'iroq qilish uchun misol mavjud.

ALGOL 60 Xavfsiz so'zlar va cheklangan identifikatorlar

Standartda 35 ta shunday saqlangan so'zlar mavjud Katta tizimlarni ishlab chiqaradi til osti:

  • ALPHA
  • ARRAY
  • BOSHLASH
  • BOOLEAN
  • Sharh
  • DAVOM ETING
  • Bevosita
  • QILING
  • DUBLE
  • BOShQA
  • OXIRI
  • Hodisa
  • Yolg'on
  • Fayl
  • UCHUN
  • FORMAT
  • GO
  • IF
  • INTEGER
  • Yorliq
  • Ro'yxat
  • UZOQ
  • SHAXSIY
  • POINTER
  • TARTIBI
  • HAQIQIY
  • QADAM
  • O'chirish
  • Vazifa
  • Keyin
  • Rost
  • TO'G'RI
  • Qiymat
  • VAQTDA
  • Pochta

Burroughs yirik tizimlarining pastki tilida 71 ta bunday cheklangan identifikator mavjud:

  • QABUL QILING
  • VA
  • QO'ShIMChA
  • BILAN
  • Qo'ng'iroq qiling
  • Ish
  • SABAB
  • YAQIN
  • DEALOCATE
  • Aniqlang
  • OLISH
  • O'CHIRISH
  • Displey
  • DIV
  • DUMP
  • YOQISH
  • EQL
  • EQV
  • BIRJA
  • Tashqi
  • To'ldiring
  • Oldinga
  • GEQ
  • GTR
  • IMP
  • IN
  • Buzilish
  • IS
  • FUNT
  • LEQ
  • Ozodlik
  • LINE
  • QO'LLASH
  • LSS
  • MERGE
  • MOD
  • MONITOR
  • MUX
  • NEQ
  • YOQ
  • YO'Q
  • YOQDI
  • OCHIQ
  • Yoki
  • Chiqdi
  • SURAT
  • Jarayon
  • ISHLAB CHIQARISH
  • PROGRAMDUMP
  • RB
  • O'QING
  • Chiqarish
  • O'zgartirish
  • QAYTA O'RNATISH
  • OLchov
  • Qaytish
  • Yugurish
  • SCAN
  • Qidirmoq
  • O'rnatish
  • O'tkazib yuborish
  • TARTIB
  • SPACE
  • Almashtirish
  • THRU
  • ZAMONLARI
  • TO
  • KUTMOQ
  • QACHON
  • Bilan
  • YOZING

shuningdek, barcha ichki funktsiyalarning nomlari.

Standart operatorlar

AfzallikOperator
birinchi
arifmetik
birinchi↑ (kuch)
ikkinchi×, / (real), ÷ (tamsayı)
uchinchi+, -
ikkinchi<, ≤, =, ≥, >, ≠
uchinchi¬ (emas)
to'rtinchi∧ (va)
beshinchi∨ (yoki)
oltinchi⊃ (xulosa)
ettinchi≡ (ekvivalentlik)

Misollar va portativlik masalalari

Kod namunalarini taqqoslash

ALGOL 60

protsedura Absmax (a) Hajmi: (n, m) Natija: (y) Subscripts: (i, k); qiymat n, m; qator a; tamsayı n, m, i, k; haqiqiy y;sharh M matritsaning mutloq buyuk elementi n ga m ga teng y ga, bu elementning pastki yozuvlari i va k ga o'tkaziladi;boshlash    tamsayı p, q; y: = 0; i: = k: = 1; uchun p: = 1 qadam 1 qadar n qil        uchun q: = 1 qadam 1 qadar m qil            agar abs (a [p, q])> y keyin                boshlash y: = abs (a [p, q]); i: = p; k: = q oxirioxiri Absmax

Amalga oshirish qalin harflar bilan qanday yozilishi kerakligi bilan farq qiladi. "INTEGER" so'zi, shu jumladan tirnoq belgilari, ba'zi bir amalga oshirilish joylarida ishlatilishi kerak tamsayı, yuqorida, shu bilan belgilash bu maxsus kalit so'z sifatida.

Quyida jadval yordamida qanday qilib jadval ishlab chiqarishning misoli keltirilgan Elliott 803 ALGOL:[13]

 Yugurish punkti algol sinovi 'A, B, C, D' REALni boshlash uchun 'O'qish D' uchun A: = 0,0 D QADAM 6.3 gacha BOSING BOSING PANCHA (3), ££ L ?? ' B: = SIN (A) 'C: = COS (A)' PRINT PANCHA (3),SAMELINE,MUVOFIQ (1,6), A, B, C 'END' END '

ALGOL 60 oilasi

ALGOL 60-da I / O jihozlari bo'lmaganligi sababli, ko'chma mavjud emas salom dunyo dasturi ALGOLda. Quyidagi dastur Unisys A seriyali meynfreymi uchun ALGOL dasturini tuzishi va ishlashi mumkin (va hali ham) va bu Til qo'llanmasidan olingan kodni soddalashtirishdir.[14] da Michigan universiteti -Dearborn Computer and InformationScience Department Salom dunyo! ALGOL namunali dastur sahifasi.[15]

Faylni boshlash (KIND = REMOTE); EBCDIC ARRAY E [0:11]; E-ni "SALOM DUNYo!" BILAN O'RNATISH; YOZISH (F, *, E); END.

Inline formatidan foydalangan holda oddiyroq dastur:

Faylni boshlash (KIND = REMOTE); YOZING (F, <"HELLO WORLD!">); END.

Display iborasidan foydalangan holda yanada sodda dastur:

KO'RSATISHNI BOSHLASH ("DUNYO SALOM!") OXIRI.

Elliott Algol I / O-dan foydalanishning muqobil misoli quyidagicha. Elliott Algol bu erda ko'rsatilgan "ochiq satr-iqtibos" va "yaqin satr-tirnoq" uchun turli xil belgilarni ishlatgan va .

 dastur HiFolks; boshlash    chop etish Salom Dunyooxiri;

Bu erda Elliott 803 Algol (A104) uchun versiya mavjud. Elliott 803 standartida 5 teshikli qog'oz lenta ishlatilgan va shu bilan faqat katta harflar bo'lgan. Kodda biron bir tirnoq belgisi yo'q edi £ (funt belgisi) ochiq kotirovka uchun ishlatilgan va ? (savol belgisi) yaqin taklif uchun. Ikki tirnoqli tirnoqlarda maxsus ketma-ketliklar joylashtirildi (masalan, ££ L ?? teleprinterda yangi chiziq paydo bo'ldi).

  HIFOLKS "BOSHQA BOSING £ SALOM DUNYo £ L ??" OXIRI'

The AKT 1900 seriyali Algol I / O versiyasi qog'oz lenta yoki perforatsiyadan kirishga ruxsat berdi. Qog'oz lentasining "to'liq" rejimi kichik harflarga ruxsat berildi. Chiqish chiziqli printerga tegishli edi. '(', ')' Va% dan foydalanishga e'tibor bering.[16]

  'PROGRAM' (SALOM) 'BOSHLASH' 'FOYDALANISh' OCHIQ SAVOZ '(', YAQIN ')', BOSHQALAR BO'LADI% YOZILISHI KERAK, BO'LADI JOYLARNI ETIBOR QILMAYDI; MATN YOZING ('(' HELLO% WORLD ')'); "Tugatish"

Shuningdek qarang

Adabiyotlar

  1. ^ Knut, Donald E. (1964 yil dekabr). "Backus normal form vs Backus Naur formasi". Kom. ACM. 7 (12): 735–6. doi:10.1145/355588.365140. S2CID  47537431.
  2. ^ ACM mukofotiga iqtibos / Piter Naur, 2005
  3. ^ van Emden, Marten (2014). "Rekursiya qanday qilib dasturlashga o'tdi: fitna, xiyonat va ilg'or dasturlash tilidagi semantika haqidagi ertak". Dasturchi o'rni.
  4. ^ Hoare, C.A.R. (1973 yil dekabr). "Til dizaynini dasturlash bo'yicha ko'rsatmalar" (PDF). p. 27. (Ushbu bayonot ba'zida noto'g'ri talqin qilinadi Edsger V. Dijkstra, shuningdek, birinchi ALGOL 60 ni amalga oshirishda ishtirok etdi kompilyator.)
  5. ^ Abelson, Xel; Dybvig, R. K .; va boshq. Ris, Jonatan; Klinger, Uilyam (tahr.). "Algoritmik til sxemasi bo'yicha qayta ishlangan (3) hisobot, (ALGOL 60 xotirasiga bag'ishlangan)". Olingan 2009-10-20.
  6. ^ Kompyuter tillari entsiklopediyasi Arxivlandi 2011 yil 27 sentyabr, soat Orqaga qaytish mashinasi
  7. ^ Yorug'lik, E. G. (2011). "Dijkstra-ning umumlashtirish uchun mitingi: rekursiv protseduraning paydo bo'lishi, 1950-yillarning oxiri - 1960-yillarning boshlari". Kompyuter jurnali. 54 (11): 1756–1772. doi:10.1093 / comjnl / bxr002.
  8. ^ Kruseman Arets, F.E.J. (2003 yil 30-iyun). "Electrologica X1 uchun Dijkstra-Zonneveld ALGOL 60 kompilyatori" (PDF). Dasturiy ta'minot. Informatika tarixi. Kruislaan 413, 1098 SJ Amsterdam: Centrum Wiskunde & Informatica.CS1 tarmog'i: joylashuvi (havola)
  9. ^ Dazmollar, Edgar T., ALGOL 60 uchun sintaksis yo'naltirilgan kompilyator, ACM aloqalari, jild. 4, p. 51. (1961 yil yanvar)
  10. ^ Rechenautomaten mit Trommelspeicher, Förderverein der Technischen Sammlung Drezden
  11. ^ Kruseman Arets, F.E.J. (1973). Algol 60 dagi Algol 60 kompilyatori. Matematik markazning risolalari. Amsterdam: Matematik markaz.
  12. ^ Aho, Alfred V.; Ravi Seti; Jeffri D. Ullman (1986). Tuzuvchilar: printsiplar, usullar va vositalar (1-nashr). Addison-Uesli. ISBN  978-0-201-10194-2., 7.5-bo'lim va undagi havolalar
  13. ^ "803 ALGOL" uchun qo'llanma Elliott 803 ALGOL
  14. ^ https://web.archive.org/web/20100209040840/http://www.engin.umd.umich.edu/CIS/course.des/cis400/index.html
  15. ^ https://web.archive.org/web/20100204112923/http://www.engin.umd.umich.edu/CIS/course.des/cis400/algol/hworld.html
  16. ^ "ICL 1900 seriyasi: Algol tili". ICL Texnik nashri 3340. 1965 yil.

Qo'shimcha o'qish

Tashqi havolalar