1. परिचय
C भाषा के हो? र किन अहिले पनि ध्यानाकर्षण गरिरहेको छ
C भाषा, 1972 मा अमेरिकाको AT&T Beru Kenkyujo मा जन्मेको प्रोग्रामिङ भाषा हो। आधुनिक समयमा धेरै भाषा अस्तित्वमा छन्, तर C भाषा अझै पनि गहिरो लोकप्रियता गर्व गर्दछ। विशेष गरी, एम्बेडेड सिस्टम र अपरेटिङ सिस्टम विकास स्थलहरूमा, C भाषा अहिले पनि पहिलो पङ्क्तिमा प्रयोग भइरहेको छ।
इतिहास जान्ने महत्त्व
प्रोग्रामिङ सिक्दा, त्यो भाषाको पृष्ठभूमि र उत्पत्ति कसरी भयो, कसरी विकास भएको छ भन्ने बुझ्न अत्यन्त महत्वपूर्ण छ। C भाषाको इतिहास जान्नुले केवल प्राविधिक ज्ञानलाई गहिरो बनाउँदैन, तर त्यसको विचारधारा र डिजाइन दर्शनलाई बुझ्न पनि मद्दत गर्दछ। यो अन्य भाषा र फ्रेमवर्क सिक्दा पनि लागू गर्न सकिने ‘दृष्टिकोण’ विकास गर्ने प्रशिक्षण हो।
यस लेखको उद्देश्य
यस लेखमा, C भाषाको उत्पत्ति देखि सुरु गरेर, विकासको प्रक्रिया, मानकीकरणको प्रवाह, अन्य भाषामा प्रभाव, र वर्तमान स्थितिसम्मलाई, समयको प्रवाहसँगै व्याख्या गर्नेछौं। शुरुआतीहरूका लागि पनि बुझ्न सजिलो बनाइएको छ, त्यसैले C भाषा सिक्न चाहने व्यक्तिहरू वा पहिले नै प्रयोग गरिरहेका तर पृष्ठभूमि नजाने व्यक्तिहरूलाई पनि नयाँ खोजहरू पाउन सकिनेछ।
2. C भाषाको उत्पत्ति
C भाषाको जन्मको आधार बनेको BCPL
C भाषाको मूल पत्ता लगाउँदा, 1960 दशकमा विकास गरिएको BCPL(Basic Combined Programming Language) सम्म पुग्छ। BCPL केम्ब्रिज विश्वविद्यालयको मार्टिन रिचर्ड्स द्वारा 1966 मा डिजाइन गरिएको, कम्पाइलर निर्माणलाई उद्देश्य बनाएको सरल र लचिलो भाषा थियो।
यो BCPL ले, “प्रकार” भन्ने अवधारणा स्पष्ट रूपमा नलिई, सबै डेटा एकल “वर्ड” को रूपमा ह्यान्डल गर्ने डिजाइन थियो। त्यसकारण, प्रोग्राम लेख्दा लचिलोपन उच्च थियो, र त्यस समयमा सीमित कम्प्युटर स्रोतहरूमा प्रभावकारी प्रक्रिया सम्भव बनायो। तर, प्रकार नहुनुका कारण बग र त्रुटिहरू उत्पन्न हुन सजिलो थियो, र पछि भाषा डिजाइनमा ठूलो सुधार बिन्दु मानियो।
B भाषा को जन्म र विशेषताहरू
BCPL बाट उत्पन्ने भएर जन्म लिएको हो, B भाषा। 1970 को आसपास, AT&T बेल अनुसन्धान संस्थानको केन टम्पसन(Ken Thompson) ले, BCPL लाई सरल बनाइ, मिनी कम्प्युटर “DEC PDP-7” मा चल्ने गरी डिजाइन गरेको B भाषा हो।
B भाषा पनि, BCPL जस्तै, “प्रकार” नलिने डिजाइन थियो। त्यसकारण, प्रोग्रामको लचिलोपन कायम रह्यो, तर त्यस समयमा उच्च प्रदर्शनको मेसिनहरू देखिन थाल्दा, अधिक कडा नियन्त्रण र डेटा व्यवस्थापन आवश्यक भयो। विशेष गरी 16 बिट र 32 बिट जस्ता हार्डवेयर वातावरणको विकासले, “प्रकार” को स्पष्टता अपरिहार्य चुनौती बन्यो।
C भाषाको जन्मतर्फको तयारी
B भाषा UNIX को प्रारम्भिक संस्करणको विकासमा प्रयोग भयो, तर भाषा विशिष्टताको प्रतिबन्ध क्रमशः विकासको बाधा बन्यो। विशेष गरी, जटिल संरचना र पोइन्टरको सञ्चालन, प्रकार सुरक्षा सुनिश्चित गर्न कठिनाइ स्पष्ट भयो, र B भाषामा सीमितता स्पष्ट भयो।
यस्ता परिस्थितिमा, B भाषाको सुधारित संस्करणको रूपमा देखिएको हो “C भाषा”。 अर्को अध्यायमा, यो C भाषा कसरी जन्म लियो, र के कस्ता विशेषताहरू थिए भन्ने बिस्तारमा व्याख्या गर्नेछौं।
3. C भाषा को जन्म
Dennis Ritchie द्वारा विकास
1972 मा, अमेरिकाको न्यू जर्सी राज्यमा रहेको AT&T बेल अनुसन्धान केन्द्र मा, Dennis M. Ritchie (Dennis M. Ritchie) द्वारा C भाषा विकास गरियो।
उनीले, सहकर्मी Ken Thompson ले डिजाइन गरेको B भाषाको सीमाहरूलाई ध्यानमा राखी, त्यसको सुधार संस्करणको रूपमा C भाषा डिजाइन गरे। नयाँ प्रकार(Type)प्रणालीको परिचय: चलले प्रयोग गर्ने डेटा प्रकारहरू(int、char、float आदि)लाई स्पष्ट रूपमा परिभाषित गरिन्छ।
C भाषा को नामकरणको उत्पत्ति
C भाषाको नाम यसको पूर्वज “B भाषा” बाट विकास भएको कारणले उत्पन्न भएको हो। अल्फाबेट क्रममा “B” पछि “C” आउँछ भन्ने सरल कारणले।
यसमा, B भाषा को निरन्तरता मा रहेको सुधार संस्करण हो भन्ने सन्देश पनि समावेश थियो। ध्यान दिनुहोस्, यो कुनै विशेष शब्दको पहिलो अक्षर हो भन्ने होइन।
C भाषा को नवप्रवर्तनात्मक विशेषताहरू
C भाषा को प्रमुख विशेषता, उच्च-स्तर भाषा र लो-स्तर भाषा बीचको स्थितिमा रहेको डिजाइन विचारधारा हो। अर्थात, मानवलाई बुझ्न सजिलो सिन्ट्याक्स भएको साथ, मेसिन कोड नजिकको आदेश नियन्त्रण सम्भव बनाउने, अत्यन्त सन्तुलित भाषा हो।
नीचे, C भाषा को मुख्य विशेषताहरू मध्ये केही उल्लेख गरिएका छन्:
- प्रकार(Type)प्रणालीको परिचय:चलले प्रयोग गर्ने डेटा प्रकारहरू(int、char、float आदि)लाई स्पष्ट रूपमा परिभाषित गरिन्छ।
- प्वाइन्टर(Pointer):मेमोरी ठेगाना सिधै सञ्चालन गर्न सक्ने क्षमता। यसले गतिशील मेमोरी व्यवस्थापन र कार्यको ठेगाना पास गर्न सम्भव बनाउँछ।
- संरचना(struct):विभिन्न प्रकारका डेटा एकै साथ समेट्न सकिन्छ।
- कार्यद्वारा विभाजन:प्रक्रियालाई कार्य इकाइमा विभाजन गरेर, मोड्युलरिटी र पुन: प्रयोग क्षमता बढ्यो।
- प्रि-प्रोसेसर निर्देश:
#define
र#include
जस्ता, कम्पाइल अघि आदेश लेख्न सक्ने प्रणाली।
यी सुविधाहरूको कारण, C भाषा कार्यक्षम, लचिलो, र प्रदर्शनमा उत्कृष्ट अनुप्रयोग विकास सम्भव बनायो। पछि देखिने UNIX OS को पुनः कार्यान्वयनमा पनि गहिरो रूपमा संलग्न हुनेछ।
C भाषा को उदयले ल्याएका परिवर्तनहरू
C भाषा को उदयसँगै, परम्परागत असेंब्ली र असंरचित भाषाहरूमा सम्भव नहुने 「उच्च पोर्टेबल कोड」 लेख्न सम्भव बनायो। यो, कम्पाइलर मात्र भएमा विभिन्न हार्डवेयरमा एउटै कार्यक्रम चल्न सक्ने नविन विचार थियो, जसले पछि सफ्टवेयर विकासको सामान्य धारणालाई परिवर्तन गर्यो।
4. UNIXसँगको सम्बन्ध
UNIX विकासको पर्दा पछाडि र C भाषा को उदय
1970 को दशकको शुरुवातमा, AT&T बेल अनुसन्धान संस्थानमा अर्को पुस्ताको अपरेटिङ सिस्टमको रूपमा「UNIX」को विकास जारी थियो।
प्रारम्भिक UNIX असेंब्ली भाषामा लेखिएको थियो, र प्रत्येक प्लेटफर्मको फरक आदेश संरचनामा निर्भर भएको कारण पोर्टेबिलिटी कम थियो, र संशोधन तथा मर्मतसम्भार पनि कठिन थियो।
त्यस्ता परिस्थितिमा, Dennis Ritchie र Ken Thompson को नेतृत्वमा, UNIX को पुनः कार्यान्वयन C भाषामा गर्ने साहसी प्रयास सुरु हुन्छ। यो चयनले भविष्यको प्रोग्रामिङ संसारमा पारेको प्रभाव अकल्पनीय छ।
C भाषाद्वारा UNIX को पुनः कार्यान्वयन(1973)
१९७३ मा, UNIXलाईC भाषामा पुनः निर्माण गरियो। यो त्यतिखेरको लागि अत्यन्तै क्रान्तिकारी थियो, किनकि OS प्रणालीको मूलभूत सफ्टवेयर हार्डवेयरमा निर्भर नहुने उच्च स्तरको भाषामा लेखिनु असाधारण थियो।
C भाषाद्वारा गरिएको यो कार्यान्वयनको लाभ अत्यन्तै ठूलो थियो, र तलका जस्ता फाइदाहरू उत्पन्न भए।
- उच्च पोर्टेबिलिटी:C भाषामा लेखिएको UNIX, कम्पाइलर मात्र उपलब्ध भएमा अन्य मेसिनहरूमा पनि चल्न सक्छ।
- रखरखाव र विस्तार क्षमताको सुधार:पढ्न सजिलो र व्यवस्थित सिन्ट्याक्सले विकास दक्षता उल्लेखनीय रूपमा बढायो।
- विकासकर्ता समुदायको विस्तार:अन्य विश्वविद्यालय र कम्पनीहरूमा पनि C भाषा र UNIX प्रयोग हुन थाल्यो, ज्ञान साझेदारी सजिलो बन्यो।
यसले UNIX लाई विश्वविद्यालय, अनुसन्धान संस्थान, इन्जिनियरहरू बीच छिटो फैलायो, र C भाषा पनि यस गति संग विश्वव्यापी रूपमा फैलियो।
UNIX र C भाषा, पारस्परिक विकासको सम्बन्ध
UNIX र C भाषा, पारस्परिक पूरक हुँदै विकास गरेका सम्बन्धमा छन्। C भाषाको पोर्टेबिलिटी र कार्यक्षमता UNIX को विविध हार्डवेयर विस्तारलाई समर्थन गर्यो, र UNIX को सफलता C भाषाको प्रयोग केसको रूपमा यसको विश्वसनीयता र उपयोगितालाई प्रमाणित गर्यो।
यस समयमा स्थापित 「UNIX + C भाषा」 विकास शैली पछि सफ्टवेयर विकासको मानक मोडेल बन्यो, र Linux, BSD, साथै macOS र Android जस्ता आधुनिक OS सम्म फैलिने प्राविधिक वंशावली निर्माण गर्यो।
5. मानकीकरण र विकास
K&R C को उदय(1978 वर्ष)
C भाषा व्यापक रूपमा फैलिन थाल्यो 1978 मा、ब्रायन डब्ल्यू. केर्निहान (Brian W. Kernighan) र डेनिस रिची ले सह-लेखकको रूपमा प्रकाशित पुस्तक『The C Programming Language』ले C भाषाको व्यावहारिक मानकको रूपमा विश्वभर प्रभाव पारेको थियो। यस संस्करणको C भाषा लेखकहरूको आद्याक्षर लिई「K&R C (केर्निहान र रिची C)」भनी बोलाइन्छ।
K&R C मा, फङ्सन प्रोटोटाइपहरू छुट्याइएको थियो, प्रकार जाँच ढिलो थियो, जसले आधुनिक दृष्टिकोणबाट हेर्दा अत्यधिक लचिलो लेखनलाई अनुमति दियो। तर, अत्यधिक लचिलो डिजाइनले ठूलो स्तरको विकास र सुरक्षा दृष्टिकोणबाट समस्या बन्यो।

