1 पॉइंट द्वारा GN⁺ 2023-10-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • आम धारणा के विपरीत, यह लेख तर्क देता है कि C एक low-level language नहीं है
  • लेखक David Chisnall सुझाव देते हैं कि Meltdown और Spectre जैसी कमजोरियां उन processors की क्षमता के कारण हैं जो access checks को पार करके instructions execute करते हैं, और यह क्षमता C programmers को यह विश्वास दिलाने के लिए जोड़ी गई थी कि वे low-level language में programming कर रहे हैं.
  • Chisnall का तर्क है कि किसी भाषा का "metal के करीब" होना यह मांग करता है कि वह ऐसी abstract machine दे जिसे target platform द्वारा exposed abstractions पर आसानी से map किया जा सके, और उनका कहना है कि C में ऐसा नहीं होता.
  • लेखक सुझाव देते हैं कि Spectre और Meltdown vulnerabilities का मूल कारण यह है कि processor architects PDP-11 जैसी abstract machine को expose करने वाले तेज processors बनाना चाहते थे, जिससे C programmers यह मानते रह सकें कि उनकी language underlying hardware के करीब है.
  • Chisnall का दावा है कि C code को तेज चलाने के लिए जटिल compiler transformations और पर्याप्त रूप से smart compiler बनाने में हजारों person-years की जरूरत पड़ती है.
  • लेखक यह प्रस्ताव रखते हैं that low-level language की मुख्य विशेषता यह होनी चाहिए कि programmers आसानी से समझ सकें कि भाषा की abstract machine underlying physical machine पर कैसे map होती है, और उनका कहना है कि C में ऐसा नहीं है.
  • Chisnall निष्कर्ष निकालते हैं कि शायद C code को तेज बनाने की कोशिश बंद करने और इसकी जगह यह सोचने का समय है कि तेज processors पर programming model कैसा दिखना चाहिए. वे सुझाव देते हैं कि पूरी तरह speed के लिए designed processors शायद बड़ी संख्या में threads को support करेंगे, wide vector units रखेंगे, और कहीं अधिक सरल memory model होगा.

1 टिप्पणियां

 
GN⁺ 2023-10-17
Hacker News राय
  • लेख का यह दावा कि manual memory management और allocator के लिए explicit calls होने की वजह से C एक low-level language नहीं है।
  • कुछ टिप्पणीकारों का कहना है कि जो लोग C को समझते हैं और पेशेवर ढंग से इस्तेमाल करते हैं, उनके लिए C वास्तव में एक low-level language है।
  • लेखक के इस दावे पर कि CPU instruction set को CPU के implementation को और अधिक उजागर करना चाहिए, अतीत के असफल प्रयासों का हवाला देते हुए असहमति जताई गई है।
  • low-level से high-level तक की अवधारणा एक spectrum जैसी लगती है, और C उन भाषाओं में निचले हिस्से में स्थित है जो memory और thread management जैसी machine primitives को उजागर करती हैं।
  • लेख का यह दावा कि parallel programming कठिन नहीं है, कुछ टिप्पणीकारों को भ्रामक लगता है।
  • लेख का यह आधार कि कंप्यूटर PDP-11 की संरचना से मेल नहीं खाते, पहले से कहीं अधिक सही लगता है, लेकिन non-C processor की कल्पना करने वाला निष्कर्ष उतना मजबूत नहीं दिखता।
  • कुछ टिप्पणीकारों का तर्क है कि लेख का यह कहना सही है कि कंप्यूटर कोई तेज़ PDP-11 नहीं हैं, लेकिन इसका C से संबंध बताना गलत है।
  • struct padding और signed overflow के undefined behavior होने जैसी विशेषताओं के कारण C low-level language नहीं है, यह लेख का दावा कुछ हद तक रचनात्मक लगता है।
  • C के प्रभुत्व के कारण CPU designers को स्वाभाविक रूप से ऐसी चीज़ें बनानी पड़ीं जो C को चला सकें, यह दावा तर्कसंगत लगता है, लेकिन इसका पहले दावे और लेख के शीर्षक से क्या संबंध है, यह स्पष्ट नहीं है।
  • अगर आधुनिक CPU की परिष्कृत तकनीक C को अब "low-level" language नहीं बनाती, तो यही बात assembly language पर भी लागू होती है।
  • यह लेख कुछ टिप्पणीकारों को VLIW की याद दिलाता है, जहाँ एक VLIW instruction में कई स्वतंत्र instructions शामिल हो सकते हैं जिन्हें parallel में चलाया जा सकता है।