बीसीपीएल

बीसीपीएल (बुनियादी संयुक्त प्रोग्रामिंग भाषा) एक प्रक्रियात्मक प्रोग्रामिंग, अनिवार्य प्रोग्रामिंग और संरचित प्रोग्रामिंग भाषा है। मूल रूप से अन्य भाषाओं के लिए संकलक लिखने का इरादा है, बीसीपीएल अब साधारण उपयोग में नहीं है। यद्दपि, इसका प्रभाव अभी भी अनुभूत किया जाता है क्योंकि बीसीपीएल का एक उतारा गया और वाक्य रचित रूप से परिवर्तित संस्करण, जिसे बी (प्रोग्रामिंग भाषा) कहा जाता है, यह वह भाषा थी जिस पर सी(प्रोग्रामिंग भाषा) आधारित थी। बीसीपीएल ने कोड ब्लाकों को सीमित करने के लिए [ बी (प्रोग्रामिंग भाषा)] का उपयोग करने सहित कई आधुनिक प्रोग्रामिंग भाषाओं की कई विशेषताएं प्रस्तुत कीं हैं। बीसीपीएल को पहली बार 1967 में कैम्ब्रिज विश्वविद्यालय के मार्टिन रिचर्ड्स (कंप्यूटर वैज्ञानिक) द्वारा लागू किया गया था।

डिजाइन
बीसीपीएल को डिजाइन किया गया था ताकि इसके लिए छोटे और सरल संकलक लिखे जा सकें; प्रतिष्ठित रूप से कुछ संकलक 16 किलोबाइट में चलाए जा सकते हैं। इसके अलावा, बीसीपीएल में लिखा गया मूल संकलक आसानी से पोर्टेबल था। इस प्रकार बीसीपीएल बूटस्ट्रैपिंग (संकलक) प्रणाली के लिए एक लोकप्रिय विकल्प था। कंपाइलर की सुवाह्यता का एक प्रमुख कारण इसकी संरचना में निहित है। इसे दो भागों में विभाजित किया गया था: फ्रंट एंड ने स्रोत को पार्स किया और एक मध्यवर्ती भाषा ओ-कोड उत्पन्न किया। बैक एंड ने ओ-कोड लिया और लक्ष्य मशीन के लिए मशीन कोड में इसका अनुवाद किया। केवल $1/undefined$ एक नई मशीन का समर्थन करने के लिए संकलक के कोड को फिर से लिखने की आवश्यकता होती है, एक कार्य जो आमतौर पर 2 और 5 व्यक्ति-महीने के बीच होता है। व्यक्ति-महीने। यह दृष्टिकोण बाद में आम चलन बन गया (जैसे पास्कल (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा))।

केवल एक डेटा प्रकार होने में भाषा असामान्य है: एक शब्द (कंप्यूटर आर्किटेक्चर), बिट्स की एक निश्चित संख्या, जिसे आमतौर पर आर्किटेक्चर के मशीन शब्द के साथ संरेखित करने के लिए चुना जाता है और किसी वैध भंडारण पते का प्रतिनिधित्व करने के लिए पर्याप्त क्षमता होती है। उस समय की कई मशीनों के लिए, यह डेटा प्रकार 16-बिट शब्द था। यह विकल्प बाद में एक महत्वपूर्ण समस्या साबित हुआ जब बीसीपीएल का उपयोग मशीनों पर किया गया था जिसमें सबसे छोटी पता योग्य वस्तु एक शब्द नहीं बल्कि एक बाइट थी या 32-बिट या 64-बिट जैसे बड़े शब्द आकार वाली मशीनों पर। मूल्यों को संसाधित करने के लिए उपयोग किए जाने वाले ऑपरेटरों द्वारा किसी भी मूल्य की व्याख्या निर्धारित की गई थी। (उदाहरण के लिए,  दो मानों को एक साथ जोड़ा, उन्हें पूर्णांक मानते हुए;   एक मूल्य के माध्यम से अप्रत्यक्ष रूप से, प्रभावी रूप से इसे एक संकेतक के रूप में माना जाता है।) इसके काम करने के लिए, कार्यान्वयन ने कोई प्रकार की जाँच नहीं की।

