2009-05-03 7 views
10

के रूप में पाइथन/रूबी मैं सोच रहा था कि क्यों गतिशील भाषाओं को पसंद की भाषा के रूप में स्मार्टफोन/मोबाइल डिवाइस ओएस लिखा नहीं जाता है? आईफोन उद्देश्य-सी का उपयोग करता है, Google एंड्रॉइड जावा का उपयोग करता है, विंडोज मोबाइल किसी भी तरह की .NET भाषा का उपयोग करता है।मोबाइल ओएस

पायथन, रूबी या किसी अन्य गतिशील भाषा में लिखे गए मोबाइल ओएस के पीछे तर्क क्या होगा? मैं समझता हूं कि कम स्तर पर वे इसे काट नहीं पाएंगे, लेकिन सी या सी ++ उस के लिए ठीक होंगे और पायथन, उदाहरण के लिए, इसके साथ बातचीत करने के लिए शीर्ष पर परत हो सकती है। मेरा मतलब है, ज्योथन या सीपीथन है।

मैं सोच रहा था कि आज के मोबाइल ओएस में हमें और अधिक गतिशील भाषा समर्थन क्यों नहीं दिख रहा है।

उत्तर

14

सामान्यतः यह सब कुछ है। मेमोरी, गति, और शायद सबसे महत्वपूर्ण प्रोग्रामर परिचितता। ऐप्पल के उद्देश्य सी में एक बड़ा निवेश है, जावा मूल रूप से सभी के द्वारा जाना जाता है, और सी # भी बहुत लोकप्रिय है। यदि आप बड़े पैमाने पर प्रोग्रामर अपील के लिए प्रयास कर रहे हैं तो यह कुछ लोकप्रिय के साथ शुरू करने के लिए समझ में आता है, भले ही यह उबाऊ हो।

वास्तव में इसे रोकने के लिए कोई तकनीकी आवश्यकता नहीं है। हम एक संपूर्ण रूबी स्टैक लिख सकते हैं और प्रोग्रामर को सी में धीमी बिट्स को फिर से कार्यान्वित करने दें और यह एक सौदा का बड़ा नहीं होगा। यह जो भी कंपनी मोबाइल ओएस बना रही है, उसके लिए यह एक निवेश होगा, और दिन के अंत में मुझे यकीन नहीं है कि वे इससे अधिक लाभ प्राप्त करते हैं।

अंत में, यह मोबाइल उपकरणों की शुरुआत है। 5 वर्षों में मैं बहुत व्यापक मोबाइल स्टैक देखने के लिए आश्चर्यचकित नहीं होगा।

0

मुझे संदेह है कि मूल कारण सुरक्षा और विश्वसनीयता का संयोजन है। आप नहीं चाहते कि कोई व्यक्ति फोन को हैक करने में आसानी से सक्षम हो, और आप जो स्थापित किया जा रहा है उस पर कुछ नियंत्रण रखना चाहते हैं।

+0

अप्रासंगिक - आप पाइथन मानक पुस्तकालयों को हटा सकते हैं और एक सबसेट बना सकते हैं जो सुरक्षित और भरोसेमंद है। – Francis

+2

ओह, मूर्ख मत बनो। पायथन मानक पुस्तकालयों को हटाएं और आप * अभी भी * अनियंत्रित, अवांछित कोड स्थापित कर सकते हैं। –

+0

तो क्या? अगर आपके पास कर्नेल को छूने के लिए कोई पुस्तकालय नहीं है, तो आप "फोन को हैक कैसे कर सकते हैं"? यदि आप प्रत्येक कोड को परीक्षण और नियंत्रित करना चाहते हैं, तो यह ऐप्पल की तरह डिजिटल हस्ताक्षर द्वारा प्रबंधित किया जाता है, इसलिए यह अभी भी भाषा से संबंधित नहीं है।दुभाषिया के खिलाफ कोड लिखकर – Francis

1

जेलब्रोकन आईफ़ोन में पाइथन स्थापित हो सकता है, और मैं वास्तव में अपने पर अक्सर पाइथन का उपयोग करता हूं।

1

मुझे लगता है कि प्रदर्शन चिंताओं का हिस्सा हो सकता है, लेकिन सभी कारणों से नहीं। मोबाइल उपकरणों के साथ काम करने के लिए बहुत शक्तिशाली हार्डवेयर नहीं है।

हालांकि मैं इस बारे में आंशिक रूप से अनिश्चित हूं।

0

मेमोरी भी एक महत्वपूर्ण कारक है। दुर्भाग्यवश, पाइथन में स्मृति खाने में आसान है।

