एंड्रॉइड पर कार्यात्मक भाषाएं कितना अच्छा प्रदर्शन करती हैं?


10

यह इस सवाल का एक विशेष मामला है जो मुझे लगता है कि विशेष रूप से प्रासंगिक है।

मैं एंड्रॉइड के लिए एक गेम पर काम कर रहा हूं, और मैं libgdx के साथ स्काला का उपयोग करने की योजना बना रहा हूं। मैं एक परफॉर्मेंट गेम बनाने की योजना बना रहा हूं, लेकिन जरूरी नहीं कि यह हाइपर-परफॉर्मेंट गेम हो। मैंने कचरा संग्रह पर libgdx के दस्तावेज देखे , और इससे मुझे लगता है:

  1. कार्यात्मक प्रोग्रामिंग का अर्थ बहुत सारी अपरिवर्तनीय वस्तुओं से है।
  2. इसलिए, किसी ऑब्जेक्ट को म्यूट करने के लिए एक नई ऑब्जेक्ट बनाने की आवश्यकता होती है।
  3. इस प्रकार, बहुत सी वस्तुएं कचरा एकत्र कर लेती हैं, जो प्रदर्शन को खराब कर देती हैं।

क्या यह एक अचूक समस्या है? क्या एंड्रॉइड पर कार्यात्मक शैली के साथ कोई अन्य महत्वपूर्ण समस्याएं हैं?

जवाबों:


3

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


2

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

एंड्रॉइड के लिए सबसे अच्छा प्रदर्शन करने वाली कार्यात्मक भाषा अभी भी जावा या सी ++ से भी बदतर विकास का अनुभव देगी। इसलिए नहीं कि वे चारों ओर बेहतर भाषा हैं, बल्कि इसलिए कि वे विशिष्ट कार्य के लिए बेहतर हैं। नौकरी के लिए सही उपकरण और वह सब।

यह मोबाइल, पीसी, कंसोल और इतने पर सच है। कोई भी खेल के लिए कार्यात्मक भाषाओं का उपयोग नहीं करता है। शरारती डॉग स्क्रिप्टिंग के लिए LISP का उपयोग करता है , लेकिन कोर गेम कोड का नहीं। वे नहीं कर सकते। अगर वे कोशिश करते हैं तो यह काम नहीं करेगा।

निकटतम अधिकांश लोगों को शेड प्राप्त होते हैं, जो कुछ मायनों में कार्यात्मक हैं, लेकिन एचएलएसएल या जीएलएसएल जैसी अत्यधिक प्रक्रियात्मक भाषाओं में लिखे गए हैं।


> जुआ खेलने के लिए? कार्यात्मक भाषाओं से बचें। दिलचस्प है कि 2010 Google एआई चैलेंज एक लिस्प बॉट द्वारा जीता गया था। खेल लिखने के लिए अच्छा नहीं हो सकता है, लेकिन जब यह उन्हें खेलने की बात आती है, तो यह स्पष्ट रूप से बहुत आसान है। semanticweb.com/…

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

2
For gaming? Avoid functional languages. Their entire paradigm fails to mesh well with games.वास्तव में मैंने हाई प्रोफाइल गेम डेवलपर्स के कुछ लेख पढ़े हैं जो कार्यात्मक प्रोग्रामिंग में एक अंतरंगता व्यक्त करते हैं। टिम स्वीनी scribd.com/doc/5687// द्वारा एक था और जॉन कार्मैक को कार्यात्मक भाषाओं के मूल्यांकन में एक सक्रिय अंतरंगता प्रतीत होती है और वर्तमान में हास्केल में वोल्फेनस्टीन 3 डी का एक पोर्ट कर रहा है, smallurl.com/coczx57u
जेम्स मैकमोहन

क्या आपके पास शरारती कुत्ते के लिए केवल स्क्रिप्टिंग के लिए लिस्प का उपयोग करने के लिए प्रशस्ति पत्र है? मैं इस धारणा के तहत था कि उनके पास लिस्प की घर की बोली में एक कस्टम था, जिसमें एक कस्टम कंपाइलर PS2 हार्डवेयर को लक्षित किया गया था और उन्होंने इसमें अधिकांश जावा और डेक्सटर श्रृंखला लिखी थी। संपादित करें: कोई बात नहीं, यह मिला, gamasutra.com/view/feature/131394/… Practically all of the run-time code (approximately half a million lines of source code) was written in GOAL (Game Object Assembly Lisp)
जेम्स मैकमोहन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.