अल्गोल

अल्गोल (एल्गोरिथम भाषा के लिए संक्षिप्त) अनिवार्य प्रोग्रामिंग कंप्यूटर प्रोग्रामिंग भाषाओं का एक परिवार है जिसे मूल रूप से 1958 में विकसित किया गया था। ALGOL ने कई अन्य भाषाओं को बहुत अधिक प्रभावित किया और एसोसिएशन फॉर कंप्यूटिंग मशीनरी (ACM) द्वारा पाठ्यपुस्तकों और शैक्षणिक स्रोतों में तीस से अधिक वर्षों के लिए उपयोग की जाने वाली एल्गोरिथम विवरण के लिए मानक विधि थी। इस अर्थ में कि अधिकांश आधुनिक भाषाओं की सिंटेक्स (प्रोग्रामिंग भाषाएं) एल्गोल जैसी हैं, यह यकीनन तीन अन्य उच्च-स्तरीय प्रोग्रामिंग भाषाओं की तुलना में अधिक प्रभावशाली थी, जिनमें से यह मोटे तौर पर समकालीन थी: फोरट्रान, लिस्प (प्रोग्रामिंग भाषा), और कोबोल। इसे फोरट्रान के साथ कुछ कथित समस्याओं से बचने के लिए डिज़ाइन किया गया था और अंततः पीएल / आई, सिमुला, बीसीपीएल, बी (प्रोग्रामिंग भाषा), पास्कल (प्रोग्रामिंग भाषा), और सी (प्रोग्रामिंग भाषा) सहित कई अन्य प्रोग्रामिंग भाषाओं को जन्म दिया।

ALGOL ने ब्लॉक (प्रोग्रामिंग) और ... उनका परिसीमन करने के लिए जोड़े। यह लेक्सिकल स्कोप के साथ नेस्टेड फ़ंक्शन परिभाषाओं को लागू करने वाली पहली भाषा भी थी। इसके अलावा, यह पहली प्रोग्रामिंग भाषा थी जिसने औपचारिक भाषा की परिभाषा पर विस्तृत ध्यान दिया और एल्गोल 60#इतिहास के माध्यम से भाषा डिजाइन के लिए एक प्रमुख औपचारिक व्याकरण संकेत बैकस-नौर रूप पेश किया।

तीन प्रमुख विशिष्टताएँ थीं, जिनका नाम उन वर्षों के नाम पर रखा गया था जिन्हें वे पहली बार प्रकाशित किए गए थे: ALGOL 68 ALGOL 60 से काफी अलग है और अच्छी तरह से प्राप्त नहीं हुआ था, इसलिए सामान्य तौर पर Algol का अर्थ ALGOL 60 और इसकी बोलियाँ हैं।
 * ALGOL 58 - अंतर्राष्ट्रीय बीजगणितीय भाषा के लिए मूल रूप से IAL कहलाने का प्रस्ताव है।
 * ALGOL 60 - पहली बार 1961 में X1 ALGOL 60 के रूप में लागू किया गया। संशोधित 1963।
 * ALGOL 68 - लचीली सरणियों, स्लाइस, समानता, ऑपरेटर पहचान सहित नए तत्वों को पेश किया। संशोधित 1973।

इतिहास
1958 में ETH ज्यूरिख (cf. ALGOL 58) में एक बैठक में यूरोपीय और अमेरिकी कंप्यूटर वैज्ञानिकों की एक समिति द्वारा ALGOL को संयुक्त रूप से विकसित किया गया था। इसने तीन अलग-अलग सिंटैक्स निर्दिष्ट किए: एक संदर्भ सिंटैक्स, एक प्रकाशन सिंटैक्स और एक कार्यान्वयन सिंटैक्स। अलग-अलग सिंटैक्स ने इसे अलग-अलग भाषाओं के लिए दशमलव बिंदुओं (अल्पविराम बनाम अवधि) के लिए अलग-अलग कीवर्ड नामों और सम्मेलनों का उपयोग करने की अनुमति दी।

ALGOL का उपयोग ज्यादातर संयुक्त राज्य अमेरिका और यूरोप में अनुसंधान कंप्यूटर वैज्ञानिकों द्वारा किया जाता था। व्यावसायिक अनुप्रयोगों में इसका उपयोग इसके विवरण में मानक इनपुट/आउटपुट सुविधाओं की अनुपस्थिति और बरोज़ कॉर्पोरेशन के अलावा बड़े कंप्यूटर विक्रेताओं द्वारा भाषा में रुचि की कमी के कारण बाधित हुआ था। ALGOL 60 हालांकि एल्गोरिदम के प्रकाशन के लिए मानक बन गया और भविष्य के भाषा के विकास पर इसका गहरा प्रभाव पड़ा।

