विंडोज, मैक ओएस एक्स और लिनक्स किन भाषाओं में लिखे गए हैं?


273

मैं सोच रहा था कि कौन जानता है कि विंडोज़, मैक ओएस एक्स और लिनक्स किस प्रोग्रामिंग भाषाओं से बने हैं और किन भाषाओं का उपयोग ओएस के प्रत्येक भाग के लिए किया जाता है (यानी: कर्नेल, प्लग-इन आर्किटेक्चर, जीयूआई घटक, आदि)।

मुझे लगता है कि प्रत्येक के लिए कई भाषाएं हैं और जाहिर है मुझे पता है कि लिनक्स कर्नेल सी में लिखा गया है।

मैं यहां पूरी तरह से अनुमान लगा रहा हूं कि मैक ओएस एक्स में बहुत सारे ऑब्जेक्टिव-सी कोड हैं क्योंकि यह ऐप्पल की भाषा है जो नेक्सटी से ली गई है।

विंडोज, मैंने सुना है सी, सी ++ और इंटेल असेंबली। क्या Linux या Mac OS में कोई असेंबली कोड है?

इसके अलावा, क्या रूबी, पायथन आदि जैसी स्क्रिप्टिंग भाषाओं का उपयोग ओएस डेवलपर्स द्वारा ओएस के स्क्रिप्टिंग भागों के लिए किया जाता है? प्रत्येक भाषा में OS के कौन से भाग लिखे जाएंगे?



यह SO एक्सचेंज आपके प्रश्न के अंतिम भाग का उत्तर देने में मदद कर सकता है।
बिक्रमजीत सिंह

जवाबों:


269
  • विंडोज: सी ++, कर्नेल सी में है
  • Mac: ऑब्जेक्टिव C, कर्नेल C में है (IO PnP सबसिस्टम एंबेडेड C ++ है)
  • लिनक्स: ज्यादातर चीजें सी में होती हैं, कई यूजरलैंड एप्स पायथन में हैं, केडीई सभी सी ++ हैं

सभी कर्नेल कुछ असेंबली कोड का भी उपयोग करेंगे।


13
मुझे यह जोड़ना चाहिए कि सूक्ति बहुत सी है साथ ही साथ।
नाथन उस्मान

17
गनोम ने सी # (मोनो) के साथ भी फ्लर्ट किया।
हिस्टेरो इलिव

6
लिनक्स कर्नेल में असेंबलर है और साथ ही मेरा मानना ​​है।
GL2014

9
सच है, हर कर्नेल में कम से कम कुछ कोडांतरक होगा
अना बेट्स

4
चीजों को स्पष्ट करने के लिए - Apple कर्नेल का IOKit सबसिस्टम (ड्राइवरों के लिए) C ++ का (एक सीमित उपसमूह) उपयोग करता है। और सभी 3, अर्थात विंडोज, मैक और लिनक्स पर, कई सबसे महत्वपूर्ण उपयोगकर्ता एप्लिकेशन सी या सी ++ में लिखे गए हैं। उदाहरण के लिए, MS ने .NET में Office को फिर से बनाने की कोशिश की, लेकिन C ++ में वापस चला गया। और लिनक्स कर्नेल कई सी ++ का उपयोग करता है - जैसे मुहावरे लेकिन सी में एक साथ हाथ से पकाया जाता है, जैसे चालक कोड में विरासत।
एरिक अलापा

94

लिनक्स: सी। असेंबली में कुछ हिस्से।

[...] यह ज्यादातर सी में है, लेकिन ज्यादातर लोग कॉल नहीं करते कि मैं सी क्या लिखता हूं। यह 386 की हर कल्पनीय विशेषता का उपयोग करता है जो मुझे मिल सकता है, क्योंकि यह मुझे 386 के बारे में सिखाने के लिए एक परियोजना थी। जैसा कि पहले ही उल्लेख किया गया है। , यह दोनों पेजिंग (अभी तक डिस्क नहीं करने के लिए) और विभाजन के लिए एक एमएमयू का उपयोग करता है। यह वह विभाजन है जो इसे वास्तव में 386 पर निर्भर करता है (प्रत्येक कार्य में कोड और डेटा के लिए 64Mb खंड है - 4Gb में अधिकतम 64 कार्य। कोई भी व्यक्ति जिसे 64Mb / कार्य - कठिन कुकीज़ की आवश्यकता है)। [...] मेरे "सी" -इफ़ाइल्स (विशेष रूप से mm.c) में से कुछ लगभग सी के रूप में ज्यादा कोडांतरक हैं। [...] मिनिक्स के विपरीत, मैं भी LIKE इंटरप्ट करता हूं, इसलिए इंटरप्ट को छिपाने की कोशिश किए बिना नियंत्रित किया जाता है। उनके पीछे का कारण। (स्रोत)

