उच्च-स्तर बनाम निम्न-स्तर एक श्वेत-श्याम चीज़ नहीं है, बल्कि एक निरंतर स्तर है। शब्दों का उपयोग यह वर्णित करने के लिए किया जाता है कि एक प्रोग्रामिंग भाषा हार्डवेयर के कितने करीब है; उच्च स्तर, अधिक यह हार्डवेयर दूर सार।
सबसे निचला स्तर, स्पष्ट रूप से, बाइनरी मशीन कोड है - यह सटीक प्रतिनिधित्व है जो ओएस लोड करता है और सीपीयू को खिलाता है। असेंबली इसके ऊपर निर्मित अमूर्तता का पहला स्तर है: बाइनरी कोड के बजाय, कोई एमनेमोनिक्स, मानव-पठनीय प्रतीकात्मक कोड लिखता है जो बाइनरी मशीन निर्देशों का प्रतिनिधित्व करता है। यह वही है जो लोग UNIX से पहले सिस्टम प्रोग्रामिंग के लिए उपयोग करते थे।
C, एब्स्ट्रैक्शन चेन में अगला कदम है, सामान्य नियंत्रणों को फ्लो कंट्रोल कंस्ट्रक्शन और अमूर्त मशीन-विशिष्ट निर्देशों को प्लेटफ़ॉर्म-अज्ञेय सिंटैक्स में बंडल करता है, और यह अंतिम अमूर्त एक प्रमुख कारक था जिसने UNIX को क्रांतिकारी और अत्यधिक सफल बनाया, क्योंकि इसका अर्थ था कि किसी भी बड़े परिवर्तन के बिना किसी भी प्लेटफ़ॉर्म के लिए समान कोड संकलित किया जा सकता है।
C ++ अमूर्तता की एक और परत जोड़ता है: इसमें कक्षाएं (अमूर्त vtables और संदर्भ एक OOP सिंटैक्स में गुजरती हैं), new
और delete
(एकल निर्माण में मेमोरी एलोकेशन और वैरिएबल इनिशियलाइज़ेशन को बंडल करता है), कंपाइल-टाइम टाइप चेकिंग, टेम्प्लेट (टाइप-सेफ कंपाइल-टाइम) मेटाप्रोग्रामिंग), और संकलन-समय सिंटैक्स उपयुक्तताओं का एक गुच्छा जैसे नामस्थान, फ़ंक्शन और ऑपरेटर ओवरलोडिंग, आदि।
अजगर हार्डवेयर से एक और बड़ा कदम उठाता है। सी ++ अभी भी प्रोग्रामर को मेमोरी आवंटन पर पूर्ण नियंत्रण देता है, और रैम के प्रत्यक्ष हेरफेर के लिए अनुमति देता है; अजगर आपके लिए स्मृति प्रबंधन का ध्यान रखता है। इसके अतिरिक्त, अपने कोड को सभी-देशी मशीन निर्देशों पर संकलित करने के बजाय, इसे एक वर्चुअल मशीन के खिलाफ चलाता है; यह एक प्रदर्शन का दंड वहन करता है (जो कभी-कभी भारी हो सकता है, लेकिन आमतौर पर इसके बारे में चिंता करने के लिए कुछ नहीं होता है), लेकिन यह सी में ++ और मुश्किल से कठिन चीजों के लिए भी अनुमति देता है, और सी में कठोर रूप से कठोर, जैसे कि कार्यों और कक्षाओं में हेरफेर करना। समय, चलाने के समय में मनमानी वस्तुओं के नाम प्राप्त करना, रन टाइम में नाम से कक्षाओं को तत्काल करना, बंदर-पेटिंग, आदि।
इसलिए जब लोग भाषाओं को "उच्च स्तर" और "निम्न स्तर" वाले भागों में विभाजित करते हैं, तो वे कहीं न कहीं एक मनमानी रेखा खींचते हैं, और वह रेखा हमेशा एक समान नहीं होती है। 1970 में, लाइन असेंबली और सी के बीच थी (प्लेटफ़ॉर्म-विशिष्ट मशीन निर्देशों को दूर करना निर्णायक कारक रहा); 1987 में, यह C और C ++ के बीच कहीं हो सकता है; आज, यह C ++ और Java के बीच हो सकता है (निर्णायक कारक के रूप में स्वचालित मेमोरी प्रबंधन के साथ)।
लंबी कहानी छोटी: उच्च-स्तर-नेस एक स्लाइडिंग स्केल है, और आपके द्वारा उल्लिखित तीन भाषाओं के लिए यह C <C ++ <Python है।