1

सबसे अधिक दबाव वाले मामलों में से एक कचरा संग्रह है। कचरा संग्रह अक्सर एम्बेडेड मशीनों में अप्रत्याशित विराम पेश करता है जिसे कभी-कभी वास्तविक समय प्रदर्शन की आवश्यकता होती है।

यही कारण है कि एक जावा माइक्रो संस्करण है जिसमें एक अलग कचरा कलेक्टर है जो धीमे कार्यक्रम के बदले में विराम को कम करता है।

कचरा कलेक्टरों (जैसे सीपीथॉन में से एक) को रेफकाउंट करना भी रोकों से कम प्रवण होता है लेकिन कई नेस्टेड पॉइंटर्स (जैसे एक लिंक्ड सूची) के साथ डेटा हटा दिया जाता है तो विस्फोट हो सकता है।

+0

लेकिन आईफोन आपको बनाए रखने के लिए अपने स्वयं के "कचरा" का प्रबंधन करता है। आपको वास्तव में अपनी वस्तुओं को छोड़ना होगा या आप अपने खुद के रिसाव का कारण बनेंगे। – Tacoman667

+0

@Tacoman, जिसे संदर्भ गिनती कहा जाता है। आप इसे मैन्युअल रूप से कर रहे हैं, लेकिन इसे एक ही चीज़ के रूप में वर्गीकृत किया गया है। – Unknown

0

कई कारण हैं। उनमें से: इस तरह के सॉफ्टवेयर लॉक-इन रणनीतियों के रूप में

  • व्यावसायिक कारणों से,,
  • दक्षता: गतिशील भाषाओं आमतौर पर धीमी (माना जाता है और कुछ मामलों में वास्तव में धीमी है, या कम से कम करने के लिए एक सीमा प्रदान करते हैं आप कितनी अनुकूलन कर सकते हैं।एक मोबाइल डिवाइस पर, पीसी को अनुकूलित करने के लिए कोड को अनुकूलित करना अक्सर आवश्यक होता है), और अधिक मेमोरी का उपयोग करते हैं, जो सीमित मेमोरी और छोटे कैश वाले पोर्टेबल डिवाइस पर एक महत्वपूर्ण मुद्दा है,
  • विकास को सरल रखना: एक मंच कि अजगर और रूबी और जावा का कहना है कि बॉक्स से बाहर का समर्थन करता है:
    • काम प्रलेखन लिख सकते हैं और सहायता प्रदान करने के तीन बार का मतलब है,
    • तीन में विभाजित विकास के प्रयास; यह उपयोगी सामग्री के लिए समय लेता है वेब पर प्रकट करने और वहाँ कम डेवलपर्स जो अपने मंच पर आप के रूप में ही भाषा का प्रयोग कर रहे हैं,
    • इन सभी भाषाओं का समर्थन करने के लिए डिवाइस के बारे में अधिक भंडारण की आवश्यकता है,
  • प्रबंधन की जरूरत है आश्वस्त हों। मैंने हमेशा महसूस किया है कि जावा की योग्यता को गैर-तकनीकी दर्शकों को आसानी से समझाया जाता है। .NET और Obj-C क्रमश: माइक्रोसॉफ्ट और ऐप्पल प्लेटफार्म के लिए एक बहुत ही प्राकृतिक पसंद प्रतीत होता है।
2

प्रश्न के आधार के विपरीत: पहली मुख्यधारा मोबाइल उपकरणों में से एक Newton, जो अनुप्रयोग विकास के लिए NewtonScript कहा जाता है एक विशेष गतिशील भाषा का प्रयोग करने के लिए डिजाइन किया गया था। न्यूटन विकास पर्यावरण और भाषा ने अनुप्रयोगों के साथ मिलकर काम करना और जानकारी साझा करना विशेष रूप से आसान बना दिया - वर्तमान आईफोन अनुभव के लगभग ध्रुवीय विपरीत। हालांकि स्क्रैच से नए न्यूटन अनुप्रयोगों को लिखने वाले कई डेवलपर्स ने इसे बहुत पसंद किया - न्यूटनस्क्रिप्ट रूबी की तरह "महसूस करता है" - न्यूटन के कुछ प्रदर्शन मुद्दे थे और मौजूदा कोड का पोर्टिंग आसान नहीं था, इसके बाद ऐप्पल ने बाद में सी कोड को शामिल करने की क्षमता को जोड़ा एक न्यूटनस्क्रिप्ट कार्यक्रम। साथ ही, न्यूटन पर किसी की बौद्धिक संपदा की रक्षा करना बहुत मुश्किल था - अन्य डेवलपर्स ज्यादातर मामलों में आपके कोड के अंदर देख सकते थे और यहां तक ​​कि एक सुरक्षा दुःस्वप्न पर इसके बिट्स को ओवरराइड कर सकते थे।

