मैं यहां अनाज के खिलाफ भी जा रहा हूं और सी के लिए (थोड़ा विनोदी) सौंदर्य का मामला बनाने की कोशिश कर रहा हूं। जबकि कुछ लोग इसे अलग-अलग कारणों से "बदसूरत" कह सकते हैं, जैसे कि उच्च-स्तरीय निर्माणों की कमी जैसे कक्षाएं या संकेत पर इसकी निर्भरता, मुझे लगता है कि यह मेरे लिए मामला नहीं है ।
TL; DR : मेरी राय में, C सरल है, अच्छा C पठनीय है और बिट्स को पीटने में एक निश्चित आनंद है।
सी सरल है
मानक C केवल कुछ बुनियादी प्रकारों और तंत्रों को परिभाषित करता है ताकि वे कार्य, बिंदु और सरणियों का निर्माण कर सकें। उसके शीर्ष पर, प्राथमिकताओं (जैसे संरचना और यूनियनों) से अधिक जटिल प्रकार बनाने के लिए कम संख्या में रचना का निर्माण होता है। ध्यान दें कि मैंने दो वाक्यों में अधिकांश भाषा का वर्णन कैसे किया । इसका मतलब है कि आपको कोडिंग के दौरान अपने सिर में बहुत सारे वाक्यात्मक नियम और रूप रखने की ज़रूरत नहीं है।
सरल सुंदर है ।
सी आर्कैन नहीं है
कई उच्च-स्तरीय भाषाओं के विपरीत, आप सी में बहुत सारे अजीब, अचिंतनीय प्रतीकों को खोजने के लिए कड़ी मेहनत करेंगे। सी दुनिया में, अमूर्त और "सिंटैक्टिक संपीड़न" दोनों के लिए मुख्य सुविधा कार्य है - शब्दार्थ बहुत सरल आत्म-व्याख्यात्मक निर्माण। अच्छी सी शैली लगभग काव्यात्मक, पठनीय सुंदरता को प्रोत्साहित करती है। वर्णन करने के लिए, आइए लिनक्स कर्नेल से निम्नलिखित स्निपेट को पढ़ने का प्रयास करें। अंतर्निहित डेटा संरचनाओं और कार्यान्वयन विवरणों की समझ के बिना भी, हम निम्नलिखित में से बहुत कुछ समझ सकते हैं:
bool kthread_freezable_should_stop(bool *was_frozen)
{
bool frozen = false;
might_sleep();
if (unlikely(freezing(current)))
frozen = __refrigerator(true);
if (was_frozen)
*was_frozen = frozen;
return kthread_should_stop();
}
फ़ंक्शन के बीच में "अप्रत्याशित घटना में कि वर्तमान ठंड है, रेफ्रिजरेटर से पूछें कि क्या वास्तव में ठंड हुई है"। डॉ। सीस इसे बेहतर नहीं लिख सकते थे।
पठनीय सुंदर है ।
सी पारदर्शी है
जब तक एक सी स्टेटमेंट में एक फ़ंक्शन कॉल शामिल नहीं होता है, आप आम तौर पर इसकी रन-टाइम लागत और साइड इफेक्ट्स का एक बहुत अच्छा विचार प्राप्त कर सकते हैं। C प्रोग्रामर को नियंत्रण देता है और अंततः उसे सही काम करने के लिए भरोसा करता है। जब strlen()
जीएनयू सी लाइब्रेरी चलती है, तो इसे लागू करने से वंचित (एसई के लिए थोड़ा सुधारित) स्निपेट होता है, तो हम एक तस्वीर प्राप्त कर सकते हैं , क्योंकि प्रत्येक ऑपरेटर के पास अच्छी तरह से परिभाषित शब्दार्थ है। C में ओवरलोडिंग नहीं है।
for (char_ptr = str; ((unsigned long int) char_ptr & (sizeof (longword) - 1)) != 0;
++char_ptr)
if (*char_ptr == '\0')
return char_ptr - str;
"अनुकूलनशीलता" के प्रयोजनों के लिए, यह संपत्ति महान है। संभवतः, कुछ उच्च-स्तरीय भाषाएं उच्च-स्तरीय एल्गोरिदम की संक्षिप्त अभिव्यक्ति को आसान बनाती हैं (जैसे सी + + कक्षाओं और ओवरलोडिंग के साथ), लेकिन उन उद्देश्यों के लिए जिन्हें सी के लिए डिज़ाइन किया गया था - एक पोर्टेबल असेंबलर के रूप में अभिनय करना - सी आदर्श है। कभी-कभी, निम्न-स्तरीय कोड के सफल निष्पादन पर, एक प्रोग्रामर मशीन के साथ एक अर्थ में महसूस कर सकता है (या शून्य - यह एक कार्यान्वयन विस्तार है)। यह कहने की ज़रूरत नहीं है कि अन्य भाषाएं खराब हैं, न कि "ज़ेन" पर्याप्त या कुछ मूर्खतापूर्ण, जैसे कि आईएमओ सी उन तरीकों से दिलचस्प हो सकता है जिन्हें कई अन्य भाषाओं ने नहीं चुना है, कई वैध कारणों से।
मेरी राय में, ऊपर प्रस्तुत तीन बिंदु लिनक्स द्वारा मेरे दिमाग में जटिल - अभी तक कुशल - प्रणालियों के निर्माण को प्रबंधित करते हैं। मुझे लगता है कि यह दुनिया मेरी सौंदर्य संवेदनाओं के लिए अपील करती है और मैं इन बिंदुओं पर विचार करने के लिए किसी को भी सी या उसके अगले लक्ष्य के रूप में विचार करने की सलाह दूंगा। मुझे लगता है कि ऑपरेटिंग सिस्टम और व्हाट्सएप के बारे में तर्क उन्हें स्पष्ट रूप से बताते हुए बेहतर समर्थन करते हैं क्योंकि एक सफल प्रोग्रामर होने के लिए निश्चित रूप से गुठली को समझने की आवश्यकता नहीं है, लेकिन किसी को इन क्षेत्रों को विषय के लिए मजबूर करना पड़ सकता है।