WhatsApp ८० को दशकको भाषामा, TikTok नयाँमा — तपाईंले चलाउने १० एप कुन programming भाषामा बनेका छन्?

programming language used in popular apps

एउटै “जादुई भाषा” छैन। ठूला एपले फरक-फरक काममा फरक-फरक भाषा चलाउँछन्, र त्यसको कारण चाखलाग्दो छ।

“Facebook कुन भाषामा बनेको?” — यो प्रश्नको सोझो एक-शब्दे जवाफ खोज्नुभयो भने निराश हुनुहुनेछ। किनभने त्यस्तो जवाफ छँदै छैन।

अझ अचम्मको कुरा त के भने, तपाईंले दिनहुँ चलाउने अधिकांश ठूला एप कुनै एउटा भाषामा होइन, आधा दर्जनसम्म फरक भाषामा लेखिएका छन् — प्रत्येक भाषा कुनै निश्चित कामका लागि। कुनैले भिडियो encode गर्न C++ चलाउँछ, कुनैले लाखौं म्यासेज एकसाथ सम्हाल्न ८० को दशकको एउटा पुरानो भाषा, कुनैले data बुझ्न Python। तपाईंको फोनमा चलिरहेको एप वास्तवमा यिनै भाषाको मिश्रण हो।

आउनुहोस्, १० लोकप्रिय एपको भित्री कथा हेरौं — अनि किन तिनले त्यही भाषा रोजे भन्ने पनि।

लाखौं मान्छे एकैचोटि कुरा गर्दा: WhatsApp र Discord

WhatsApp बाट सुरु गरौं, किनभने यसको कथा सबैभन्दा रोचक छ। सन् २०१४ मा Facebook ले WhatsApp किन्दा त्यहाँ जम्मा ३२ जना इन्जिनियर थिए, र तिनले ४५ करोड प्रयोगकर्तालाई सम्हालेका थिए। यो कसरी सम्भव भयो? जवाफ हो — Erlang, स्विडेनको टेलिकम कम्पनी Ericsson ले ८० को दशकमा फोन call सम्हाल्न बनाएको भाषा।

Erlang को खास खुबी भनेको एकैसाथ लाखौं connection खुला राख्न सक्नु हो — ठ्याक्कै जुन काम एउटा chat एपलाई चाहिन्छ। मेरो विचारमा यही रोजाइ नै WhatsApp को असली “secret weapon” थियो। पछि Facebook ले यसमा C++ र Elixir पनि थप्दै लग्यो, तर जग भने अझै Erlang कै छ।

अब मजाको कुरा। Discord पनि लगभग यही बाटो हिँडेको छ। Discord को real-time म्यासेजिङ Elixir मा चल्छ, र Elixir भनेको Erlang कै आधुनिक रूप हो (दुवै एउटै BEAM भन्ने virtual machine मा चल्छन्)। मतलब, विश्वका दुई ठूला chat platform भित्री तहमा एउटै ४० वर्ष पुरानो प्रविधिमा उभिएका छन्।

Discord ले यहाँ एउटा चलाख काम गरेको छ: जहाँ Elixir अलि सुस्त हुन्थ्यो, त्यहाँ Rust जोडिदियो। यसैगरी तिनले एकैचोटि १.१ करोड (11 million) प्रयोगकर्ता online राख्न सके। बाँकी HTTP API चाहिँ Python मा छ, र voice र भिडियो प्रोसेसिङ C++ मा।

PHP को अनौठो यात्रा: Facebook र Instagram

Facebook जब Harvard को hostel कोठाबाट सुरु भयो, त्यति बेला यो PHP मा थियो — वेबसाइट झट्ट बनाउन सजिलो भाषा। तर scale बढेपछि PHP ले नपुग्ने भयो। यहाँ Facebook ले जे गर्‍यो, त्यो धेरै कमैले गर्छन्: आफ्नै भाषा बनायो।

