ऐसा लगता है कि अधिकांश सामान्य वेब ब्राउज़र (फ़ायरफ़ॉक्स, क्रोम, सफारी) C ++ का उपयोग करके विकसित किए गए हैं। वह कौन है?
ऐसा लगता है कि अधिकांश सामान्य वेब ब्राउज़र (फ़ायरफ़ॉक्स, क्रोम, सफारी) C ++ का उपयोग करके विकसित किए गए हैं। वह कौन है?
जवाबों:
सवाल पूछने का दूसरा तरीका यह है कि ब्राउज़र को किस तरह के समर्थन की आवश्यकता है? छोटी सूची है:
अधिकांश भाषाओं में कुछ प्रकार के पार्सिंग समर्थन होते हैं। आपके पास C, C ++, C #, Java, आदि के लिए पार्सर जनरेटर हैं। हालांकि, C और C ++ के बाकी विकल्पों पर काफी कुछ साल शुरू हैं, इसलिए एल्गोरिदम और कार्यान्वयन अधिक परिपक्व हैं। जावा में त्वरित ग्राफिक्स तक पहुंचना एक नहीं है, जब तक कि आपके पास इसे काम करने के लिए कुछ मूल एक्सटेंशन न हों। WPF on C # त्वरित ग्राफिक्स तक पहुँच प्रदान करता है, लेकिन तकनीक के साथ बनाया गया एक गंभीर ब्राउज़र होना बहुत नया है।
नेटवर्किंग वास्तव में जावा या C # पर C ++ चुनने के कारणों में से सबसे कम है। इसका कारण यह है कि शेष प्रसंस्करण उस पृष्ठ को प्रदर्शित करने की तुलना में संचार कई गुना धीमा है। तार की कच्ची गति सीमित कारक है। जावा और C # दोनों में गैर-अवरुद्ध IO समर्थन है, जैसा कि C ++ करता है। इसलिए वास्तव में इस क्षेत्र में कोई स्पष्ट विजेता नहीं है।
जावा क्यों नहीं? क्या आपने कभी जावा के साथ UI बनाने की कोशिश की है? यह वहाँ से बाहर कुछ और की तुलना में बोझिल और धीमा लगता है, क्योंकि यह है। कोई त्वरित ग्राफिक्स भी यहाँ एक बड़ा नकारात्मक नहीं है। जावा का सैंडबॉक्सिंग वास्तव में अच्छा है, और अगर यह सही तरीके से उपयोग किया जाता है, तो एक ब्राउज़र की सुरक्षा को बेहतर बनाने में मदद कर सकता है, लेकिन यह कॉन्फ़िगर करने और काम करने के लिए एक दर्द है। अधिकांश आधुनिक ब्राउज़रों के पीछे ग्राफिक्स प्रारूप समर्थन लैग्स का उल्लेख नहीं है।
C # क्यों नहीं? यदि आपका एकमात्र लक्ष्य विंडोज है, तो C # वास्तव में एक अच्छा प्रतिनिधित्व कर सकता है। समस्या तब आती है जब आप किसी और चीज का समर्थन करना चाहते हैं। मोनो को इस कार्य के लिए पर्याप्त रूप से क्रॉस प्लेटफॉर्म माना जाता है - विशेष रूप से त्वरित ग्राफिक्स समर्थन और WPF के साथ। कौन जानता है कि इसे बदलने में कितना समय लगेगा।
सी क्यों नहीं? वहाँ बस के बारे में हर प्लेटफॉर्म के लिए एक सी संकलक है (एम्बेडेड उपकरणों सहित)। हालाँकि, ऐसा बहुत कुछ है जो C आपके लिए नहीं करता है कि आपको इसके बारे में अतिरिक्त सतर्क रहना होगा। आपके पास एपीआई के सभी निम्नतम स्तरों तक पहुंच है, लेकिन अधिकांश सी डेवलपर्स जीयूआई नहीं करते हैं। यहां तक कि सी GUI लाइब्रेरीज़ को ऑब्जेक्ट ओरिएंटेड तरीके से लिखा जाता है। जैसे ही आप यूआई बात करना शुरू करते हैं, एक वस्तु उन्मुख भाषा बेहतर समझ बनाने लगती है।
उद्देश्य सी क्यों नहीं? यदि आपका एकमात्र लक्ष्य Apple है, तो यह बहुत मायने रखता है। हालांकि, अधिकांश डेवलपर्स ऑब्जेक्टिव-सी को नहीं जानते हैं, और इसे सीखने का एकमात्र कारण NeXT या Apple बॉक्स पर काम करना है। सुनिश्चित करें कि आप किसी भी सी-लाइब्रेरी का उपयोग ऑब्जेक्टिव-सी के साथ कर सकते हैं, और कई प्लेटफार्मों के लिए कंपाइलर हैं, लेकिन लोगों को इस पर काम करना मुश्किल होगा। कौन जाने? हो सकता है कि Apple इस कथित कमी को चारों ओर मोड़ दे।
C ++ क्यों? वहाँ बाहर बस के बारे में हर मंच के लिए एक सी ++ संकलक है। लगभग हर GUI लाइब्रेरी में C ++ इंटरफ़ेस है, कभी-कभी यह बेहतर होता है और कभी-कभी यह बस अलग होता है। उदाहरण के लिए, Microsoft का ATL win32 C फ़ंक्शन कॉल या MFC लाइब्रेरी से बहुत बेहतर है। यूनिक्स पर GTK के लिए C ++ रैपर हैं, और मुझे आश्चर्य होगा कि अगर किसी के पास Apple के ऑब्जेक्टिव-सी GUI लाइब्रेरी के आसपास C ++ रैपर नहीं था। जावा या C # की तुलना में C ++ में प्रक्रिया प्रबंधन आसान है (उन विवरणों को आपके लिए अलग कर दिया गया है)। यह माना जाता है कि यह गति कच्चे त्वरण की तुलना में हार्डवेयर त्वरण से अधिक होती है। C ++ आपके लिए कच्चे C (जैसे बंधे हुए तार) की तुलना में अधिक चीजों का ध्यान रखता है, लेकिन फिर भी आपको चीजों को ट्विस्ट करने की स्वतंत्रता देता है।
कुछ समय के लिए, C ++ विकल्पों को खत्म करता है।
मैंने इस बारे में एक उपन्यास लिखने का फैसला किया है इस उम्मीद में कि लोग इस पर प्रकाश डालेंगे और मुझे उभारेंगे। नहीं, नहीं, बस मजाक कर रहे हैं! मैंने हर शब्द को झेला। हर शब्द, मैं आपको बताता हूं!
सभी प्रमुख वेब ब्राउज़र 90 के दशक में अपने मूल का पता लगा सकते हैं। कोनेकर सफारी और क्रोम बन गए; नेटस्केप फ़ायरफ़ॉक्स बन गया; IE और ओपेरा अभी भी IE और ओपेरा हैं। इन ब्राउज़रों में सभी 15 साल का सिर होता है।
मेरा सुझाव है कि आप एक स्वीकार्य क्रॉस-प्लेटफ़ॉर्म (विंडोज / मैक / यूनिक्स और इससे भी बदतर) भाषा का नाम देने का प्रयास करें जो 1995 के आसपास उपलब्ध थी जब आधुनिक ब्राउज़र की उत्पत्ति हुई थी। C / C ++ में कोर का निर्माण करने के लिए, आपको एक कंपाइलर और प्लेटफ़ॉर्म लाइब्रेरी को बनाना या खरीदना और बदलना होगा।
बस मज़े के लिए, चलो आज समस्या के बारे में सोचते हैं। हां, विकल्प हैं, लेकिन अभी भी बड़ी समस्याएं हैं।
भाषा विकल्प कम से कम इन समस्याओं को प्रस्तुत करता है:
आपको ऐसे लोग कहां मिलते हैं जो भाषा जानते हैं या इसे सीख सकते हैं? यह OCaml, F #, Haskell, Common Lisp और D जैसी भाषाओं के लिए एक बाधा है, जो तेज़ और उच्च-स्तरीय हैं जो किसी ब्राउज़र को अच्छी तरह से लिखने के लिए पर्याप्त हैं, लेकिन उनके कुछ अनुयायी हैं (10k-100k रेंज में, हो सकता है कि आप उदारतापूर्वक सभी शौक और शिक्षाविदों की गणना करें।
उपरोक्त कार्गो-पंथ उत्तर के लिए कोरोलरी:
यहां तक कि आधुनिक समय में, आपको पृष्ठों को प्रस्तुत करने और जावास्क्रिप्ट चलाने के गहन गहन भागों के लिए एक काफी तेज भाषा की आवश्यकता है। आप GUI तत्वों के निर्माण के लिए एक उच्च-स्तरीय भाषा के साथ पूरक करने का विकल्प चुन सकते हैं, आदि (जैसे सी ++ और जावास्क्रिप्ट का फ़ायरफ़ॉक्स दृष्टिकोण) लेकिन आपको भाषाओं के बीच घनिष्ठ एकीकरण करना होगा; आप बस "ठीक है, C # और Lua" नहीं कह सकते। जब तक आप आधार भाषा के रूप में C या C ++ नहीं चुनते, आपको संभवतः उस पुल का निर्माण और डीबग करना होगा।
क्रॉस-प्लेटफॉर्म विकास कीड़े का एक और बैग है। आप C # या F # का उपयोग कर सकते हैं और भविष्य में GTK # और मोनो के जीवित और अच्छी तरह से अपनी उंगलियां पार कर सकते हैं। आप कॉमन लिस्प, हास्केल, ओकेमेल ... ... सौभाग्य पा सकते हैं, जो कि विंडोज और मैक और लिनक्स पर काम कर रहे हैं ।
उस सब के बाद, आपको एक बड़ी मात्रा में कार्यक्षमता का निर्माण करना होगा, इसलिए यदि आप एक निम्न-स्तरीय भाषा चुनते हैं, तो आपको पहले की तुलना में कोडर की भी एक समान सेना की आवश्यकता होती है। ध्यान दें कि किसी ने वास्तव में लगभग पंद्रह वर्षों में खरोंच से एक ब्राउज़र नहीं बनाया है। यह आंशिक रूप से है क्योंकि (आश्चर्य!) यह कठिन है।
विशेष रूप से, एक जावास्क्रिप्ट दुभाषिया होने में समस्या 3 (एक प्राप्त करें) या समस्या 4 (एक का निर्माण) है।
यदि आपने आज (2011 की शुरुआत में) एक तीन-प्लेटफ़ॉर्म (विंडोज / मैक / * निक्स) ब्राउज़र विकसित किया, तो कुछ विकल्प क्या हैं?
यदि हम अगले कुछ वर्षों में एक और प्रमुख ब्राउज़र वृद्धि देखते हैं, तो मुझे यकीन है कि यह सी या सी ++ और एक गतिशील भाषा (जैसे फ़ायरफ़ॉक्स) में लिखा जाएगा, चाहे खुला स्रोत या मालिकाना।
संपादित करें (३१ जुलाई २०१३) : हैकर न्यूज़ पर टिप्पणी करने वालों का कहना है कि यह रस्ट एंड गो (विशेष रूप से मेरे उत्तर के संबंध में नहीं) का उल्लेख करता है, जो "विविध उपवास" बाल्टी में अस्पष्ट रूप से आते हैं। भाषाओं की इस सूची को समतावादी और अद्यतित रखने की कोशिश एक हारी हुई लड़ाई होगी, इसलिए इसके बजाय मैं इसे लिखने और इसे छोड़ने के समय के रूप में प्रतिनिधि नमूना कह रहा हूं।
गति
जैसा कि यह बदसूरत है, C ++ अभी भी वही है जो आप तब उपयोग करते हैं जब आप एक तेज़ एप्लिकेशन और कोड पर पूर्ण नियंत्रण चाहते हैं।
यही कारण है कि गेम, नॉन-कोर पार्ट्स (जैसे फ़ाइल इंपोर्टर्स) ऑफ़िस, और अधिक अभी भी C ++ में लिखे गए हैं।
MSalters से प्रतिक्रिया शामिल करने के लिए संपादित
मैं केवल अनुमान लगा सकता हूं, लेकिन आप ऐसे सॉफ्टवेयर उत्पादों का उल्लेख कर रहे हैं जो कई प्लेटफार्मों को लक्षित करते हैं, और सी ++ को किसी भी मंच पर संकलित किया जा सकता है।
(मैं फ़ायरफ़ॉक्स पर लगभग पाँच वर्षों से काम कर रहा हूँ।)
प्रश्नकर्ता सही है कि फ़ायरफ़ॉक्स का बहुत सारा कोड C ++ है, और वास्तव में C ++ बहुमत है यदि आप कोड की पंक्तियों द्वारा गणना करते हैं (हालांकि यह पूरी कहानी नहीं बताता है, क्योंकि हमारे पास बहुत सारे जावास्क्रिप्ट हैं, और JS अधिक है C ++ से संक्षिप्त)।
लेकिन वास्तव में, फ़ायरफ़ॉक्स बहुत अलग-अलग भाषाओं में लिखा गया है:
मुझे यकीन है कि कुछ भूल रहा हूँ।
यह सूची महत्वपूर्ण है क्योंकि यह अविश्वसनीय जटिलता पर संकेत देती है जो वेब ब्राउज़र के पीछे बैठती है।
हां, फ़ायरफ़ॉक्स में बहुत सी + + कोड है, और हाँ, इस तथ्य के साथ कुछ करना है कि नेटस्केप की स्थापना के समय सी ++ इस तरह की सबसे अच्छी भाषा थी। लेकिन मैं यह भी मानता हूं कि हम जो करते हैं, उसके लिए आज कोई बेहतर भाषा नहीं है।
किसी अन्य भाषा में पुस्तकालयों का एक पारिस्थितिकी तंत्र उतना मजबूत नहीं है (हम बाहरी कोड पर बहुत अधिक भरोसा करते हैं)। कुछ अन्य भाषाएं आपको C ++ की तरह पूर्ण-स्टैक नियंत्रण प्रदान करती हैं (हम नियमित रूप से हमारे कस्टम हीप एलोकेटर को ट्वीक करते हैं और सभी प्रकार की मेमोरी-असुरक्षित चीजों को तेज या कम मेमोरी का उपयोग करने के लिए करते हैं)। कुछ अन्य भाषाओं ने आपको एक मानक तरीके से अधिकांश पुस्तकालय को फिर से लागू करने दिया (हमारे पास हमारे स्वयं के तार और संग्रह कार्यान्वयन हैं, जो हमारी आवश्यकताओं के अनुरूप हैं)। कुछ अन्य भाषाओं में आप अपने स्वयं के कचरा संग्रहकर्ता को लागू कर सकते हैं। और इसी तरह।
हालांकि C ++ हम क्या करते हैं, इसके लिए स्पष्ट पसंद है, जो लोग सुझाव देते हैं कि हम जावा में एक ब्राउज़र लिख सकते हैं और यदि आवश्यक हो तो किसी चीज़ पर अपने जेवीएम को लिख सकते हैं। यह अनिवार्य रूप से हम क्या करते हैं, लेकिन जावा के बजाय जावास्क्रिप्ट के साथ। बेशक, अधिकांश ब्राउज़र जावास्क्रिप्ट में नहीं लिखे जाते हैं। लेकिन एक आश्चर्यजनक राशि है।
ठीक है, आप प्राप्त करने के लिए उन उत्पादों सीधे के डेवलपर्स पूछना होगा जवाब है, लेकिन मुझे लगता है यह अपनेपन का एक संयोजन है (के रूप में करने का विरोध किया बाईटकोड एक देशी बाइनरी संकलन), प्रदर्शन, और (यह क्या उन डेवलपर्स सबसे अच्छा पता था कि है) उपकरण (सी, सी ++ जैसी भाषाओं की तुलना में एसटीएल जैसे अच्छे श्रम-बचत वाले गैजेट से भरा है)।
प्रत्येक ब्राउज़र में कुछ इतिहास होता है जिसने भाषा की पसंद को प्रभावित किया है।
उदाहरण के लिए, क्रोम और सफारी दोनों ही WebKit पर आधारित हैं, जिसका मूल KDE प्रोजेक्ट के KHTML भाग में है। KDE मूल रूप से Qt GUI टूलकिट के प्रदर्शन के रूप में (भाग में) बनाया गया था, इसलिए KDE, कुल मिलाकर, C ++ प्रोजेक्ट है। केडीई के सभी नए प्रोजेक्ट उस समय पूरी तरह से C ++ में लिखे गए थे, इसलिए यह KHTML के लिए एक तार्किक विकल्प था। इसके बाद से अन्य GUI टूलकिट का उपयोग करने के लिए पोर्ट किया गया है।
ओपेरा का प्रेस्टो इंजन प्रदर्शन और छोटे बाइनरी आकार को ध्यान में रखकर लिखा गया था: सी ++ तार्किक विकल्प था।
Microsoft के IE को ActiveX घटकों के संग्रह के रूप में लिखा गया था, जिसे COM बाइंडिंग वाली किसी भी भाषा में लिखा जा सकता था, लेकिन संभवतः C ++ के सबसेट में लिखा गया था, क्योंकि उनके कोडबेस का अधिकांश हिस्सा पहले से ही उस भाषा में लिखा गया है।
नेटस्केप के मोज़िला को C ++ संभावना में लिखा गया था क्योंकि पोर्टेबिलिटी उनकी एक प्रमुख चिंता थी। C और C ++ कंपाइलर (वस्तुतः) सर्वव्यापी हैं, और इसलिए यह एक तार्किक विकल्प था।
इन विकल्पों का कोई अंतर्निहित तकनीकी कारण नहीं है । यह "उस समय एक अच्छे विचार की तरह लग रहा था।"
C और C ++ में नेटवर्किंग करना आसान है, क्योंकि यदि आप नहीं चाहते हैं तो आपको पुस्तकालयों का उपयोग नहीं करना है। मुझे संदेह है कि C ++ पसंद की भाषा है क्योंकि यह C के फायदों की अनुमति देता है:
OOP के लाभों के साथ युग्मित:
जब ब्राउज़रों के पहले दौर के लिए कोड की पहली पंक्तियाँ लिखी गईं, तो C # और Java मौजूद नहीं थे। न ही रूबी ने। पाइथन आसपास रहा हो सकता है, लेकिन यह अभी भी उस बिंदु पर एक छोटा होमब्रेव प्रोजेक्ट था।
असल में, वास्तव में C ++ के अलावा कोई अन्य विकल्प नहीं थे , जो कि एक ऐसे ब्राउज़र का निर्माण करने की अनुमति देता जो तेज और कई अलग-अलग प्लेटफार्मों पर चलता हो।
तो उन्हें C ++ में क्यों लिखा गया? क्योंकि वह एकमात्र ऐसी भाषा उपलब्ध थी, जिसमें उन्हें लिखा जा सकता था।
क्योंकि अन्य भाषाओं में लिखे गए ब्राउज़र (जैसे, हॉटजवा, जाहिर तौर पर जावा में पर्याप्त लिखे गए) को कभी भी बाजार में स्वीकृति / प्रवेश की कोई पर्याप्त डिग्री हासिल नहीं हुई है।
मैं वर्तमान यात्रा के बारे में कुछ नहीं कह सकता (या सबसे हाल ही में - HotJava के काफी समय से अपडेट नहीं किया गया है), लेकिन जब मैंने इसे आज़माया, तो बाजार में पैठ की कमी (कम से कम मुझे) बेहद आसान समझ में आई - यह काफी कुछ वेब पेजों के साथ बदसूरत, धीमा और असंगत था। अंततः, यह एक आधार पर आधारित प्रतीत होता है जो कभी भी बाहर नहीं निकलता है: कि वेब में मुख्य रूप से जावा एप्लेट शामिल होंगे, जिसमें HTML एक रैपर की तुलना में थोड़ा अधिक होता है, जो बताता है कि एप्लेट्स कहां प्रदर्शित होते हैं।
इसका एक हिस्सा संभवतः ऐतिहासिक भी है: अधिकांश बड़े वेब ब्राउज़र लंबे समय से हैं। जब वे पहली बार लिखे गए थे, तो परिदृश्य बहुत अलग था: सी ++ एक "गर्म" नई भाषा थी, इसलिए इसका उपयोग बहुत सारे नए विकास के लिए किया जा रहा था। ब्राउज़र्स आस-पास के सबसे अधिक उपयोग किए जाने वाले सॉफ़्टवेयर में से कुछ बन गए हैं, जबकि उस समय के कई अन्य लोग गुमनामी में बदल गए हैं।
मुझे लगता है कि भाषा के प्रदर्शित "रवैये" पर भी प्रभाव पड़ता है: सी ++ (जैसे सी पहले) ने हमेशा व्यावहारिकता और व्यावहारिकता पर जोर दिया है। यह मूल रवैया उन प्रोग्रामर्स को आकर्षित करता है जो व्यावहारिक भी हैं। कई अन्य भाषाएं लालित्य जैसी चीजों पर बहुत अधिक जोर देती हैं - और ऐसा करने में, वे प्रोग्रामर को आकर्षित करते हैं जो उसी तरह सोचते हैं। इसके साथ समस्या यह है कि मुझे "लिस्प प्रभाव" कहा जाता है। लक्षणों में शामिल हैं:
और भी हैं, लेकिन आप सामान्य विचार प्राप्त करते हैं (और हां, मैं कुछ हद तक अतिशयोक्ति कर रहा हूं - लेकिन केवल एक हद तक)। हां, आपको मिलने वाला कुछ कोड आश्चर्यजनक रूप से सुंदर होगा - लेकिन संभावना है कि यह छह महीने की देरी से हो, और ज्यादातर कोड के हर दूसरे टुकड़े के साथ असंगत हो (जो माना जाता है) प्रणाली है, और जब तक आप इसे प्राप्त नहीं करते तब तक एक बहुत ही उचित मौका कुछ और बदल गया है कि आप इसे बिल्कुल उपयोग नहीं कर सकते हैं।
ऐसी भाषाएं भी हैं जो निस्संदेह ठीक काम करेंगी, लेकिन (सही या गलत तरीके से) बस (या महत्वपूर्ण समय पर, नहीं है) किसी के लिए बाजार में हिस्सेदारी कभी भी उनमें एक ब्राउज़र लिखा है। एक पूर्ण ब्राउज़र के आकार और जटिलता को देखते हुए, यह बहुत से लोगों और एक को विकसित करने में काफी समय लेता है। उस तरह के निवेश से, बहुत से लोग विकास उपकरण जैसी चीजों के बारे में अपेक्षाकृत रूढ़िवादी हो जाते हैं।
gets
जो कि इस्तेमाल किया गया था , जो एक भयानक कार्य है, लेकिन शायद ही अपरिहार्य है (और निश्चित रूप से भाषा के लिए "मौलिक" या ऐसा कुछ भी नहीं)। दूसरा, C ++ किसी भी मामले में C जैसी भाषा नहीं है। तीसरा, ओपनबीएसडी काफी अच्छी तरह से प्रदर्शित करता है कि सुरक्षित सॉफ्टवेयर कर सकते हैं और सी में लिखा है। कोई "अंतर्निहित भाषा दोष" नहीं है जो सी में ठोस, सुरक्षित सॉफ्टवेयर को लिखने से रोकता है। ओपनबीएसडी का छोटा बाजार हिस्सा इंगित करता है कि सुरक्षा सबसे बड़ी चिंता का विषय नहीं है। लोग।
gets
इस तथ्य का एक सरल परिणाम है कि आप इसे उस बफ़र की लंबाई से नहीं गुज़ारते हैं जिसका आप उपयोग कर रहे हैं। इसके बारे में भाषा के लिए कुछ भी मौलिक नहीं है - आप पास्कल (और मेरे पास) में एक ही काम कर सकते हैं। एक बुद्धिमान हमलावर के खिलाफ सुरक्षित सॉफ्टवेयर लिखना भाषा की परवाह किए बिना आसान नहीं है। तीनों में अनुभव के आधार पर, यह पास्कल की तुलना में सी में थोड़ा आसान है, और सी में की तुलना में सी ++ में बहुत आसान है
कार्गो-पंथ प्रोग्रामिंग। यह धारणा कि "C ++ तेज है" अभी भी बाहर है, (इसके बुरी तरह से टूटी हुई वस्तु मॉडल जैसी खराब-विचार-रहित भाषा-स्तरीय विशेषताओं के बावजूद, जो चीजों को धीमा कर देती है) और लोग चाहते हैं कि उनके ब्राउज़र तेज़ हों, इसलिए वे C ++ में लिखते हैं ।
एक समझदार दुनिया में, नेटवर्क-सामना करने वाले सॉफ़्टवेयर लिखने वाले लोगों को एक ऐसी भाषा का उपयोग करने के बारे में सोचा जाएगा, जो सी के सभी अंतर्निहित सुरक्षा मुद्दों से दुखी होती है, और वास्तव में ऐसा करना आपराधिक लापरवाही का कार्य होगा। (अभी देखें कि पिछले 15 वर्षों में विभिन्न ब्राउज़रों के खिलाफ कितने बफर अतिप्रवाह कारनामे पाए गए हैं? ये कोडर कितने मिलियन डॉलर के नुकसान के लिए जिम्मेदार हैं?)
अन्य संकलित भाषाएं हैं जो तेजी से बायनेरिज़ बनाने में सक्षम हैं। समस्या यह है कि उनके पास C परिवार के समान प्रदर्शन नहीं है, और हम सभी को इसके लिए भुगतना पड़ता है।
मजेदार तथ्य: मॉरिस वर्म ने 1988 में इंटरनेट पर हिट किया, तब तक सी में OSes और नेटवर्क-फेसिंग सॉफ्टवेयर के साथ समस्याओं का निर्णायक प्रदर्शन किया, (जो आज भी हल नहीं हुए हैं, क्योंकि वे भाषा में निहित दोष हैं ,) Apple सबसे उन्नत ऑपरेटिंग सिस्टम जारी कर रहा था जिसे दुनिया ने अब तक देखा था, कई सालों के लिए, पास्कल में पहले से ही लिखा हुआ था।
नियंत्रण और पोर्टेबिलिटी
अधिकांश गति तर्क या तो किसी भी तरह से जा सकते हैं, लेकिन किसी भी चीज में जहां आपको सटीक नियंत्रण की आवश्यकता है कि कैसे कुछ किया जाता है उच्चतर स्तर की कई भाषाएं आपकी परेड पर बारिश करेंगी। इसके अपवाद हैं, लेकिन उनमें से अधिकांश क्रॉस-प्लेटफ़ॉर्म नहीं हैं जो एक ब्राउज़र की तरह किसी चीज़ को गिनने के लिए पर्याप्त हैं।
इसका सी ++ बनाम अन्य भाषाओं के गुणों से कोई लेना-देना नहीं है। आप निश्चित रूप से हास्केल जैसी भाषा में खरोंच से बेहतर ब्राउज़र लिख सकते हैं; एक परियोजना यह महत्वपूर्ण भी अपने स्वयं के JVM को लागू कर सकता है अगर उन्हें कुछ प्रदर्शन विशेषताओं की गारंटी देने की आवश्यकता होती है। जैसे कि फेसबुक ने अपने खुद के PHP कंपाइलर / ऑप्टिमाइज़र कैसे लिखे।
एक ब्राउज़र जो गैर-मानक मार्कअप पर टूट जाता है, बेकार से भी बदतर है। लिगेसी कॉम्पिटिटर्स इतना क्रिटिकल और इतना जटिल है कि फिर से लिखना एक विकल्प नहीं है। बहुत सारे पैसे और समय का निवेश युद्ध-परीक्षण सुरक्षा आदि में किया जाता है, आप बस उस निवेश को फेंक नहीं सकते। फिर, जैसे फेसबुक अभी भी PHP में कैसे लिखा जाता है।