न्यूटन एक व्यावसायिक विफलता थी।

पाम ने ऐप्पल के कुछ बेहतरीन विचारों को लिया - और उन पर सुधार किया - लेकिन समग्र सरलीकरण के हिस्से के रूप में गतिशील भाषा समर्थन को फेंक दिया जिससे अंततः पामोज़ ने मोबाइल बाजार हिस्सेदारी (कई वर्षों तक) को बहुमत प्राप्त किया मोबाइल सॉफ्टवेयर डेवलपर्स नए मंच पर आ गए।

कई कारण थे क्यों न्यूटन एक विफलता थी, लेकिन कुछ शायद NewtonScript दोषी ठहराते हैं। ऐप्पल आईफोन के साथ "अलग सोच रहा है", और शुरुआती निर्णयों में से एक ऐसा लगता है कि वे अपने मौजूदा कोर डेवलपर बेस से जितना संभव हो उतना लाभ उठा सकते हैं और लोगों को उद्देश्य सी में विकसित करना आसान बनाते हैं। अगर आईफोन आधिकारिक हो गतिशील भाषाओं के लिए समर्थन, यह एक सुरक्षित और उच्च प्रदर्शन मंच प्रदान करते हुए लंबे समय तक और सावधानीपूर्वक विचार करने के बाद बाद में अतिरिक्त होगा।

और 5 मिनट बाद वे दूसरों का पालन करेंगे। :-)

+1

न्यूटनस्क्रिप्ट उस समय एक हैंडहेल्ड डिवाइस के लिए बहुत सारे संसाधन (सीपीयू और मेमोरी) की आवश्यकता थी; हालांकि प्रदर्शन पूरी तरह से स्वीकार्य था। अंत में, संदेशपैड 2100 लगभग $ 1000 था, एक> 100 मेगाहट्र्ज स्ट्रॉन्ग्राम 4 एमबी रैम के साथ जबकि पाम पायलट बहुत सस्ता था, धीमी 68 के-व्युत्पन्न प्रोसेसर के साथ <1 एमबी रैम में भाग गया। आज मुख्यधारा की भाषाओं में, न्यूटनस्क्रिप्ट जावास्क्रिप्ट से सबसे अधिक संबंधित है - वे प्रोटोटाइप-आधारित दोनों हैं। खतरे/एंड्रॉइड प्लेटफ़ॉर्म शायद आज इस आदर्श के सबसे नज़दीक हैं, क्योंकि उनके दोनों जावा वीएम मेजबान पर प्रीप्रोसेसिंग चरण करते हैं और अपेक्षाकृत सरल हैं। –

+2

दरअसल, न्यूटनस्क्रिप्ट ऐप्पल के न्यूटन प्रोजेक्ट के लिए * दूसरी * भाषा थी: पहली बार मैकिंतोश कॉमन लिस्प में लागू किया गया था, पहले डायनायन [शायद गतिशील भाषा पर एक पन]। उस परियोजना को मार दिया गया था, जिसे कम अस्वीकार्य प्रदर्शन के साथ बदल दिया गया था। (मुझे न्यूटन को प्रोग्रामर के रूप में पसंद है, लेकिन मुझे यह भी स्वीकार करना है कि उपयोगकर्ता के लिए, यह बहुत धीमी थी।) समय बताएगा कि ऐप्पल के प्रतियोगियों अब ऐप्पल की गलती दोहरा रहे हैं या नहीं। –

+1