बीसीपीएल के वर्ड ओरिएंटेशन और बाइट एड्रेसिंग | बाइट-ओरिएंटेड हार्डवेयर के बीच बेमेल को कई तरीकों से संबोधित किया गया था। एक बाइट स्ट्रिंग्स में शब्दों को पैक करने और अनपैक करने के लिए मानक लाइब्रेरी रूटीन प्रदान करना था। बाद में, दो भाषा सुविधाओं को जोड़ा गया: बिट-फ़ील्ड चयन ऑपरेटर और इंफिक्स बाइट इंडिकेशन ऑपरेटर (द्वारा चिह्नित) ). बीसीपीएल अलग-अलग संकलन इकाइयों में फैले बाइंडिंग को एक अनोखे तरीके से संभालता है। कोई उपयोगकर्ता-घोषित वैश्विक चर नहीं हैं; इसके बजाय, फोरट्रान में रिक्त आम के समान एक वैश्विक वेक्टर है। विभिन्न संकलन इकाइयों के बीच साझा किए गए सभी डेटा में वैश्विक वेक्टर में पूर्व-व्यवस्थित स्थान पर संग्रहीत वेक्टर के लिए स्केलर और पॉइंटर्स शामिल हैं। इस प्रकार, हेडर फाइलें (जीईटी निर्देश का उपयोग करते हुए संकलन के दौरान शामिल फाइलें) संकलन इकाइयों के बीच वैश्विक डेटा को सिंक्रनाइज़ करने का प्राथमिक साधन बन जाती हैं, जिसमें वैश्विक निर्देश होते हैं जो प्रतीकात्मक नामों की सूची प्रस्तुत करते हैं, प्रत्येक को एक संख्या के साथ जोड़ा जाता है जो नाम को संबंधित संख्यात्मक रूप से जोड़ता है वैश्विक वेक्टर में संबोधित शब्द। साथ ही चर, वैश्विक वेक्टर में बाहरी प्रक्रियाओं के लिए बाइंडिंग शामिल हैं। यह संकलन इकाइयों की गतिशील लोडिंग को प्राप्त करना बहुत आसान बनाता है। अंतर्निहित कार्यान्वयन के लिंक लोडर पर भरोसा करने के बजाय प्रभावी रूप से, बीसीपीएल प्रोग्रामर को लिंकिंग प्रक्रिया का नियंत्रण देता है। वैश्विक वेक्टर ने मानक लाइब्रेरी रूटीन को बदलना या बढ़ाना भी बहुत आसान बना दिया है। एक प्रोग्राम पॉइंटर को वैश्विक वेक्टर से मूल दिनचर्या में सहेज सकता है और इसे पॉइंटर के साथ वैकल्पिक संस्करण में बदल सकता है। विकल्प मूल को इसके प्रसंस्करण के हिस्से के रूप में कह सकता है। यह एक त्वरित तदर्थ डिबगिंग सहायता के रूप में इस्तेमाल किया जा सकता है। बीसीपीएल पहली ब्रेस प्रोग्रामिंग भाषा थी और ब्रेसिज़ सिंटैक्टिकल परिवर्तनों से बच गए और प्रोग्राम सोर्स कोड स्टेटमेंट्स को निरूपित करने का एक सामान्य साधन बन गए। व्यवहार में, दिन के सीमित कीबोर्ड पर, स्रोत प्रोग्राम अक्सर अनुक्रमों का उपयोग करते थे  और   प्रतीकों के स्थान पर   और. सिंगल-लाइन  बीसीपीएल की टिप्पणी (कंप्यूटर प्रोग्रामिंग), जो सी (प्रोग्रामिंग भाषा) द्वारा नहीं अपनाई गई थी, सी ++ और बाद में सी99 में फिर से प्रकट हुई।

पुस्तक बीसीपीएल: द लैंग्वेज एंड इट्स कंपाइलर बीसीपीएल के दर्शन का वर्णन इस प्रकार करती है: "The philosophy of BCPL is not one of the tyrant who thinks he knows best and lays down the law on what is and what is not allowed; rather, BCPL acts more as a servant offering his services to the best of his ability without complaint, even when confronted with apparent nonsense. The programmer is always assumed to know what he is doing and is not hemmed in by petty restrictions."

