क्या प्रत्येक भाषा C भाषा में लिखी गई है?
एक भाषा अमूर्त गणितीय नियमों और प्रतिबंधों का एक सेट है ("अगर मैं यह लिखता हूं , तो ऐसा होता है")। यह वास्तव में कुछ भी नहीं लिखा है।
यह निर्दिष्ट किया जाता है, आमतौर पर अंग्रेजी के एक औपचारिक उपसमुच्चय, गणितीय संकेतन और शायद कुछ विशेष विनिर्देश भाषा के मिश्रण में। वाक्यविन्यास अक्सर EBNF या ABNF के एक प्रकार में निर्दिष्ट किया जाता है ।
उदाहरण के लिए, यहाँ for
ISO रूबी भाषा विशिष्टता से अभिव्यक्ति के विनिर्देश दिए गए हैं:
.311.5.2.3.4 for
अभिव्यक्ति
वाक्य - विन्यास
- for- अभिव्यक्ति → for for-variable [यहाँ कोई लाइन-टर्मिनेटर नहीं है] in अभिव्यक्ति do-clause end
- for-variable → बाएं-हाथ-साइड
|
एकाधिक-बाएँ-हाथ-साइड
शब्दार्थ
एक अभिव्यक्ति का मूल्यांकन इस प्रकार किया जाता है:
- अभिव्यक्ति का मूल्यांकन करें । यदि अभिव्यक्ति का मूल्यांकन ब्रेक-एक्सप्रेशन , नेक्स्ट-एक्सप्रेशन या रिडो-एक्सप्रेशन द्वारा समाप्त किया जाता है , तो व्यवहार अनिर्दिष्ट होता है। अन्यथा,
O
परिणामी मूल्य होने दें ।
चलो E
होना प्राथमिक-विधि-मंगलाचरण फार्म के प्राथमिक अभिव्यक्ति [कोई लाइन टर्मिनेटर यहाँ] .each do | ब्लॉक पैरामीटर-सूची | ब्लॉक शरीर end है, जहां का मूल्य प्राथमिक अभिव्यक्ति है O
, ब्लॉक पैरामीटर सूची है तक- चर , ब्लॉक-शरीर है यौगिक बयान का do-खंड ।
मूल्यांकन करना E
; हालाँकि, यदि कोई ब्लॉक जिसका ब्लॉक-बॉडी है, तो इस मूल्यांकन के दौरान फॉर-एक्सप्रेशन के डू-क्लॉज का कंपाउंड-स्टेटमेंट कहा जाता है, स्टेप c को छोड़कर the11.3.3 में स्टेप्स) और स्टेप e) 4) करेगा इस कॉल के मूल्यांकन के लिए लिया जाएगा।
के मान के लिए अभिव्यक्ति मंगलाचरण के परिणामस्वरूप मूल्य है।
यहाँ Scala के प्रकार अनुरूपता नियमों से एक अलग उदाहरण दिया गया है:
बहुरूपी प्रकार [ 1 ए : एल 1 <: यू 1 ,…, ए एन >: एल एन <: यू एन ] टी बहुरूपी प्रकार के अनुरूप है [a1>: L: 1 <: U ic 1 ,…, a n >: L < n <: U: n ] T assum यदि, L ′ 1 <: a 1 <: U: 1 , ..., L ′ n <: a n : n <: U′n किसी के पास T </ T है: ' और एल मैं <: एल' मैं और यू ' मैं<: I i for i ∈ {1,…, n} ।
क्या सी भाषा माँ / सभी भाषाओं की जनक है?
नहीं ऐसा नहीं है। C बहुत युवा है। बहुत सारी पुरानी भाषाएं हैं। चूंकि समय यात्रा शारीरिक रूप से असंभव है, इसलिए सी के लिए उन पुरानी भाषाओं पर जो भी प्रभाव पड़ा है, उसके लिए बस असंभव है।
- प्लांकालुक (1943)
- स्पीडकोडिंग (1953)
- फोरट्रान (1954)
- आईपीएल (1956)
- लिस्प (1958)
- अल्गोल (1958)
- COBOL (1959)
- JOVIAL (1960)
- एपीएल (1962)
- SIMULA (1962)
- SNOBOL (1962)
- CPL (1963)
- बेसिक (1964)
- पीएल / I (1964)
- आरपीजी (1964)
- BCPL (1966)
- ISWIM (1966)
- MUMPS (1967)
- फोर्थ (1968)
- लोगो (1968)
- REFAL (1968)
- बी (1969)
- BLISS (1970)
- पास्कल (1971)
- केआरएल (1971)
- स्मॉलटॉक (1972)
C के आविष्कार से पहले ही वे सभी मौजूद थे। और कई अन्य लोगों में सी का कोई प्रभाव नहीं है, इसके अस्तित्व में होने के बाद भी। भाषाओं का PASCAL-परिवार (ALGOL-58, ALGOL-60, ALGOL-X, ALGOL-W, PASCAL, Modula-2, Oberon, Oberon-2, Active Oberon, Component Pascal) एक पूरी तरह से अलग वंश है। संपूर्ण लिस्प परिवार (LISP, फ्रांज लिस्प, इंटरलाइप, MacLisp, स्कीम, फ्लेवर, LOOPS, कॉमनवेलॉप्स, डायलन, कॉमन लिस्प, आर्क, क्लोजर, रैकेट, आदि) भी असंबंधित है। कार्यात्मक भाषाएं (ISWIM, KRL, मिरांडा, ML, SML, CAML, OCaml, F #, Haskell, Gofer, Clean) और पूरे भरोसेमंद रूप से टाइप किए गए परिवार (Agda, Coq, GURU, Idris) C से यथासंभव दूर हैं। यही बात स्मालटाक परिवार (स्मालटाक, सेल्फ, न्यूजक, अस, कोरज), लॉजिक प्रोग्रामिंग परिवार (प्लानर, प्रोलॉग, मर्करी), एसक्यूएल और कई अन्य लोगों के लिए भी लागू होती है।
प्रत्येक अवधारणा (ओओपी आदि) सभी सी भाषा में लागू है?
ओओ अवधारणाओं के साथ पहली भाषाएं सिमूला (1960) और स्मॉलटॉक (1972) थीं, लेकिन ऑब्जेक्ट-ओरिएंटेड सिस्टम 1953 तक (बिना उन्हें कॉल किए) बनाया गया था। फिर से, C के अस्तित्व में आने से बहुत पहले, इसलिए OO का C से कोई संबंध नहीं हो सकता है।