close

'सी' प्रोग्रामिङ ल्याङ्ग्वेजलाई किन भनियो C ? D लाई के भयो अनि A र B कहाँ गए ?

टेकपाना टेकपाना

चैत २, २०८२ १०:४०

'सी' प्रोग्रामिङ ल्याङ्ग्वेजलाई किन भनियो C ? D लाई के भयो अनि A र B कहाँ गए ?

काठमाडौँ । तपाईँले आफ्नो दैनिक जीवनमा प्रयोग गर्ने प्रविधिहरूमा सी (C) प्रोग्रामिङ ल्याङ्ग्वेज (भाषा) लाई प्रत्यक्ष रूपमा नदेखे पनि यो अदृश्य रूपमा जताततै व्याप्त छ । जब तपाईं आफ्नो कार स्टार्ट गर्नुहुन्छ, त्यसको मेनबोर्डले विभिन्न पार्टपूर्जाहरूसँग कुराकानी गर्न सम्भवतः 'सी' ल्याङ्वेजकै प्रयोग गरिरहेको हुन्छ ।

यति मात्र होइन, तपाईंले बोक्ने स्मार्टफोन चाहे त्यो आईफोन होस् वा एन्ड्रोइड, त्यसको अपरेटिङ सिस्टमको सबैभन्दा भित्री भाग अर्थात् 'कर्नेल' (Kernel) पनि 'सी' ल्याङ्ग्वेजमै लेखिएको हुन्छ । तपाईं 'सी' लाई नदेखेझैँ गर्नै सक्नु हुन्न । यो ल्याङ्ग्वेजले विश्वमा एक प्रकारको क्रान्ति नै ल्याएको छ ।

बेल ल्याब्स: जहाँ 'सी' को जन्म भयो

यो कथाको सुरुवात बुझ्न हामी समयको पछाडि फर्किएर न्यु जर्सीस्थित एउटा साधारण देखिने तर विशाल भवनमा पुग्नुपर्छ । जुन 'बेल ल्याब्स' (Bell Labs) हो । टेलिफोनका आविष्कारक अलेक्जेन्डर ग्राहम बेलले स्थापना गरेको र तत्कालीन समयमा एटी एन्ड टीको स्वामित्वमा रहेको यो प्रयोगशालाले सरकारी संरक्षण र ठुलो बजेट प्राप्त गरेको थियो ।

यहाँ वैज्ञानिकहरूलाई नयाँ-नयाँ प्रयोग र विचारहरूसँग खेल्ने पूर्ण स्वतन्त्रता थियो । यही स्वतन्त्रताका कारण ट्रान्जिस्टर, लेजर र सोलार सेल जस्ता युगान्तकारी आविष्कारहरू सम्भव भए । 'सी' ल्याङ्ग्वेज पनि यही प्रसिद्ध प्रयोगशालाको एउटा उत्पादन हो । तर, 'सी' भन्दा पहिले त्यहाँ 'बी' (B) थियो ।

केन थम्पसन र 'बी' को कथा

सन् १९६९ मा बेल ल्याब्सका एक स्वतन्त्र र प्रतिभाशाली अनुसन्धानकर्ता केन थम्पसन 'मल्टिक्स' (Multics) नामक एउटा विशाल र जटिल अपरेटिङ सिस्टम प्रोजेक्टमा काम गरिरहेका थिए । जब बेल ल्याब्सले सो प्रोजेक्ट बन्द गर्ने निर्णय गर्‍यो, थम्पसनसँग अलि फुर्सद भयो । उनलाई आफूले लेखेको 'स्पेस ट्राभल' (Space Travel) नामक गेम एउटा पुरानो र धुलो जमेको डीईसी पीडीपी-७ (DEC PDP-7) कम्प्युटरमा खेल्ने रहर थियो ।

पीडीपी-७ त्यो समयमा पनि पुरानो भइसकेको थियो र यसको मेमोरी क्षमता मात्र ८ केबी थियो । सो कम्प्युटरमा गेम चलाउन थम्पसनले शून्यबाट एउटा नयाँ अपरेटिङ सिस्टम बनाए, जसलाई 'युनिक्स' (Unix) भनियो । तर, युनिक्सलाई 'एसेम्ब्ली कोड' (जुन मेसिनसँग सिधै कुरा गर्ने १ र ० को अत्यन्तै कठिन ल्याङ्ग्वेज हो) मा लेख्नु निकै कष्टकर थियो । थम्पसनलाई मानव तर्कको नजिक रहेको कुनै उच्च स्तरीय ल्याङ्ग्वेजको आवश्यकता थियो ।