न्यूटनस्क्रिप्ट, विभेदक विरासत की विशेषताओं में से एक ने इस बहुत ही गतिशील, ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषा (जिसे बाइट कोड में भी संकलित किया जा सकता है) को बहुत _low_ स्मृति आवश्यकताओं के साथ काम करने की अनुमति दी। इसका मतलब था कि बच्चे/संबंधित वस्तुओं को केवल उस डेटा को स्टोर करने की आवश्यकता होती है जो माता-पिता/संबंधित वस्तुओं से अलग थी। बेशक, इस प्रदर्शन को कुछ प्रदर्शन मुद्दों पर लागू करने की खोज। [io] (http://iolanguage.com/), एक न्यूटनस्क्रिप्ट चचेरा भाई भी अलग-अलग विरासत लागू करता है। – morgant

0

वेबोस - पाम से नया ओएस, जो प्री पर शुरू होगा - क्या आपने जावास्क्रिप्ट में वेबकिट रनटाइम के खिलाफ ऐप्स लिख दिए हैं। समय बताएगा कि यह कितना सफल है, लेकिन मुझे संदेह है कि यह इस रास्ते से नीचे जाने वाला पहला व्यक्ति नहीं होगा। चूंकि मोबाइल डिवाइस अधिक शक्तिशाली हो जाते हैं, आप देखेंगे कि गतिशील भाषाएं अधिक प्रचलित हो जाएंगी।

2

मोबाइल उपकरणों पर कई भाषाओं की स्थिति प्रश्न से बेहतर है। जावा (अपने जे 2 एमई अवतार में) इन दिनों भी काफी सस्ते फोन में उपलब्ध है। सिम्बियन एस 60 आधिकारिक तौर पर Python, और Javascript for widgets का समर्थन करता है, और एक रूबी पोर्ट है हालांकि यह अभी भी काफी प्रयोगात्मक है। चार्ल्स न्यूटर ने getting JRuby running on Android के साथ प्रयोग किया है।rhomobile रूबी में एक ऐप को विकसित करने की अनुमति देने का दावा करता है जो पर सभी पर प्रमुख स्मार्टफोन ओएसई चलाएगा, हालांकि उस तरह के पोर्टेबिलिटी दावे का मतलब उन ऐप्स पर प्रतिबंधों का तात्पर्य है।

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

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

0

मेरे पाम एक Lua implementation है कि आप उचित GUIs करने की अनुमति देता है, एक काफी बेकार पुराने अजगर 1.5, एक superb Forth (जो आप संकलित क्षुधा का निर्माण करने के लिए अनुमति देता है) और एक Scheme कि copmlete जीयूआई देव के लिए अनुमति देता है। $ 350 फोन एक अमेरिका -

हाल एप्पल WWDC 2009 में, सिम्बियन गठबंधन एक घटना पहले दिन एक नि: शुल्क Nokia 5800 की चिढ़ाने के साथ एक बगल की इमारत में हर किसी विपणन पिच साथ दोपहर के भोजन के लिए यहां तक ​​कि बस आने के लिए की मेजबानी की। यह कार्यक्रम Ovi Store के लिए विकास करना था और उनके पास डेवलपर थे और दोपहर में एक प्रोग्रामिंग प्रतियोगिता थी।

सिम्बियन के विकास के लिए वे तीन भाषाओं में जावा, फ्लैश (लाइट) और Python थे। पायथन एकमात्र विकल्प है जो आपको डिवाइस or a PC पर काम करने की अनुमति देता है और इसमें ओपनजीएल ईएस और अन्य फोन सुविधाओं के साथ नमूने शामिल हैं।

एक उपयोगिता standalones कि स्टोर पर होस्ट किया जा सकता है में अजगर क्षुधा बंडल करने के साथ

, मैं कहेंगे अजगर S60 पर सही वहाँ ऊपर एक प्रतियोगी के रूप गंभीर गतिशील भाषा के लिए (अभी भी) प्रमुख मंच पर है।

0

एसएचआर नामक ओपनमोको फ्रीरुनर के लिए एक लिनक्स वितरण है। इसकी अधिकांश सेटिंग्स और ढांचे कोड पायथन में लिखा गया है और ... अच्छा, यह बहुत तेज़ नहीं है। यह सहनशील है, लेकिन शुरुआत से ही इसे वाला में फिर से लिखने की योजना बनाई गई थी।

दूसरी ओर, मेरे कुछ छोटे ऐप्स उपयोगकर्ता अनुप्रयोगों को विकसित करने के लिए पाइथन पर विचार करने के लिए पर्याप्त तेज़ी से काम करते हैं (बड़े स्टार्टअप समय वाले एकमात्र दोष के साथ)।

रिकॉर्ड के लिए: फ्रीरुनर में एआरएम-कुछ 400 मेगाहर्ट्ज और 128 एमबी रैम है। मुझे लगता है कि एक बार मोबाइल डिवाइस 1GHz पार करते हैं, पाइथन जैसी भाषा मध्य-स्तर की सामग्री के लिए भी तेज़ होगी (निम्न स्तर कर्नेल है)।

0

रोडोबाइल का ओपन सोर्स Rhodes फ्रेमवर्क आज प्रदान करता है। सभी स्मार्टफोन के लिए दुनिया का पहला रूबी कार्यान्वयन।