इतिहास
बीसीपीएल को पहली बार 1967 में कैम्ब्रिज विश्वविद्यालय के मार्टिन रिचर्ड्स (कंप्यूटर वैज्ञानिक) द्वारा लागू किया गया था। बीसीपीएल अपने पूर्ववर्ती, कैम्ब्रिज प्रोग्रामिंग लैंग्वेज, जिसे बाद में संयुक्त प्रोग्रामिंग भाषा (सीपीएल) का नाम दिया गया था, के साथ कठिनाइयों का जवाब था, जिसे 1960 के दशक की शुरुआत में डिजाइन किया गया था। रिचर्ड्स ने पूर्ण भाषा की उन विशेषताओं को हटाकर बीसीपीएल बनाया जो संकलन को कठिन बनाते हैं। संगत समय-साझाकरण प्रणाली के तहत आईबीएम 7094 के लिए पहला कंपाइलर कार्यान्वयन, तब लिखा गया था जब रिचर्ड्स 1967 के वसंत में मैसाचुसेट्स की तकनीकी संस्था में प्रोजेक्ट मैक का दौरा कर रहे थे। भाषा को पहली बार 1969 के स्प्रिंग जॉइंट को प्रस्तुत एक पेपर में वर्णित किया गया था। कंप्यूटर सम्मेलन। बीसीपीएल मूल रूप से बूटस्ट्रैप कैम्ब्रिज प्रोग्रामिंग लैंग्वेज के लिए खड़ा होने की अफवाह है, लेकिन बीसीपीएल में विकास बंद होने के बाद से सीपीएल कभी नहीं बनाया गया था, और बाद में बीसीपीएल पुस्तक के लिए संक्षिप्त नाम की पुनर्व्याख्या की गई थी। बीसीपीएल वह भाषा है जिसमें मूल हैलो वर्ल्ड प्रोग्राम| हैलो वर्ल्ड! कार्यक्रम लिखा गया था। पहला MUD ​​भी बीसीपीएल (MUD1) में लिखा गया था।

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

रिचर्ड्स के टाइटन (1963 कंप्यूटर) संकलक के ओ-कोड के एक कागज पट्टीका के साथ शुरू करके, 1969 में बूटस्ट्रैप किए गए एक प्रारंभिक संकलक ने ICT 1900 श्रृंखला को लक्षित किया। दो मशीनों में अलग-अलग शब्द-लंबाई (48 बनाम 24 बिट्स), अलग-अलग वर्ण संकेतीकरण और अलग-अलग पैक तंत्री प्रस्तुतियां थीं- और सफल बूटस्ट्रैपिंग ने विधि की व्यावहारिकता में विश्वास बढ़ाया।

1970 के अंत तक, जिई600 श्रृंखला, आईबिएम 360, पिडिपी-10, टिएक्स-2, सीडिसी 6400 युनिवेक 1108, पीडिपी-9, केडिएफ 9 और एटलस 2 के लिए कार्यान्वयन उपस्थित थे। 1974 में बीबीएन में बीसीपीएल की एक बोली लागू की गई थी। इंटरमीडिएट ओ-कोड का उपयोग किए बीबीएन टेक्नोलॉजीज प्रारंभिक कार्यान्वयन बीबीएन के टेनेक्स (ऑपरेटिंग प्रणाली) पीडिपी-10s पर मेजबानी कि गयी पार संकलक थी, और ARPANET में प्रयुक्त दूसरी पीढ़ी के अंतराफलक संदेश प्रक्रमक के बिबिएन के कार्यान्वयन में उपयोग किए गए पीडिपी-11s को सीधे लक्षित करता था।

1980 के दशक के मध्य में बीबीसी माइक्रो के लिए रिचर्ड्स कंप्यूटर उत्पादों द्वारा निर्मित एक संस्करण भी था, जो मार्टिन रिचर्ड्स के भाई जॉन रिचर्ड्स द्वारा प्रारंभ की गई कंपनी थी। बीबीसी डोमेसडे परियोजना ने भाषा का उपयोग किया। एमस्टर्ड सीपिसी और एमस्टर्ड पिसीड्बल्यू कंप्यूटर के लिए बीसीपीएल के संस्करण भी 1986 में यूके सॉफ्टवेयर हाउस अर्नोर लिमिटेड द्वारा जारी किए गए थे। मैकबीसीपीएल को 1985 में केंसिंग्टन, इंग्लैंड के टोप एक्सप्रेस द्वारा एप्पल मॅकिन्तोश के लिए जारी किया गया था।