जॉन बैकस ने विशेष रूप से ALGOL 58 के लिए प्रोग्रामिंग भाषाओं का वर्णन करने के लिए बैकस सामान्य रूप विधि विकसित की। इसे ALGOL 60 के लिए पीटर नौर द्वारा संशोधित और विस्तारित किया गया था, और डोनाल्ड नुथ के सुझाव पर इसका नाम बदलकर बैकस-नौर रखा गया। पीटर नौर: ALGOL बुलेटिन के संपादक के रूप में मैं भाषा की अंतर्राष्ट्रीय चर्चाओं में शामिल हो गया था और नवंबर 1959 में यूरोपीय भाषा डिजाइन समूह का सदस्य बनने के लिए चुना गया था। इस क्षमता में मैं ALGOL 60 रिपोर्ट का संपादक था, जिसे इस रूप में तैयार किया गया था जनवरी 1960 में पेरिस में ALGOL 60 बैठक का परिणाम।

निम्नलिखित लोगों ने पेरिस में बैठक में भाग लिया (1 से 16 जनवरी तक): एलन पेर्लिस ने बैठक का एक विशद विवरण दिया: बैठकें थकाऊ, अंतहीन और उत्साहजनक थीं। जब दूसरों के बुरे विचारों के साथ-साथ अपने अच्छे विचारों को भी त्याग दिया जाता है तो व्यक्ति क्रोधित हो जाता है। फिर भी, पूरी अवधि के दौरान परिश्रम जारी रहा। 13 की केमिस्ट्री बेहतरीन थी।
 * फ्रेडरिक एल. बाउर, पीटर नौर, हेंज रटिशौसर, क्लॉस सेमेलसन, बर्नार्ड वाउक्विस, एड्रियान वैन विजनगार्डन, और माइकल वुडगर (यूरोप से)
 * जॉन बैकस|जॉन डब्ल्यू.बैकस, जूलियन ग्रीन (कंप्यूटर वैज्ञानिक), चार्ल्स काट्ज, जॉन मैक्कार्थी (कंप्यूटर वैज्ञानिक), एलन पर्लिस|एलन जे. पर्लिस, और जोसेफ हेनरी वेगस्टीन (यूएसए से)।