मैक ओएस एक्स: कोको ज्यादातर ऑब्जेक्टिव-सी में होता है। सी में लिखा कर्नेल, विधानसभा में कुछ भागों।

मैक ओएस एक्स, कर्नेल परत पर, ज्यादातर एक पुराना, मुफ्त ऑपरेटिंग सिस्टम है जिसे बीएसडी कहा जाता है (विशेष रूप से, यह डार्विन है, बीएसडी, माच और कुछ अन्य चीजों के संकर का एक प्रकार) ... लगभग पूरी तरह से सी, एक बिट के साथ। कोडांतरक में फेंक दिया। (स्रोत)

कोको का अधिकांश उद्देश्य-सी में लागू किया जाता है, एक वस्तु-उन्मुख भाषा है जिसे अविश्वसनीय गति से चलाने के लिए संकलित किया जाता है, फिर भी यह वास्तव में गतिशील रनटाइम को विशिष्ट रूप से लचीला बनाता है। क्योंकि ऑब्जेक्टिव-सी, सी का एक सुपरसेट है, इसलिए आपके कोको अनुप्रयोगों में सी और यहां तक ​​कि सी ++ को मिलाना आसान है। (स्रोत)

विंडोज: सी, सी ++, सी #। असेंबलर में कुछ हिस्से।

हम विंडोज के लिए लगभग पूरी तरह से सी, सी ++ और सी # का उपयोग करते हैं। कोड के कुछ क्षेत्र हाथ से लिखे हुए / हाथ से लिखे हुए हैं। (स्रोत)

यूनिक्स: सी। असेंबली में कुछ हिस्से। (स्रोत)


3
डार्विन (IOKit) में ड्राइवर सबसिस्टम COM-जैसी ऑब्जेक्ट मॉडल पर बहुत निर्भर करता है जो C ++ के सबसेट में लिखा गया है।
हिस्ट्रो इलिव

@ तहर हाँ। जब आप बिट शिफ्टिंग के लिए ऑपरेटर नहीं रखते हैं, तो आप वीबी में एक कर्नेल जैसी निम्न-स्तरीय चीज कैसे लिख सकते हैं? यह रेमंड चेन ने कहा है । विंडोज एप्स अलग हैं
phuclv

15

मैक ओएस एक्स कुछ पुस्तकालयों के अंदर बड़ी मात्रा में सी ++ का उपयोग करता है, लेकिन यह उजागर नहीं होता है क्योंकि वे एबीआई से डरते हैं।


13
क्या? आधे कार्यक्रम वैसे भी हर नई रिलीज़ पर काम करना बंद कर देते हैं।
किनोकिजुफ

7
क्या आप कृपया "मैक ओएस एक्स कुछ पुस्तकालयों के अंदर सी ++ की बड़ी मात्रा का उपयोग करता है" के लिए कुछ उद्धरण प्रदान कर सकते हैं ? मुझे बस इसके लिए अपना शब्द लेना कठिन लगता है! मुझे संदेह है कि मुझे संदेह है।
अनीस रामास्वामी

5
@AnishRamaswamy में देखो IOKit, WebKitऔर GLKit। पर भी एक झलक है dyld। वे बहुत सी ++ भारी हैं।
मैक्सथन चान

1
मुझे यकीन है कि OSX Kernal C है और C ++ नहीं है, वास्तव में सभी ऑपरेटिंग सिस्टम जो मेरे पास आए हैं उनमें C
Kernal है

10

मैं समझता हूं कि यह एक पुरानी पोस्ट है लेकिन विंडोज निश्चित रूप से C ++ में नहीं लिखा गया है। इसमें C ++ बहुत है लेकिन हम जिसे ऑपरेटिंग सिस्टम के रूप में परिभाषित करते हैं वह C ++ में नहीं है। विंडोज एपीआई, विंडोज कर्नेल (ये दोनों संक्षेप में एक ऑपरेटिंग सिस्टम है) सी। वर्षों में लिखे गए हैं। मुझे विंडोज 2000 और विंडोज एक्सपी दोनों के लिए कुछ लीक कोड दिए गए थे। कोड लगभग पूरी तरह से कर्नेल या एपीआई को संकलित करने के लिए पर्याप्त नहीं था, लेकिन हम व्यक्तिगत कार्यक्रमों और सेवाओं को संकलित करने में सक्षम थे। उदाहरण के लिए, हम Notepad.exe, mspaint.exe, और spoolsv.exe सेवा (प्रिंट स्पूल) को सफलतापूर्वक संकलित करने में सक्षम थे। सी। में लिखे गए सभी मैंने फिर से नहीं देखे हैं, लेकिन मुझे यकीन है कि लीक कोड अभी भी धार फाइलों के रूप में जीवित है जो अभी भी उपलब्ध हो सकते हैं।