त्यस समयमा बीसीपीएल (BCPL - Basic Combined Programming Language) उपलब्ध थियो । तर पीडीपी-७ को सीमित हार्डवेयरका लागि यो धेरै ठुलो थियो । थम्पसनले बीसीपीएलबाट 'बेसिक' शब्द झिकेर यसलाई अझै सरल र छरितो बनाए र नयाँ ल्याङ्ग्वेजलाई जन्माए, जसको नाम उनले 'बी' (B) राखे । यो छिटो र छरितो थियो । तर यसका पनि आफ्नै सीमाहरू थिए ।

'बी' बाट 'सी' सम्मको यात्रा: डेनिस रिचीको योगदान

'बी' ल्याङ्ग्वेज पीडीपी-७ का लागि ठिकै थियो । तर जब बेल ल्याब्सले शक्तिशाली पीडीपी-११ (PDP-11) मा स्तरोन्नति गर्‍यो, तब 'बी' का कमजोरीहरू देखिन थाले । 'बी' एउटा 'टाइपलेस' (Typeless) ल्याङ्ग्वेज थियो, जसले गर्दा महँगो पीडीपी-११ कम्प्युटर यसको क्षमता अनुसार चल्न सकेको थिएन ।

यहीँनेर थम्पसनका घनिष्ठ मित्र र सहकर्मी डेनिस रिचीको प्रवेश हुन्छ । रिचीले युनिक्सलाई नयाँ हार्डवेयरमा टिकाउन यसको ल्याङ्ग्वेजमा सुधार आवश्यक छ भन्ने महसुस गरे । उनले दुई वर्ष लगाएर 'बी' लाई परिमार्जन गरे । रिचीको सबैभन्दा ठुलो आविष्कार 'टाइप सिस्टम' (Type System) को सुरुवात थियो ।

उनले अक्षरका लागि 'char' र अङ्कका लागि 'int' जस्ता डेटा टाइपहरू बनाए । यसले प्रोग्रामरलाई कम्प्युटरसँग 'यो कोठा एउटा अक्षरका लागि मात्र हो, त्यसैले अतिरिक्त ठाउँ खेर नफाल' भन्न सजिलो बनायो । सफ्टवेयरलाई हार्डवेयरको क्षमतासँग ठ्याक्कै मिलाउन यसले मद्दत गर्‍यो ।

सुरुमा उनीहरूले यसलाई 'न्यु बी' (New B) भन्ने गर्थे । तर यो ल्याङ्ग्वेज झन् शक्तिशाली र विशिष्ट बन्दै गएपछि यसलाई नयाँ पहिचान दिनुपर्ने आवश्यकता महसुस भयो । 'बी' पछि वर्णमालामा आउने अर्को अक्षर 'सी' भएकाले यसको नाम 'सी' राखियो । सन् १९७३ मा रिची र थम्पसनले युनिक्स अपरेटिङ सिस्टमको मुख्य भाग (Core) लाई 'सी' ल्याङ्ग्वेजमै पुन: लेखे ।

त्यसभन्दा अघि उच्च स्तरीय ल्याङ्ग्वेजहरू ढिलो हुन्छन् भन्ने मान्यताका कारण अपरेटिङ सिस्टमहरू एसेम्ब्ली कोडमै लेखिन्थ्यो । तर 'सी' ले ती सबै धारणाहरूलाई गलत साबित गरिदियो ।

'डी' को सट्टा 'सी++' को आगमन

सन् १९७० को दशकको अन्त्यसम्म 'सी' ल्याङ्ग्वेजको एकछत्र राज थियो । तर सफ्टवेयरहरू जटिल बन्दै गएपछि यसमा पनि समस्याहरू देखिन थाले । बेल ल्याब्सकै अर्का अनुसन्धानकर्ता ब्यार्नी स्ट्रौस्ट्रप 'सी' को गतिबाट प्रभावित थिए । तर उनी यसमा 'अब्जेक्ट ओरिएन्टेड प्रोग्रामिङ' (OOP) को अवधारणा थप्न चाहन्थे ।