ALGOL 60 ने इसके बाद आने वाली कई भाषाओं को प्रेरित किया। टोनी होरे ने टिप्पणी की: यहां एक ऐसी भाषा है जो अपने समय से बहुत आगे है कि यह न केवल अपने पूर्ववर्तियों पर बल्कि इसके लगभग सभी उत्तराधिकारियों पर भी सुधार था। रेफरी>प्रोग्रामिंग लैंग्वेज डिजाइन पर संकेत, गाड़ी। होरे, दिसंबर 1973. पृष्ठ 27. (इस कथन को कभी-कभी गलत तरीके से एडजर डब्ल्यू. डिजस्ट्रा के लिए जिम्मेदार ठहराया जाता है, जो पहले एल्गोल 60 कंपाइलर को लागू करने में भी शामिल था।)  योजना (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा, लिस्प का एक संस्करण ( प्रोग्रामिंग लैंग्वेज) जिसने ALGOL के ब्लॉक स्ट्रक्चर और लेक्सिकल स्कोप को अपनाया, ALGOL को श्रद्धांजलि में इसके मानक दस्तावेजों के लिए एल्गोरिथम लैंग्वेज स्कीम पर वर्डिंग रिवाइज्ड रिपोर्ट को भी अपनाया। रेफरी नाम = r3rs >

ALGOL और प्रोग्रामिंग भाषा अनुसंधान
जैसा कि पीटर लैंडिन ने उल्लेख किया है, ALGOL लैम्ब्डा कैलकुलस (कॉल-बाय-नेम) के साथ मूल अनिवार्य प्रभावों को संयोजित करने वाली पहली भाषा थी। जॉन सी रेनॉल्ड्स के कारण शायद भाषा का सबसे सुंदर सूत्रीकरण है, और यह अपनी वाक्य रचना और शब्दार्थ शुद्धता को सबसे अच्छा प्रदर्शित करता है। रेनॉल्ड्स के आदर्श ALGOL ने कॉल-बाय-वैल्यू भाषाओं जैसे एमएल (प्रोग्रामिंग लैंग्वेज) द्वारा उपयोग किए जाने वाले वैश्विक प्रभावों के विपरीत, कॉल-बाय-नेम भाषाओं के संदर्भ में स्थानीय प्रभावों की उपयुक्तता के बारे में एक ठोस पद्धतिगत तर्क दिया। भाषा की वैचारिक अखंडता ने प्रोग्रामिंग कंप्यूटेबल फ़ंक्शंस (पीसीएफ) और एमएल के साथ-साथ सिमेंटिक रिसर्च की मुख्य वस्तुओं में से एक बना दिया।

आईएएल कार्यान्वयन समयरेखा
तिथि करने के लिए अल्गोल 60 के कम से कम 70 संवर्द्धन, विस्तार, व्युत्पत्ति और उपभाषाएं हुई हैं।

बरोज़ बोलियों में विशेष बूटस्ट्रैपिंग बोलियाँ शामिल थीं जैसे कि एक्जीक्यूटिव सिस्टम प्रॉब्लम ओरिएंटेड लैंग्वेज और NEWP। बाद वाला अभी भी यूनिसिस एमसीपी सिस्टम सॉफ्टवेयर के लिए उपयोग किया जाता है।

गुण
आधिकारिक तौर पर परिभाषित ALGOL 60 में कोई I/O सुविधा नहीं थी; कार्यान्वयन ने स्वयं को ऐसे तरीकों से परिभाषित किया जो शायद ही कभी एक दूसरे के साथ संगत थे। इसके विपरीत, ALGOL 68 ने ट्रांसपुट (इनपुट/आउटपुट) सुविधाओं की एक विस्तृत लाइब्रेरी की पेशकश की।

ALGOL 60 ने पैरामीटर (कंप्यूटर साइंस) पास करने के लिए दो मूल्यांकन रणनीति की अनुमति दी: कॉमन कॉल-बाय-वैल्यू और कॉल-बाय-नेम। कॉल-बाय-रेफरेंस के विपरीत कॉल-बाय-नेम के कुछ प्रभाव हैं। उदाहरण के लिए, पैरामीटर को मान या संदर्भ के रूप में निर्दिष्ट किए बिना, ऐसी प्रक्रिया विकसित करना असंभव है जो दो पैरामीटर के मानों को स्वैप कर देगी यदि वास्तविक पैरामीटर जो एक पूर्णांक चर और एक सरणी है जो उसी पूर्णांक चर द्वारा अनुक्रमित है. फ़ंक्शन में स्वैप (i, A [i]) पर पॉइंटर पास करने के बारे में सोचें। अब जब हर बार स्वैप का संदर्भ दिया जाता है, तो इसका पुनर्मूल्यांकन किया जाता है। कहो मैं: = 1 और ए [i]: = 2, इसलिए हर बार स्वैप का संदर्भ दिया जाता है, यह मूल्यों के अन्य संयोजन को लौटाएगा ([1,2], [2,1], [1,2] और इसी तरह ). इसी तरह की स्थिति वास्तविक तर्क के रूप में पारित एक यादृच्छिक कार्य के साथ होती है।

कॉल-बाय-नाम कई संकलक डिजाइनरों द्वारा इसे लागू करने के लिए उपयोग किए जाने वाले दिलचस्प थंक्स के लिए जाना जाता है। डोनाल्ड नुथ ने मैन या बॉय टेस्ट को अलग-अलग कंपाइलरों के लिए तैयार किया जो सही ढंग से पुनरावर्तन (कंप्यूटर विज्ञान) और गैर-स्थानीय संदर्भों को लागू करते हैं। इस परीक्षण में कॉल-बाय-नाम का एक उदाहरण है।

ALGOL 68 को एड्रियन वैन विंजार्डन द्वारा आविष्कृत एक दो-स्तरीय व्याकरण औपचारिकता का उपयोग करके परिभाषित किया गया था और जो उनके नाम पर आधारित है। वैन विजनार्डन व्याकरण एक संदर्भ-मुक्त व्याकरण का उपयोग करता है जो कि एक विशेष ALGOL 68 प्रोग्राम को पहचानने वाली प्रस्तुतियों का एक अनंत सेट उत्पन्न करता है; विशेष रूप से, वे इस तरह की आवश्यकताओं को व्यक्त करने में सक्षम हैं कि कई अन्य प्रोग्रामिंग भाषा मानकों में शब्दार्थ का लेबल लगाया जाता है और उन्हें अस्पष्टता-प्रवण प्राकृतिक भाषा गद्य में व्यक्त किया जाता है, और फिर संकलक में औपचारिक भाषा पार्सर से जुड़े तदर्थ कोड के रूप में लागू किया जाता है।

अल्गोल 60
(जिस तरह से बोल्ड टेक्स्ट को लिखा जाना है, वह कार्यान्वयन पर निर्भर करता है, उदाहरण के लिए 'INTEGER'-उद्धरण चिह्न शामिल हैं-पूर्णांक के लिए। इसे स्ट्रॉपिंग (प्रोग्रामिंग) के रूप में जाना जाता है।)

प्रक्रिया एब्समैक्स (ए) आकार: (एन, एम) परिणाम: (वाई) सबस्क्रिप्ट: (i, के); मूल्य एन, एम; सरणी ए; पूर्णांक एन, एम, आई, के; असली वाई; टिप्पणी मैट्रिक्स ए का पूर्ण सबसे बड़ा तत्व, आकार एन द्वारा एम y में स्थानांतरित किया जाता है, और इस तत्व की सदस्यता i और k में; शुरू करना पूर्णांक पी, क्यू; वाई: = 0; मैं := के := 1; p के लिए := 1 चरण 1 तक n करें q के लिए := 1 चरण 1 तक m करें अगर एब्स (ए [पी, क्यू])> वाई तो बेगिन वाई: = एब्स (ए [पी, क्यू]); मैं := पी; के:= क्यू समाप्त एब्समैक्स को समाप्त करें

इलियट 803 ALGOL का उपयोग करके टेबल (सूचना) कैसे तैयार करें, इसका एक उदाहरण यहां दिया गया है। फ़्लोटिंग पॉइंट एल्गोल टेस्ट' वास्तविक ए, बी, सी, डी 'शुरू करें पुनः जोड़ो' A के लिए:= 0.0 STEP D 6.3 DO तक शुरू करना प्रिंट पंच(3),££L??' बी := पाप (ए)' सी := सीओएस(ए)' प्रिंट पंच (3), समलाइन, संरेखित (1,6), ए, बी, सी ' समाप्त' समाप्त'

PUNCH(3) टेप पंच के बजाय टेलीप्रिंटर को आउटपुट भेजता है। SAMELINE कैरिज रिटर्न + लाइन फीड को आम तौर पर तर्कों के बीच मुद्रित करता है। ALIGNED(1,6) दशमलव बिंदु के पहले 1 अंक और 6 के साथ आउटपुट के प्रारूप को नियंत्रित करता है।

अल्गोल 68
निम्नलिखित कोड नमूने उपरोक्त ALGOL 60 कोड नमूने के ALGOL 68 संस्करण हैं।

ALGOL 68 कार्यान्वयन ने स्ट्रॉपिंग (प्रोग्रामिंग) के लिए ALGOL 60 के दृष्टिकोण का उपयोग किया। ALGOL 68 के मामले में बोल्ड टाइपफेस वाले टोकन आरक्षित शब्द, प्रकार (मोड) या ऑपरेटर हैं।

प्रो एब्स अधिकतम = ([,] असली ए, रेफरी असली वाई, रेफरी इंट आई, के) असली: टिप्पणी ⌈a बटा 2⌈a के आकार का, मैट्रिक्स a का सबसे बड़ा अवयव y में स्थानांतरित किया जाता है, और इस तत्व की सदस्यता i और k में; टिप्पणी शुरू करना रियल वाई := 0; मैं := ⌊a; के := 2⌊ए; p के लिए ⌊a से ⌈a do     q के लिए 2⌊a से 2⌈a तक करें अगर एब्स [पी, क्यू]> वाई तो वाई: = एब्स ए [पी, क्यू]; मैं := पी; के:= क्यू फाई आयुध डिपो ओड; वाई अंत # एब्स मैक्स # नोट: किसी सरणी की निचली (⌊) और ऊपरी (⌈) सीमाएं, और सरणी स्लाइसिंग, सीधे प्रोग्रामर के लिए उपलब्ध हैं।

फ़्लोटिंग पॉइंट algol68 टेस्ट: (  वास्तविक ए, बी, सी, डी;   # प्रिंटफ - 'स्टैंड आउट' फाइल को आउटपुट भेजता है। #   # प्रिंटफ ($ पी $); - एक नया पृष्ठ चुनता है #   प्रिंटफ (($ पीजी $, डी दर्ज करें:));   पुनः जोड़ो); for step from 0 while a:=step*d; ए <= 2 * पीआई करते हैं प्रिंटफ ($ एल $); # $l$ - एक नई लाइन का चयन करता है। # बी: = पाप (ए); सी: = कॉस (ए); printf(($z-d.6d$,a,b,c)) # दशमलव बिंदु के पहले 1 अंक और 6 के साथ आउटपुट स्वरूप। # आयुध डिपो )

समयरेखा: हैलो वर्ल्ड
एक कार्यान्वयन से दूसरे कार्यान्वयन में कार्यक्रमों की विविधता और पोर्टेबिलिटी की कमी को क्लासिक हैलो वर्ल्ड प्रोग्राम द्वारा आसानी से प्रदर्शित किया जाता है।

अल्गोल 58 (आईएएल)
ALGOL 58 में कोई I/O सुविधा नहीं थी।

अल जूल 60 परिवार
चूंकि ALGOL 60 में कोई I/O सुविधा नहीं थी, इसलिए ALGOL में कोई पोर्टेबल हैलो वर्ल्ड प्रोग्राम नहीं है। अगले तीन उदाहरण बरोज़ एक्सटेंडेड अल्गोल में हैं। इंटरएक्टिव टर्मिनल पर पहले दो डायरेक्ट आउटपुट वे चलते हैं। पहला सी के समान एक वर्ण सरणी का उपयोग करता है। भाषा सरणी पहचानकर्ता को सरणी के सूचक के रूप में उपयोग करने की अनुमति देती है, और इसलिए एक REPLACE कथन में।

एक इनलाइन प्रारूप का उपयोग कर एक सरल प्रोग्राम:

डिस्प्ले स्टेटमेंट का उपयोग करने वाला एक और भी सरल प्रोग्राम। ध्यान दें कि इसका आउटपुट सिस्टम कंसोल ('एसपीओ') पर समाप्त होगा:

इलियट एल्गोल I/O का उपयोग करने वाला एक वैकल्पिक उदाहरण इस प्रकार है। इलियट अल्गोल ने ओपन-स्ट्रिंग-कोट और क्लोज-स्ट्रिंग-कोट के लिए अलग-अलग वर्णों का इस्तेमाल किया, जिसे यहां दर्शाया गया है तथा.

नीचे इलियट 803 एल्गोल (ए104) से एक संस्करण है। मानक इलियट 803 में पांच-छेद वाले पेपर टेप का इस्तेमाल किया गया था और इस प्रकार केवल ऊपरी मामला था। कोड में किसी भी उद्धरण वर्ण का अभाव था इसलिए £ (यूके पाउंड साइन) का उपयोग खुले उद्धरण के लिए किया गया था और ? (प्रश्न चिह्न) करीबी उद्धरण के लिए। विशेष दृश्यों को दोहरे उद्धरण चिह्नों में रखा गया था (उदाहरण के लिए ££L?? ने टेलीप्रिंटर पर एक नई पंक्ति बनाई)।

हैलो यारो' शुरू करना प्रिंट £हैलो वर्ल्ड£एल?' समाप्त'

ICT 1900 श्रृंखला Algol I/O संस्करण ने पेपर टेप या पंच कार्ड से इनपुट की अनुमति दी। पेपर टेप 'फुल' मोड में लोअर केस की अनुमति है। आउटपुट एक लाइन प्रिंटर के लिए था। ओपन और क्लोज़ कोट कैरेक्टर्स को '(' और ')' और स्पेसेस को % द्वारा दर्शाया गया था। 'शुरू करना' टेक्स्ट लिखें ('('हेलो% वर्ल्ड')'); 'समाप्त'

अल्गोल 68
ALGOL 68 कोड आमतौर पर लोअरकेस में आरक्षित शब्दों के साथ प्रकाशित किया गया था, लेकिन बोल्ड या रेखांकित किया गया। शुरू करना प्रिंटफ ($ जीएल $, हैलो, दुनिया!)) समाप्त अल्गोल 68 रिपोर्ट की भाषा में इनपुट/आउटपुट सुविधाओं को सामूहिक रूप से ट्रांसपुट कहा जाता था।

ALGOL विशेष वर्णों की समयरेखा
ALGOL की कल्पना ऐसे समय में की गई थी जब चरित्र सेट विविध थे और तेजी से विकसित हो रहे थे; इसके अलावा, ALGOLs को परिभाषित किया गया था ताकि केवल अपरकेस अक्षरों की आवश्यकता हो।

1960: IFIP - Algol 60 भाषा और रिपोर्ट में कई गणितीय प्रतीक शामिल थे जो आधुनिक कंप्यूटर और ऑपरेटिंग सिस्टम पर उपलब्ध हैं, लेकिन दुर्भाग्य से, उस समय अधिकांश कंप्यूटिंग सिस्टम पर असमर्थित थे। उदाहरण के लिए: ×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣ और ⏨।

1961 सितंबर: ASCII - ASCII वर्ण सेट, तब विकास के प्रारंभिक चरण में, ALGOL के बूलियन डेटा प्रकार ऑपरेटरों ALGOL 68#Dyadic ऑपरेटरों को संबद्ध प्राथमिकताओं के साथ समर्थन करने के लिए इसमें \ (बैक स्लैश) वर्ण जोड़ा गया था|/\ और ALGOL 68#डायडिक ऑपरेटर संबंधित प्राथमिकताओं के साथ|\/. 1962: एल्कोर - इस कैरेक्टर सेट में असामान्य ᛭ शामिल था रूनिक क्रॉस गुणन के लिए वर्ण और ⏨ दशमलव घातांक चिह्न फ़्लोटिंग पॉइंट नोटेशन के लिए। 1964: GOST - 1964 के सोवियत मानक GOST 10859 ने ALGOL में 4-बिट, 5-बिट, 6-बिट और 7-बिट वर्णों की एन्कोडिंग की अनुमति दी। 1968: अल्गोल 68 रिपोर्ट - मौजूदा ALGOL वर्णों का उपयोग किया गया, और आगे अपनाया गया →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥, और ¢ वर्ण जो IBM 2741 कीबोर्ड पर IBM Selectric के साथ पाए जा सकते हैं टाइपराइटर (या गोल्फ बॉल) प्रिंटर (कंप्यूटिंग) # टाइपराइटर-व्युत्पन्न प्रिंटर डाला गया (जैसे एपीएल (प्रोग्रामिंग भाषा) # हार्डवेयर)। ये 1960 के दशक के मध्य में उपलब्ध हुए जब ALGOL 68 का मसौदा तैयार किया जा रहा था। रिपोर्ट का रूसी, जर्मन, फ्रेंच और बल्गेरियाई में अनुवाद किया गया था, और बड़े वर्ण सेट वाली भाषाओं में प्रोग्रामिंग की अनुमति दी गई थी, उदाहरण के लिए, सोवियत BESM-4 के सिरिलिक वर्णमाला। ALGOL के सभी अक्षर भी यूनिकोड मानक का हिस्सा हैं और उनमें से अधिकांश कई लोकप्रिय फोंट में उपलब्ध हैं।

2009 अक्टूबर: यूनिकोड -  फ्लोटिंग पॉइंट नोटेशन के लिए ई> (दशमलव प्रतिपादक प्रतीक) को यूनिकोड 5.2 में ऐतिहासिक बुरान कार्यक्रम ALGOL सॉफ्टवेयर के साथ पिछड़े संगतता के लिए जोड़ा गया था।

अग्रिम पठन

 * Brian Randell and L. J. Russell, ALGOL 60 Implementation: The Translation and Use of ALGOL 60 Programs on a Computer. Academic Press, 1964. The design of the Whetstone Compiler. One of the early published descriptions of implementing a compiler. See the related papers: Whetstone Algol Revisited, and The Whetstone KDF9 Algol Translator by Brian Randell
 * Revised Report on the Algorithmic Language Algol 60 by Peter Naur, et al. ALGOL definition
 * "The European Side of the Last Phase of the Development of ALGOL 60" by Peter Naur
 * Revised Report on the Algorithmic Language Algol 60 by Peter Naur, et al. ALGOL definition
 * "The European Side of the Last Phase of the Development of ALGOL 60" by Peter Naur
 * "The European Side of the Last Phase of the Development of ALGOL 60" by Peter Naur

बाहरी संबंध

 * History of ALGOL at the Computer History Museum
 * Web enabled ALGOL-F compiler for small experiments
 * An online ALGOL compiler