9

विंडोज: अधिकतर C और C ++, कुछ C #


1
.NET को विंडोज के साथ शिप किया जाता है। बहुत सारी .NET C # में है।
जोनाथन पार्कर

अफवाहें हैं कि विंडोज़ के भविष्य के संस्करणों (विंडोज 8 हो सकता है) में सी # /। नेट के साथ कुछ सी ++ कोड होंगे।
जोनाथन पार्कर

वे पहले ही पूरी तरह से C # में एक OS (लगभग) काम कर चुके हैं। इसे Singularity कहा जाता है। research.microsoft.com/en-us/projects/singularity
Randolpho

ल्यूक एम: हाँ, विंडोज में सी # कोड है। चारों ओर प्रहार करो और तुम पाओगे। .Net को OS के साथ भेज दिया जाता है लेकिन इसका मतलब यह नहीं है कि OS .Net का उपयोग करके लिखा गया है। और विंडोज विलक्षणता नहीं है। एक शोध प्रोटोटाइप और एक वास्तविक ऑपरेटिंग सिस्टम के बीच बहुत बड़ा अंतर है।
रिंस्टेटमोनिका लैरी ओस्टरमैन

2
@ 1800Information - C # वहां से मशीन कोड के लिए संकलित करता है JIT मशीन कोड को चलाने के दौरान संकलित करता है? मुझे लगता है कि आप भ्रमित हैं। वहाँ bytecode है और वहाँ एक वर्चुअल मशीन है: en.wikipedia.org/wiki/Common_Intermediate_Language
Brock Woolf

9
  • विंडोज़: सी ++
  • linux: C
  • mac: उद्देश्य सी
  • एंड्रॉइड: जावा, सी, सी ++
  • सोलारिस: सी, सी ++
  • iOS 7: ऑब्जेक्टिव-सी, स्विफ्ट, सी, सी ++

जावा में Android लिखा है? वास्तव में?
nirvanaswap

3

3
चर्चा ऑपरेटिंग सिस्टम के बारे में है। एक ऑपरेटिंग सिस्टम को एक सिस्टम प्रोग्रामिंग भाषा के बिना नहीं बनाया जा सकता है। जावा के साथ सिस्टम प्रोग्रामिंग करना संभव नहीं है।
जाम रिस्सर

हाँ। सिस्टम के कुछ हिस्से जावा में बनाए जा सकते हैं और कुछ उदाहरण पहले से ही जावाओएस की तरह मौजूद हैं, हालांकि यह पर्याप्त नहीं था। मैं यह नहीं कह रहा हूं कि आप 100% जावा के साथ ओएस बना सकते हैं।
शुकांत पाल

2
@JamRisser एंड्रॉइड लिनक्स कर्नेल का उपयोग करता है, जो सी में है। सिस्टम, गहरी परतों तक, जावा में लिखा है। Dalvik VM, जो कि Google द्वारा लिखित एक जावा वर्चुअल मशीन है, C या C ++ में है।
पेटेर -

7

वाह!!! 9 साल का सवाल है, लेकिन मैं सिर्फ विंडोज कमांड लाइन के इतिहास पर आंतरिक लेख की एक श्रृंखला में आया हूं और मुझे लगता है कि इसका कुछ हिस्सा प्रासंगिक विंडोज प्रश्न का हिस्सा हो सकता है:

