उन दिनों में, डेवलपर्स धातु के बहुत करीब काम कर रहे थे। सी अनिवार्य रूप से असेंबली के लिए एक उच्च स्तर का प्रतिस्थापन था, जो लगभग हार्डवेयर के रूप में आप प्राप्त कर सकते हैं, इसलिए यह स्वाभाविक था कि आपको कोडिंग समस्याओं को हल करने में कुशल होने की आवश्यकता थी। हालांकि, पॉइंटर्स तेज उपकरण हैं, जो लापरवाही से उपयोग किए जाने पर बहुत नुकसान पहुंचा सकते हैं। इसके अलावा, पॉइंटर्स का प्रत्यक्ष उपयोग कई सुरक्षा समस्याओं की संभावना को खोलता है, जो तब एक मुद्दा नहीं थे (1970 में, इंटरनेट में कुछ विश्वविद्यालयों के लगभग दर्जन भर मशीनें शामिल थीं, और इसे इस तरह भी नहीं बुलाया गया था। ...), लेकिन तब से और अधिक महत्वपूर्ण हो गया। इसलिए आजकल उच्च स्तर की भाषाओं को जानबूझकर कच्चे मेमोरी पॉइंट से बचने के लिए डिज़ाइन किया गया है।
यह कहना कि "VB.Net या जावा में की गई उन्नत चीजें C में संभव नहीं हैं", देखने का एक बहुत ही सीमित बिंदु दिखाता है, जिसे स्पष्ट कहा जाता है :-)
सबसे पहले, इन सभी भाषाओं (यहां तक कि विधानसभा) पूरी तरह से ट्यूरिंग हैं इसलिए सिद्धांत रूप में जो कुछ भी एक भाषा में संभव है, सभी में संभव है। ज़रा सोचिए कि क्या होता है जब VB.Net या जावा कोड का एक टुकड़ा संकलित और निष्पादित किया जाता है: आखिरकार, इसका अनुवाद (या मैप किया गया) मशीन कोड में किया जाता है, क्योंकि यही एकमात्र चीज़ है जिसे मशीन समझती है। सी और सी ++ जैसी संकलित भाषाओं में, आप वास्तव में मूल उच्च स्तर के स्रोत कोड के बराबर मशीन कोड का पूरा शरीर प्राप्त कर सकते हैं, एक या अधिक निष्पादन योग्य फ़ाइलों / पुस्तकालयों के रूप में। वीएम आधारित भाषाओं में, आपके प्रोग्राम के पूरे समकक्ष मशीन कोड प्रतिनिधित्व को प्राप्त करना अधिक कठिन (और संभव भी नहीं हो सकता है), लेकिन फिर भी अंततः रनटाइम सिस्टम और जेआईटी की गहरी भर्ती के भीतर कहीं न कहीं है।
अब, निश्चित रूप से, यह एक पूरी तरह से अलग सवाल है कि क्या किसी विशिष्ट भाषा में कुछ समाधान संभव है। कोई भी समझदार डेवलपर असेंबली में एक वेब ऐप लिखना शुरू नहीं करेगा :-) लेकिन यह ध्यान रखना उपयोगी है कि अधिकांश या उच्च स्तर की सभी भाषाएँ रनटाइम और क्लास लाइब्रेरी कोड की एक बड़ी मात्रा के ऊपर बनाई गई हैं, एक बड़ा हिस्सा जिसे निचले स्तर की भाषा में लागू किया जाता है, आमतौर पर सी में।
तो सवाल करने के लिए,
क्या आपको लगता है कि युवा लोगों के लिए संकेत पर ज्ञान [...] महत्वपूर्ण है?
संकेत के पीछे की अवधारणा अप्रत्यक्ष है । यह एक बहुत ही महत्वपूर्ण अवधारणा है और IMHO हर अच्छे प्रोग्रामर को इसे एक निश्चित स्तर पर समझ लेना चाहिए। भले ही कोई पूरी तरह से उच्च स्तरीय भाषाओं के साथ काम कर रहा हो, फिर भी अप्रत्यक्ष और संदर्भ महत्वपूर्ण हैं। यह समझने में असफल होने का अर्थ है कि बहुत शक्तिशाली उपकरणों की एक पूरी कक्षा का उपयोग करने में असमर्थ होना, लंबे समय में किसी की समस्या को सुलझाने की क्षमता को गंभीरता से सीमित करना।
तो मेरा जवाब है, यदि आप वास्तव में अच्छे प्रोग्रामर बनना चाहते हैं, तो आपको पॉइंटर्स को भी समझना चाहिए (साथ ही पुनरावृत्ति - यह नवोदित डेवलपर्स के लिए अन्य विशिष्ट ठोकर है)। आपको इसके साथ शुरू करने की आवश्यकता नहीं हो सकती है - मुझे नहीं लगता कि आजकल सी पहली भाषा के रूप में इष्टतम है। लेकिन कुछ बिंदु पर एक अप्रत्यक्ष रूप से परिचित होना चाहिए। इसके बिना, हम यह कभी नहीं समझ सकते हैं कि हम वास्तव में काम कर रहे उपकरणों, पुस्तकालयों और रूपरेखाओं का उपयोग कैसे कर रहे हैं। और एक शिल्पकार जो यह नहीं समझता है कि उसका उपकरण कैसे काम करता है, बहुत सीमित है। पर्याप्त रूप से, किसी को उच्च स्तरीय प्रोग्रामिंग भाषाओं में भी इसकी समझ मिल सकती है। एक अच्छा लिटमस टेस्ट सही ढंग से एक दोहरी लिंक की गई सूची को लागू कर रहा है - यदि आप इसे अपनी पसंदीदा भाषा में कर सकते हैं, तो आप दावा कर सकते हैं कि आप अप्रत्यक्ष रूप से अच्छी तरह से समझ सकते हैं।
लेकिन अगर किसी और चीज के लिए नहीं, तो हमें यह करना चाहिए कि पुराने के प्रोग्रामरों के लिए सम्मान सीखना चाहिए, जो उनके द्वारा की गई हास्यास्पद सरल साधनों का उपयोग करके अविश्वसनीय चीजों का निर्माण करने में कामयाब रहे (अब हमारे पास क्या है) की तुलना में। हम सभी दिग्गजों के कंधों पर खड़े हैं, और यह स्वीकार करने के लिए हमें अच्छा लगता है कि हम दिखावा करने के बजाय खुद ही दिग्गज हैं।