2010-05-17 19 views
5
  • क्या एक व्याख्याित प्रोग्रामिंग भाषा के मुख्य (केवल व्यवहार्य) कार्यान्वयन की गति आज एक मानदंड है?आज एक व्याख्या की गई भाषा कितनी तेजी से होनी चाहिए?

  • गति और अमूर्तता के बीच इष्टतम संतुलन क्या होगा?

  • क्या भाषाओं को स्क्रिप्टिंग करना पूरी तरह से प्रदर्शन के बारे में सभी विचारों को अनदेखा करना चाहिए और तेजी से विकास, पठनीयता आदि की अवधारणाओं का पालन करना चाहिए?

मैं क्योंकि मैं वर्तमान में कुछ प्रयोगात्मक भाषाओं और दुभाषियों

+0

हालांकि यह प्रश्न शायद थोड़ा सा व्यक्तिपरक है (मुझे लगता है कि यह पहले से अधिक समझा जा सकता है), मेरा मानना ​​है कि इसका मूल्य है और मैं फिर से खोलने के लिए वोट दूंगा। – Randolpho

+0

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

उत्तर

1

डिजाइनिंग कर रहा हूँ इस पूछ रहा हूँ के रूप में तेजी से डेवलपर के रूप में होना करने के लिए इसकी आवश्यकता है।

कोई नियम नहीं है, केवल फ़ीड करने की आवश्यकता है।

2

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

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

+0

दूसरी तरफ, हमारे उपयोगकर्ताओं को इंस्टॉल करने या मांगने के लिए कितने रन टाइम वातावरण हैं? –

+0

@ गिल्बर्ट ली ब्लैंक: ठीक है, यह "क्या हमें वास्तव में * एक और * भाषा चाहिए?" के अंतर्गत आता है छतरी, जो मैं सहमत हूं वह ऐसी चीज है जिसे हमेशा नई भाषा बनाने से पहले पूछा जाना चाहिए। प्रश्नकर्ता ने प्रयोगात्मक भाषाओं का उल्लेख किया, इसलिए मुझे लगता है कि वह एक ऐसी जगह देखता है जिसे भरने की जरूरत है, या शायद सीएस शिक्षा के हिस्से के रूप में व्यापार सीखने की कोशिश कर रहा है। – Randolpho

+0

विषय से बहुत दूर नहीं जाना है, लेकिन कई भाषाएं सामान्य रन टाइम वातावरण का उपयोग कर सकती हैं। विषय पर वापस आने के लिए, बाइटकोड उत्पन्न करने का एक विकल्प मौजूदा भाषा के लिए स्रोत कोड उत्पन्न करना है। हां, नई भाषा के साथ विकसित व्यक्ति के लिए अतिरिक्त कदम शामिल हैं। लेकिन अगर भाषा प्रयोगात्मक है, तो भाषा के साथ तेजी से विकास के समय भाषा के तेजी से विकास का व्यापार बंद है। –

0

इस तरह के किसी प्रश्न का कोई जवाब नहीं है। कोई भी उत्तर सभी संभावित उद्देश्यों और दर्शकों पर लागू नहीं हो सकता है।

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

0
  1. हाँ
  2. यह कैसे अपनी भाषा में इस्तेमाल किया जा करने का इरादा है पर निर्भर करता है।
  3. नहीं। ऐसा कोई कारण नहीं है कि कोई ऐसी पठनीय भाषा को डिज़ाइन नहीं कर सके जो तेजी से है ताकि प्रदर्शन को अनदेखा करने के लिए शायद ही कोई बहाना दिखाई दे।

आपको अपने प्रयोगों के लक्ष्यों के आधार पर अपने लिए इन प्रश्नों का उत्तर देना होगा।

0

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

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

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

2

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

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

+0

यह इस बात पर निर्भर करता है कि प्रश्न में व्याख्या की गई भाषा की अन्य भाषाएं किस प्रकार से बातचीत कर रही हैं। मैं सी ++ उपयोगकर्ताओं से जेएनआई में अपनी भाषा के साथ जुड़ने के लिए नहीं कहूंगा। – Puppy

+0

मैंने कंपाइलर्स लिखे हैं, और मुझे नहीं लगता कि * कोई * बैकएंड "तुच्छ" है, यहां तक ​​कि JVM भी। मुझे निश्चित रूप से विश्वास नहीं है कि आप मुफ्त में इंटरऑप प्राप्त करते हैं। (मुझे यह भी विश्वास नहीं है कि या तो .NET या JVM stdlibs "शानदार" हैं, लेकिन यह एक और कहानी है!) उदाहरण के लिए, मैं एक ("शुद्ध") कार्यात्मक भाषा पर काम कर रहा हूं जिसके लिए पूंछ-कॉल अनुकूलन की आवश्यकता होती है; मैं JVM को कैसे लक्षित करूं और प्रोग्रामर को मौजूदा जावा पुस्तकालयों का उपयोग करने की अनुमति दूंगा (जहां उत्परिवर्तन मूल अवधारणा है)? कहीं भी मुश्किल मुद्दे हैं। JVM (उदाहरण के लिए) काम कितनी अच्छी तरह से जावा से आपकी भाषा को बंद करने के तरीके से काफी सीधे संबंधित प्रतीत होता है। – Ken

+0

@ केन - सभी अच्छे अंक, लेकिन मैं जावा में मानक पुस्तकालयों का कहना चाहूंगा, और .NET विशेष रूप से उत्कृष्ट है, जो कुछ भी मैं जानता हूं उससे बेहतर है - जो आप उल्लेख करते हैं उसके बारे में सीमाओं के साथ। अब यह एफ # पूरी तरह से समर्थित .NET भाषा है, सीएलआर में अपरिवर्तनीय प्रकारों के लिए काफी कुछ समर्थन है। और निश्चित रूप से आयरनपीथन सीएलआर पर पाइथन को तेज (बेंचमार्क के आधार पर) लागू करता है, और मैं नहीं कहूंगा कि यह सी # के समान है। मुझे एक सप्ताहांत में सीएलआर पर किए गए खिलौने भाषाओं के कार्यान्वयन प्रतीत होते हैं, लेकिन निश्चित रूप से एक पूर्ण भाषा अधिक काम करेगी। – Eloff

0

मैं व्यक्तिगत रूप से एक महान एपीआई के साथ एक भाषा के लिए जाऊंगा। यदि आप लुआ को देखते हैं, तो लुआ सी कोड का 9 0% लोग सिर्फ बॉयलरप्लेट लिखते हैं। यदि एक धीमी भाषा, बहुत बेहतर सी ++ एपीआई के साथ आया, तो मैं उस पर एक पल में स्विच करूँगा।

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^