ऐसी चीजों की परवाह करने वालों के लिए: कई लोगों ने पूछा है कि क्या विंडोज को C या C ++ में लिखा गया है। इसका उत्तर यह है कि - NT के ऑब्जेक्ट-बेस्ड डिज़ाइन - अधिकांश OS 'के बावजूद, विंडोज़ लगभग पूरी तरह से' C 'में लिखा गया है। क्यों? C ++ मेमोरी फ़ुटप्रिंट और कोड निष्पादन ओवरहेड के संदर्भ में एक लागत का परिचय देता है। आज भी, C ++ में लिखे गए कोड की छिपी हुई लागत आश्चर्यजनक हो सकती है, लेकिन 1990 के दशक के अंत में, जब स्मृति की लागत ~ $ 60 / MB (हाँ ... $ 60 प्रति MEGABYTE!), vtables आदि की छिपी हुई स्मृति लागत महत्वपूर्ण थी। इसके अलावा, वर्चुअल-मेथड कॉल इनडायरेक्शन और ऑब्जेक्ट-डीफ्रेंसिंग की लागत उस समय C ++ कोड के लिए बहुत महत्वपूर्ण प्रदर्शन और स्केल पेनल्टी हो सकती है। हालांकि अभी भी सावधान रहने की जरूरत है, आधुनिक कंप्यूटर पर आधुनिक C ++ का प्रदर्शन ओवरहेड एक चिंता का विषय बहुत कम है, और अक्सर इसकी सुरक्षा, पठनीयता और स्थिरता के लाभों को देखते हुए एक स्वीकार्य व्यापार बंद है ... यही कारण है कि हम कर रहे हैं कंसोल के कोड को लगातार आधुनिक C ++ में अपग्रेड करना।


6

आप सही हैं MacOSX के मूल में ऑब्जेक्टिव-सी है।

विंडोज सी ++

लिनक्स सी

स्क्रिप्टिंग भाषाओं के बारे में, नहीं, वे बहुत उच्च स्तर पर हैं।


7
सी में विंडोज: कर्नेल, ड्राइवर, एपीआई। C ++ में केवल सिस्टम एप्लिकेशन और टूल, मुझे लगता है। इसलिए यह अधिक स्पष्ट है कि सिर्फ C
abatishchev

5

मैंने पढ़ा है या सुना है कि मैक ओएस एक्स ज्यादातर निचले स्तर के कुछ हिस्सों के साथ ऑब्जेक्टिव-सी में लिखा जाता है, जैसे कि कर्नेल, और सी में लिखे हार्डवेयर डिवाइस ड्राइवर। मेरा मानना ​​है कि ऐप्पल अपने कुत्ते के भोजन को खाते हैं ", जिसका अर्थ है कि वे अपने स्वयं के Xcode डेवलपर टूल का उपयोग करके मैक ओएस एक्स लिखते हैं । जीसीसी (GNU संकलन संग्रह) संकलक-लिंकर यूनिक्स कमांड लाइन उपकरण है जो Xcode के अधिकांश के लिए प्रयोग किया जाता है इसके संकलन और / या निष्पादनयोग्य को जोड़ने। अन्य संभावित भाषाओं में, मुझे पता है कि GCC C, उद्देश्य-C, C ++ और ऑब्जेक्टिव-C ++ भाषाओं से स्रोत कोड संकलित करता है।


4

लिनक्स कर्नेल ज्यादातर C (और थोड़ी असेंबली भाषा में लिखा जाता है, मैं कल्पना करूँगा), लेकिन कुछ महत्वपूर्ण यूजरस्पेस यूटिलिटीज (प्रोग्राम्स) बैश स्क्रिप्टिंग भाषा में लिखी गई शेल स्क्रिप्ट हैं। इसके अलावा, यह "लिनक्स" को परिभाषित करने के लिए कठिन है क्योंकि आप मूल रूप से बिट्स और टुकड़ों को चुनकर और उन्हें एक साथ रखकर लिनक्स सिस्टम का निर्माण करते हैं, और एक व्यक्तिगत लिनक्स उपयोगकर्ता क्या चाहता है, इसके आधार पर आप इसमें किसी भी भाषा को शामिल कर सकते हैं। (जैसा कि पॉल ने कहा, पायथन और सी ++ महत्वपूर्ण भूमिका निभाते हैं)


3

मैक ओएस एक्स के कोर के बारे में एक अतिरिक्त के रूप में, फाइंडर स्नो लेपर्ड से पहले ऑब्जेक्टिव-सी में नहीं लिखा गया था। स्नो लेपर्ड में इसे कोको, ऑब्जेक्टिव-सी में लिखा गया था



1

विंडोज स्पष्ट रूप से C # (!) में नहीं लिखा गया है

बस विंडोज का स्रोत कोड देखें और आप देखेंगे ...


36
"विंडोज का स्रोत कोड देखें" यदि आप उन कुछ में से एक हैं जिन्हें अनुमति दी जाती है / जो करने में सक्षम हैं ...
जोचिम सॉर

1
Torrents में विंडोज स्रोत कोड के बहुत सारे भाग हैं, इसकी कुछ समीक्षाएं भी हैं
abatishchev

4
विंडोज कोड के कुछ साल पहले लीक हो गए थे। उदाहरण के लिए देखें यह पुराना धागा: < kuro5hin.org/story/2004/2/15/71552/7795 >। :)
खोलना
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.