त्यो भाषाको नाम हो Hack — PHP कै जगमा बनेको, तर static typing जस्ता आधुनिक सुविधासहित। Facebook ले आफ्नो झन्डै सम्पूर्ण PHP codebase Hack मा सारेको कुरा आफ्नै engineering blog मा बताएको छ, र यो HHVM भन्ने engine मा चल्छ। तपाईंले देख्ने Facebook को interface चाहिँ React मा बनेको हो। रोचक कुरा, अहिले संसारभर वेब बनाउन प्रयोग हुने त्यही React पनि Facebook कै उपज हो।

Instagram को कथा अर्कै किसिमले प्रेरणादायी छ। सुरुमा जम्मा तीन जना इन्जिनियरले चलाएको यो एप आजसम्म पनि Python र Django मै चल्छ — अर्बौं प्रयोगकर्ता हुँदा पनि। “Python ले यति scale गर्न सक्दैन” भन्ने पुरानो धारणालाई Instagram ले गलत सावित गरिदियो। जहाँ बढी speed चाहिन्छ, त्यहाँ मात्र तिनले केही हिस्सा C++ मा लेख्छन्।

भिडियोको बोझ: YouTube, Netflix र TikTok

भिडियो सबैभन्दा भारी काम हो। encode गर्न, compress गर्न, करोडौं मान्छेलाई एकैचोटि पठाउन प्रशस्त शक्ति चाहिन्छ। यसैले भिडियो एपको भाषा-रोजाइ पनि फरक हुन्छ।

YouTube सुरुमा PHP मा थियो, तर पछि यसको मूल हिस्सा Python मा सारियो। जुन ठाउँमा हरेक millisecond ले फरक पार्छ — जस्तै भिडियो encode गर्ने काम — त्यहाँ C++ चल्छ। Android एप Java मा, र भित्री infrastructure Google कै आफ्नै भाषा Go मा। (Google ले यसको पूरा भित्री विवरण सार्वजनिक गर्दैन, त्यसैले यी व्यापक रूपमा रिपोर्ट भएका कुरा हुन्।)

Netflix अलग बाटो हिँड्छ — यसको backend मुख्यतः Java मा छ। Netflix भित्र हजारौं साना-साना service छन् (यसलाई microservices भनिन्छ), र लगभग सबै Java मै। तपाईंलाई कुन show मन पर्ला भनेर अनुमान लगाउने recommendation इन्जिन र data विश्लेषणचाहिँ Python मा — यो कुरा Netflix ले आफ्नै blog मा वर्षौंअघि नै लेखेको हो।

TikTok, जुन चिनियाँ कम्पनी ByteDance को उत्पादन हो, नयाँ पुस्ताको प्रतिनिधि हो। यसको backend मुख्यतः Go मा बनेको छ — ByteDance ले त Go का लागि आफ्नै tool (जस्तै KiteX) समेत बनाएर खुला गरिदिएको छ। भिडियो प्रोसेसिङमा फेरि उही C++, र तपाईंलाई घण्टौं स्क्रिनमा अल्झाइराख्ने त्यो recommendation algorithm चलाउन Python। TikTok किन यति सहज चल्छ भन्ने पछाडि यही Go-केन्द्रित बनावट एउटा कारण हो।

जसले आफ्नो पहिलो भाषा नै छाड्नुपर्‍यो: Twitter र Uber

केही एप यस्ता छन्, जो सुरुमा एउटा भाषामा बने, तर ठूला हुँदै जाँदा त्यो भाषाले नथेगेपछि अर्कैमा सर्नुपर्‍यो।