ANSI C (C89/C90) द्वारा मानकीकरण
C भाषा विश्वभर प्रयोग हुन थाल्दा、कम्पाइलर अनुसारको व्यवहारको भिन्नताले विकासकर्ताहरूलाई चिन्तित बनायो। यसलाई समाधान गर्न, 1983 मा ANSI (अमेरिकी राष्ट्रिय मापदण्ड संस्था) ले C भाषाको मानकीकरण सुरु गर्यो, र 1989 मा「ANSI C (C89)」को रूपमा आधिकारिक मानक स्थापित गरियो।
त्यसपछि, 1990 मा अन्तर्राष्ट्रिय मानकीकरण संस्था (ISO) द्वारा अन्तराष्ट्रिय मानकको रूपमा मान्य गरियो, यसलाई「C90」भनी पनि बोलाइन्छ।
ANSI C मा तलका सुधारहरू थपियो:
- फङ्सन प्रोटोटाइपको स्पष्टता (प्रकार जाँचको सुदृढीकरण)
- मानक पुस्तकालयको विस्तार (
,
आदि)
- enum प्रकार र
const
,volatile
को परिचय - अधिक कडा प्रकार र मेमोरी अपरेसनको परिभाषा
यसले गर्दा, C भाषापोर्टेबिलिटी, मर्मतयोग्यता, सुरक्षाको पक्षमा ठूलो विकास गर्यो, र कम्पनीहरू तथा शैक्षिक संस्थाहरूमा पनि अधिक सुरक्षित रूपमा प्रयोग गर्न सकियो।
C99, C11, C17, र C23
ANSI C पछि पनि, C भाषा समयको माग अनुसार संशोधन जारी राखेको छ।
- C99 (१९९९)
चलको घोषणा स्थानको लचिलोपन、//
द्वारा टिप्पणी、परिवर्तनशील लम्बाइको एरे、inline
कुञ्जीशब्द आदि, आधुनिक लेखन शैली परिचय गरियो। - C11 (२०११)
मल्टिथ्रेड प्रोसेसिंग () र एटोमिक अपरेसन, Unicode समर्थन, सुरक्षा सुदृढीकरण आदि थपिएर, अझ बलियो र बहुउपयोगी भाषा बन्यो।
- C17 (२०१७)
मुख्यतया बग सुधार र मौजुदा विशिष्टताको स्पष्टिकरण गरिएको, अर्थात् मर्मतसम्भार संस्करण। - C23 (२०२३ योजनाबद्ध → अन्तिम मसौदा स्वीकृत भइसकेको)
आधुनिक C++ सँगको संगततालाई ध्यानमा राख्दै,constexpr
जस्ता कार्यक्षमता र अधिक संक्षिप्त लेखन समर्थन आदि थपिने अपेक्षा छ, जसले C भाषाको आधुनिकिकरणलाई अघि बढाइरहेको छ।
दीर्घायु भाषा रूपमा C को शक्ति
यी मानकीकरण प्रवाहलाई हेर्दा, C भाषा कसरीसमयको आवश्यकताहरूलाई लचिलो रूपमा उत्तर दिँदै पनि, मूल डिजाइन विचारलाई निरन्तर कायम राखेको छ भन्ने स्पष्ट हुन्छ। दशौँ वर्षसम्म प्रयोगमा रहने भाषा अरू कुनैसँग तुलना गर्न सकिँदैन, जसले मात्र C भाषाको डिजाइनको सार्वभौमिकता दर्शाउँछ।
6. C भाषा को प्रभाव र व्युत्पन्न भाषाहरू
C भाषाले अन्य भाषाहरूमा पारेको ठूलो प्रभाव
C भाषा केवल एउटा प्रोग्रामिङ भाषा मात्र नभएर, त्यसपछि देखा पर्ने धेरै भाषाको डिजाइनमा प्रत्यक्ष प्रभाव पारेको छ। C भाषाको वाक्यरचना, मेमोरी व्यवस्थापनको विचार, र नियन्त्रण संरचना(if
、for
、while
आदि) ले, प्रोग्रामिङ भाषाको “साझा भाषा” पनि भनिने अस्तित्व बनाएको छ।
विशेष गरी प्रभाव स्पष्ट देखिने भाषा तलका छन्:
- C++
C भाषालाई विस्तार गरेर वस्तु-उन्मुख तत्वहरू थपिएको C++ हो। C सँगको अनुकूलता कायम राख्दै, वर्ग, उत्तराधिकार, बहुरूपता(पोलिमोर्फिज्म)जस्ता उन्नत अवधारणाहरूलाई परिचय गराइएको छ। - Java
C++को प्रभावलाई बलियो रूपमा लिएको छ, तर पोइन्टर अपरेसनलाई हटाएर, भर्चुअल मेसिन(JVM)मा चल्ने गरी सुरक्षा र पोर्टेबिलिटीलाई खोज्ने भाषा हो। वाक्यरचना C系लाई आधार बनाएको छ, C जान्ने भए Java मा पनि तुलनात्मक रूपमा सहज प्रवेश गर्न सकिन्छ। - C#
Microsoft द्वारा विकास गरिएको भाषा हो, वाक्यरचना C系मा आधारित छ, तर .NET फ्रेमवर्कसँग गहिरो सम्बन्ध छ। Java र C++ को बीचको अस्तित्व पनि भनिन्छ। - Objective-C、Swift(एप्पल श्रेणी)@@
Objective-C भनेको C भाषामा Smalltalk को मेसेजिङ कार्यक्षमता मिश्रित गरिएको हो, Swift भनेको त्यसको उत्तराधिकारीको रूपमा आधुनिक लेखन शैली अपनाएको तर C系 वाक्यरचनाको प्रभाव गहिरो रूपमा बाँकी छ।
Embedded र OS विकासमा C भाषाको शक्ति
C भाषाको सबैभन्दा ठूलो शक्ति भनेको 「हार्डवेयरको नजिकको स्तरमा नियन्त्रण सम्भव」 हुनु हो। यस विशेषताले, तलका क्षेत्रहरूमा अहिले पनि C भाषा मुख्य शक्ति रूपमा सक्रिय छ:
- एम्बेडेड सिस्टम: घर उपकरण, कार उपकरण, मेडिकल उपकरण आदि, धेरै माइक्रोकन्ट्रोलरमा C भाषा प्रयोग हुन्छ।
- OS विकास: Linux कर्नेल C भाषामा लेखिएको छ, macOS र Windows को आन्तरिक भागमा पनि C महत्वपूर्ण भूमिका खेल्छ।
- सिस्टम प्रोग्रामिङ सामान्य: डिभाइस ड्राइभर, कम्पाइलर, डेटाबेस इन्जिन आदि।
C भाषा हार्डवेयरको सीमित स्रोतलाई अधिकतम उपयोग गर्ने डिजाइन सम्भव बनाउँछ, र रियल-टाइम तथा स्थिरता आवश्यक पर्ने परिस्थितिहरूमा निरन्तर मूल्यवान रहन्छ।
आधुनिक समयमा पनि C भाषा सिक्ने मूल्य के हो?
धेरै मानिसहरूले “पुरानो भाषा” भनेर टाढा राख्ने गर्छन्, तर वास्तवमाप्रोग्रामिङको सार र लो-लेयरको मेकानिज्म बुझ्नको लागि उत्तम शैक्षिक सामग्री हो।
- पॉइन्टर सिकेर मेमोरीको ह्यान्डलिंग स्पष्ट हुन्छ
- डेटा प्रकार र स्ट्रक्चरको प्रयोग सिकेर डेटा डिजाइनको मूलभूत सिकाइ हुन्छ
- सरल वाक्यरचनाले तार्किक सोचलाई बलियो बनाउँछ
यीहरू, जुनसुकै उच्च-स्तरको आधुनिक भाषा प्रयोग गर्दा पनि, आधारभूत क्षमता आवश्यक हुन्छ। त्यसैले अहिले पनि धेरै विश्वविद्यालय र प्राविधिक शिक्षा संस्थानहरूमा C भाषा पाठ्यक्रमको रूपमा अपनाइन्छ।
7. सारांश
C भाषा को इतिहासलाई हेर्दै
C भाषा, 1972 मा Denisu Ricchī द्वारा विकास गरिएको देखि, सफ्टवेयर विकासको आधार बनाएको भाषा रूपमा लामो समयसम्म समर्थन गरिएको छ।
त्यसको मूल BCPL र B भाषा मा छ, UNIX को पुनः कार्यान्वयनलाई कारण बनाइ, विश्वभरका अनुसन्धानकर्ता र इन्जिनियरहरूबीच विस्फोटक रूपमा फैलियो।
त्यसपछि, ANSI द्वारा मानकीकरण (C89/C90) पछि, C99, C11, C17, C23 जस्ता समय अनुसार अद्यावधिकहरू गरिएको छ, 50 वर्षभन्दा बढी बितिसके पनि अहिले पनि सक्रिय प्रोग्रामिङ भाषा को रूपमा प्रयोग हुँदै आएको छ।
C भाषाले ल्याएको चीजहरू
C भाषा तलका जस्ता महत्वपूर्ण मूल्यहरू प्राविधिक समाजलाई प्रदान गर्यो:
- प्लेटफर्महरू पार गर्ने पोर्टेबिलिटी
- हार्डवेयर नजिकको स्तरको नियन्त्रण क्षमता
- प्रोग्रामिङ भाषाको आधारभूत वाक्यरचना
- C++ र Java जस्ता व्युत्पन्न भाषाहरूमा प्रभाव
यसरी C भाषा, वर्तमान सफ्टवेयर विकास र सूचना प्रविधिको विकासका लागि, अवश्यक आधार बनिरहेको छ भन्ने कुरा अतिशयोक्ति होइन।
सीख्ने मूल्य अहिले पनि परिवर्तन भएको छैन
आधुनिक समयमा Python र JavaScript जस्ता उच्च स्तरका भाषाहरूले ध्यान आकर्षित गरिरहेका छन्, तर C भाषा सिक्नाले अहिले पनि ठूलो अर्थ राख्छ।
मेमोरी व्यवस्थापन, डेटा संरचना, कम स्तरको नियन्त्रण जस्ता “प्रोग्रामिङको मूल शक्ति” विकसित गर्नको लागि, C भाषा अध्ययन अत्यन्त प्रभावकारी छ।
विशेष गरी तलका जस्ता व्यक्तिहरूका लागि, C भाषा बुझ्न ठूलो हतियार बनिन्छ:
- एम्बेडेड प्रणाली र IoT विकासको लक्ष्य राख्ने प्राविधिकहरू
- OS र कम्पाइलर जस्ता, सिस्टम प्रोग्रामिङमा रुचि राख्ने व्यक्तिहरू
- CS(कम्प्युटर विज्ञान)को आधारलाई गहिरो रूपमा सिक्न चाहने विद्यार्थी
C भाषा सिक्नाले भविष्यमा जुनसुकै क्षेत्रमा गए पनि प्रयोग हुने “सोच शक्ति” र “प्राविधिक क्षमता” को आधार निर्माण गर्ने बाहेक अरु केही होइन।