बीसीपीएल के रचना और दर्शन दोनों ने बी (प्रोग्रामिंग भाषा) को दृढ़ता से प्रभावित किया, जिसने बदले में सी (प्रोग्रामिंग भाषा) को प्रभावित किया। उस समय क्रमादेशकों ने इस बात पर बहस की कि क्या सी के अंतिम उत्तराधिकारी को डी कहा जाएगा, वर्णमाला में अगला अक्षर, या पि, मूल भाषा के नाम का अगला अक्षर होगा। सी के उत्तराधिकारी के रूप में स्वीकृत भाषा सी ++ (के साथ  सी के वेतन वृद्धि प्रचालक होने के नाते), यद्दपि इस बीच, एक डी (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा भी उपस्थित है।

1979 में, कम से कम 25 वास्तुकला के लिए बीसीपीएल का कार्यान्वयन उपस्थित था; गैर-यूनिक्स प्रणालियों पर सी के लोकप्रिय होते ही भाषा धीरे-धीरे लोकप्रिय हो गई।

मार्टिन रिचर्ड्स अपनी वेबसाइट पर बीसीपीएल का एक आधुनिक संस्करण बनाए रखते हैं, जिसे आखिरी बार 2018 में अघतन किया गया था। इसे लिनक्स, फ्रीबीएसडी और मैक ओएस एक्स सहित विभिन्न प्रणालियों पर चलाने के लिए सेट किया जा सकता है। नवीनतम वितरण में सुचित्रित और ध्वनि पुस्तकालय और एक व्यापक नियमावली सम्मिलित हैं। वह इसमें योजनाएं करना जारी रखता है, जिसमें संगीतमय स्वाचालित अंक निम्नलिखित पर अपने शोध के लिए भी सम्मिलित है।

बीसीपीएल के लिए एक सामान्य अनौपचारिक मीडिया प्रकार है.

उदाहरण
यदि ये प्रोग्राम रिचर्ड्स के सिन्टसिस के वर्तमान संस्करण (दिसंबर 2018) का उपयोग करके चलाए जा रहे हैं, तो त्रुटियों से बचने के लिए LIBHDR, START और WRITEF को लोअर केस में बदला जाना चाहिए।

प्रिंट भाज्य:



LIBHDR प्राप्त करें

एलईटी स्टार्ट = वैलोफ $

I के लिए = 1 से 5 DO

WRITEF(%N! =%I4*N, I, FACT(I))

परिणाम 0

$)

AND FACT(N) = N = 0 -> 1, N * FACT(N - 1)



आठ रानियों की पहेली के हल गिनें:



LIBHDR प्राप्त करें

वैश्विक $(

गिनती: 200

सब: 201

$)

आइए कोशिश करें (एलडी, पंक्ति, आरडी) बीई

टेस्ट पंक्ति = सभी

काउंट := काउंट + 1

अन्य $(

एलईटी पॉस = सभी और ~ (एलडी | पंक्ति | आरडी)

पोस तक = 0 DO $(

एलईटी पी = पोस और -पॉस

पोस := पोस - प

कोशिश (एलडी + पी << 1, पंक्ति + पी, आरडी + पी >> 1)

$)

$)

एलईटी स्टार्ट = वैलोफ $ (

सब := 1

I के लिए = 1 से 12 DO $(

काउंट := 0

कोशिश (0, 0, 0)

WRITEF(%I2-क्वींस समस्या में%I5 समाधान*N, I, काउंट है)

सब := 2 * सब + 1

$)

परिणाम 0

$)



अग्रिम पठन

 * Martin Richards, The बीसीपीएल Reference Manual (Memorandum M-352, Project MAC, Cambridge, MA, USA, July, 1967)
 * Martin Richards, बीसीपीएल - a tool for compiler writing and systems programming (Proceedings of the Spring Joint Computer Conference, Vol 34, pp 557–566, 1969)
 * Martin Richards, Arthur Evans, Robert F. Mabee, The बीसीपीएल Reference Manual (MAC TR-141, Project MAC, Cambridge, MA, USA, 1974)
 * Martin Richards, Colin Whitby-Strevens, बीसीपीएल, the language and its compiler (Cambridge University Press, 1980) ISBN 0-521-28681-6

बाहरी संबंध

 * Martin Richards' बीसीपीएल distribution
 * Martin Richards' बीसीपीएल Reference Manual, 1967 by Dennis M. Ritchie
 * बीसीपीएल entry in the Jargon File
 * Nordier & Associates' x86 port
 * Arnorबीसीपीएल manual
 * How बीसीपीएल evolved from CPL, Martin Richards
 * Ritchie's The Development of the C Language has commentary about बीसीपीएल's influence on C
 * The बीसीपीएल Cintsys and Cintpos User Guide