आईस्विम

From Vigyanwiki
ISWIM
ParadigmImperative, functional
द्वारा डिज़ाइन किया गयाPeter Landin
पहली प्रस्तुति1966; 58 years ago (1966)
Influenced by
ALGOL 60, Lisp
Influenced
SASL, Miranda, ML, Haskell, Clean, Lucid

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

डिज़ाइन

ISWIM कार्यात्मक कोर के साथ अनिवार्य प्रोग्रामिंग भाषा है, जिसमें लैम्ब्डा कैलकुलस की वाक्यात्मक शर्करा शामिल है जिसमें परिवर्तनशील चर और असाइनमेंट और शक्तिशाली नियंत्रण तंत्र जोड़ा जाता है: जे ऑपरेटर। लैम्ब्डा कैलकुलस पर आधारित होने के कारण, ISWIM में उच्च-क्रम के कार्य और शाब्दिक रूप से स्कोप वाले चर हैं।

ISWIM के परिचालन शब्दार्थ को लैंडिन की SECD मशीन का उपयोग करके परिभाषित किया गया है और कॉल-बाय-वैल्यू का उपयोग किया जाता है, जो कि उत्सुक मूल्यांकन है।[2] ISWIM का लक्ष्य गणितीय संकेतन की तरह दिखना था, इसलिए लैंडिन ने बयानों के बीच ALGOL के अर्धविराम को छोड़ दिया और begin ... end ब्लॉक किया और उन्हें इंडेंटेशन शैली के आधार पर ऑफ-साइड नियम और स्कोपिंग के साथ बदल दिया।

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

एक उल्लेखनीय अर्थ संबंधी विशेषता नए डेटा प्रकारों को उत्पादों के (संभवतः पुनरावर्ती) योग के रूप में परिभाषित करने की क्षमता थी। यह कुछ हद तक क्रियात्मक प्राकृतिक भाषा शैली विवरण का उपयोग करके किया गया था, लेकिन संकेतन के अलावा यह आधुनिक कार्यात्मक भाषाओं में पाए जाने वाले बीजीय डेटा प्रकारों के बिल्कुल बराबर है। ISWIM वेरिएबल्स में स्पष्ट प्रकार की घोषणाएं नहीं थीं और ऐसा लगता है (हालांकि 1966 के पेपर में स्पष्ट रूप से नहीं कहा गया है) कि लैंडिन का इरादा भाषा को गतिशील रूप से टाइप करने का था, जैसे कि LISP और ALGOL के विपरीत; लेकिन यह भी संभव है कि उसका इरादा किसी प्रकार का अनुमान विकसित करने का हो।

कार्यान्वयन और व्युत्पन्न

ISWIM के किसी प्रत्यक्ष कार्यान्वयन का प्रयास नहीं किया गया लेकिन आर्ट इवान की भाषा PAL (प्रोग्रामिंग भाषा),[3] और जॉन सी. रेनॉल्ड्स के भाषा विचार,[4] शक्तिशाली ट्रांसफ़र-ऑफ़-कंट्रोल ऑपरेशन सहित, लैंडिन की अधिकांश अवधारणाओं पर कब्जा कर लिया। ये दोनों सिस्टम टाइप करें थे. रॉबिन मिलनर की एमएल (प्रोग्रामिंग भाषा) को आई के समकक्ष माना जा सकता हैSWIM जे ऑपरेटर के बिना और प्रकार अनुमान के साथ।

ISWIM से वंश की और पंक्ति विशुद्ध रूप से कार्यात्मक भाषा को छोड़कर अनिवार्य सुविधाओं (असाइनमेंट और जे ऑपरेटर) को हटाना है।[5] इसके बाद आलसी मूल्यांकन पर स्विच करना संभव हो जाता है। इस पथ ने प्रोग्रामिंग भाषाओं एसएएसएल (प्रोग्रामिंग भाषा), केंट पुनरावर्ती कैलकुलेटर (केआरसी), होप (प्रोग्रामिंग भाषा), मिरांडा (प्रोग्रामिंग भाषा), हास्केल (प्रोग्रामिंग भाषा), और क्लीन (प्रोग्रामिंग भाषा) का नेतृत्व किया।

संदर्भ

  1. Landin, P. J. (March 1966). "The Next 700 Programming Languages" (PDF). Communications of the ACM. Association for Computing Machinery. 9 (3): 157–165. doi:10.1145/365230.365257. S2CID 13409665.
  2. Plotkin, Gordon (1975). कॉल-बाय-नाम, कॉल-बाय वैल्यू और लैम्ब्डा कैलकुलस (PDF) (Report).
  3. Evans, Art (1968). "PAL: a language designed for teaching programming linguistics". Proceedings ACM National Conference. ACM National Conference. Association for Computing Machinery.
  4. Reynolds, John C. (September 1969). GEDANKEN: a simple typeless language which permits functional data structures and co-routines (Report). Argonne National Laboratory.
  5. Ivanović, Mirjana; Budimac, Zoran (April 1993). "योजना के माध्यम से ISWIM जैसी भाषा की परिभाषा". ACM SIGPLAN Notices. 28 (4): 29–38. doi:10.1145/152739.152743. S2CID 14379260.