Twitter (अहिलेको X) यसको सबैभन्दा प्रसिद्ध उदाहरण हो। यो Ruby on Rails मा बनेको थियो, जसले सुरुका दिनमा छिटो-छिटो फिचर बनाउन सजिलो बनायो। तर प्रयोगकर्ता बढेपछि सर्भर पटक-पटक बस्न थाल्यो — त्यही बेलाको कुख्यात “Fail Whale” तस्बिर सम्झनुहुन्छ कि? समाधानका लागि Twitter ले आफ्नो backend को ठूलो हिस्सा Scala (र Java) मा सार्‍यो, जुन Java Virtual Machine मा चल्छ। यो सार्ने काम सजिलो थिएन, तर यसैले platform लाई स्थिर बनायो।

Uber को यात्रा पनि उस्तै छ। सुरुमा यो Python र Node.js मा थियो, तर scale बढेपछि performance चाहिने ठाउँमा तिनले Go र Java अपनाए। साँच्चै भन्ने हो भने Uber संसारकै पहिलो केही कम्पनीमध्ये हो जसले Node.js लाई production मा चलायो। अहिले भने तिनका धेरै नयाँ service Go मा लेखिन्छन्, र पुरानो Python कोड बिस्तारै हटाइँदै छ — यो कुरा Uber ले आफ्नै engineering blog मा खुलेरै बताएको छ।

अनि Spotify — सबै भाषाको मिश्रण

Spotify लाई अन्त्यमा राखेको छु, किनभने यो पूरै लेखको सार जस्तै छ। एक समय Spotify को backend को करिब ८०% हिस्सा Python मा थियो भन्ने तिनकै पुरानो engineering post मा उल्लेख छ। अहिले भने यसको मूल backend मुख्यतः Java मा छ, data प्रशोधनमा Scala, अनि desktop एपमा C++। एउटै कम्पनीभित्र यति धेरै भाषा — किनभने कुनै एउटा भाषाले सबै काम उत्तिकै राम्रोसँग गर्दैन।

त्यसो भए, “सही भाषा” कुन?

यहाँसम्म आइपुग्दा एउटा कुरा स्पष्ट भइसक्यो होला: कुनै एउटा “सबैभन्दा राम्रो programming भाषा” छैन। हरेक कम्पनीले भाषा रोज्दा त्यो भाषा आफैंमा उत्तम भएर होइन, आफ्नो समस्याका लागि उपयुक्त भएर रोज्छ।

लाखौं connection एकसाथ सम्हाल्नु छ? Erlang वा Elixir। भिडियो जस्तो भारी प्रोसेसिङ छ? C++ नै। Data, AI र machine learning का लागि त Python लगभग जताततै भेटिन्छ। ठूलो, भरपर्दो enterprise-स्तरको service चाहिन्छ भने Java धेरैको भरोसा हो। अनि छिटो, आधुनिक backend बनाउन Go अहिले तेजीसँग रोजाइमा पर्दै छ।

नेपालमा programming सिक्दै गरेका विद्यार्थी वा नयाँ developer का लागि यसमा एउटा राहतको सन्देश छ। “ठूला एप बनाउन कुन एउटा भाषा सिक्नुपर्छ?” भनेर अलमलिनुपर्दैन — किनभने त्यस्तो एउटै भाषा छँदै छैन। बरु आधारभूत कुरा — logic, data structure, अनि समस्या कसरी सोच्ने — राम्रोसँग बुझ्नु बढी काम लाग्छ। सुरुका लागि Python र JavaScript उत्तम छन्, र माथि उल्लेख भएका झन्डै हरेक कम्पनीले यी दुवै कतै न कतै प्रयोग गर्छन्।

अन्तिम कुरा — यी कम्पनीको भित्री बनावट समयअनुसार बदलिइरहन्छ, र सबैले सम्पूर्ण विवरण सार्वजनिक गर्दैनन्। तर एउटा कुरा भने पक्का छ: तपाईंको फोनमा चलिरहेको जुनसुकै एप पनि एउटा होइन, थुप्रै भाषाको टोली-कामको नतिजा हो।

टिप्पणी गर्नुहोस्

This site uses Akismet to reduce spam. Learn how your comment data is processed.