नयाँ ल्याङ्ग्वेजको नाम राख्ने बेला वर्णमालाको अर्को अक्षर 'डी' हुनुपर्ने थियो । तर बेल ल्याब्सका वैज्ञानिकहरू ठट्टा र 'पन्स' (शब्दमा खेल्ने वा रमाउने) मा सौखिन थिए । स्ट्रौस्ट्रपका सहकर्मी मास्किट्टीले यसको नाम C++ राख्न सुझाव दिए । 'सी' ल्याङ्ग्वेजमा कुनै अङ्कलाई १ ले बढाउन '++' कमान्ड प्रयोग गरिन्छ (जस्तै: x++) । यसको अर्थ यो ल्याङ्ग्वेज 'सी' नै हो, तर एक कदम अगाडि वा 'सी' भन्दा अझ राम्रो भन्ने सन्देश दिन खोजिएको थियो । यो नाम यति चर्चित भयो कि 'डी' अक्षर झन्डै २० वर्षसम्म खाली रह्यो ।

अन्ततः 'डी' को जन्म र यसको नियति

सन् २००१ मा मात्र अनुभवी कम्पाइलर इन्जिनियर वाल्टर ब्राइटले अन्ततः 'डी' (D) नाममा नयाँ ल्याङ्ग्वेज सार्वजनिक गरे । ब्राइट वर्षौंदेखि C++ मा काम गर्दा यसको जटिलता र पुराना कोडहरूसँगको बाध्यताबाट दिक्क भएका थिए । उनले C को शक्ति र C++ को सङ्गठनात्मक क्षमता भएको तर आधुनिक र सुरक्षित डिजाइन भएको ल्याङ्ग्वेज बनाउन चाहन्थे । D ले मेमोरी व्यवस्थापन र सुरक्षामा सुधार ल्यायो, जसले गर्दा कम्प्युटरमा आउने 'ब्लु स्क्रिन' जस्ता समस्याहरू कम हुन्थे ।

तर D ले समयको एउटा ठुलो चुनौती सामना गर्नुपर्‍यो । D आउँदासम्म विश्वले जाभा (Java) र सी-सार्प (C#) जस्ता ल्याङ्ग्वेजहरू अपनाइसकेको थियो । केही वर्षपछि 'रस्ट' (Rust) नामक ल्याङ्ग्वेज आएपछि 'डी' को सान्दर्भिकता अझ ओझेलमा पर्‍यो । आज 'डी' एउटा सम्मानित तर सानो समूहले मात्र प्रयोग गर्ने (Niche) ल्याङ्ग्वेजको रूपमा सीमित छ । जसलाई नेटफ्लिक्स (Netflix) र इबे (eBay) जस्ता कम्पनीहरूले उच्च कार्यक्षमताका काममा प्रयोग गर्छन् ।

कहिल्यै 'ए' भन्ने ल्याङ्ग्वेज पनि थियो ?

'बी' र 'सी' को कथा सुनेपछि धेरैलाई 'ए' (A) ल्याङ्ग्वेज थियो कि थिएन भन्ने जिज्ञासा लाग्न सक्छ । यसको उत्तर हो-थियो, तर सिधा रूपमा होइन । 'बी' को नाम 'ए' पछि आएकाले 'बी' राखिएको होइन, बरु यो बीसीपीएल (BCPL) को पहिलो अक्षर थियो ।

यदि हामीले यसको पुर्खा खोज्ने हो भने सन् १९५८ मा जन्मिएको 'अल्गोल' (ALGOL - Algorithmic Language) सम्म पुग्नुपर्छ । यो कुनै एक व्यक्तिको नभई युरोपेली र अमेरिकी वैज्ञानिकहरूको समितिको उत्पादन थियो । अल्गोलकै जगमा सीपीएल (CPL) र पछि बीसीपीएल बनेको थियो । त्यसैले आधुनिक कोडिङको वास्तविक हजुरबुबा वा 'ए' को रूपमा अल्गोललाई मान्न सकिन्छ ।

आज सन् २०२६ मा पनि हामी 'सी' कै युगमा बाँचिरहेका छौँ । पाइथन (Python) वा जाभास्क्रिप्ट (JavaScript) जस्ता आधुनिक ल्याङ्ग्वेजहरूलाई पनि अन्ततः 'सी' मा लेखिएका प्रोग्रामहरूले नै व्याख्या गर्छन् । एउटा न्यु जर्सीको प्रयोगशालामा सामान्य 'स्पेस गेम' खेल्नका लागि बनाइएको यो ल्याङ्ग्वेज आजको डिजिटल संसारको मेरुदण्ड बनेर उभिएको छ ।

 

-अमिर बोहलोली (एमयूओ)

 

पछिल्लो अध्यावधिक: चैत २, २०८२ १०:४०