2010-08-18 18 views
10

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

मैं अपनी खुद की प्रोग्रामिंग भाषा लिखना नहीं चाहता हूं; मैं बस अपेक्षाकृत प्रसिद्ध भाषा लेना चाहता हूं कि उपयोगकर्ता फ़ंक्शन लिख सकते हैं, और उसके बाद उन कार्यों को कॉल करने में सक्षम हो सकते हैं/मेरे अनुप्रयोग से उन फ़ंक्शंस पैरामीटर को पास कर सकते हैं, जो सी

I में लिखा जाएगा। डी को किसी भी प्रकार के डेटा तक पहुंचने की इच्छा है, जो कि मेरे पास वापस लौटते हैं, सी

क्या किसी के पास एपीआई/लाइब्रेरी का उपयोग करने के लिए कोई सुझाव है, जो हल्के, अपेक्षाकृत पूर्ण-विशेषीकृत दोनों होंगे, और सी पुस्तकालय को समझने के लिए अपेक्षाकृत आसान या उपयोग करने में आसान है?

धन्यवाद!

+2

मुझे लुआ का उपयोग करके गैरी के मॉड के बारे में कुछ याद रखना याद है। क्या यह एक संभावना है? –

उत्तर

5

आप SpiderMonkey पर देखना चाहते हैं, जो आपको अपने सी प्रोग्राम में जावास्क्रिप्ट इंजन एम्बेड करने की अनुमति देगा।

+0

यह कमाल है, धन्यवाद! जेएसएपीआई दस्तावेज के माध्यम से चमक शुरू किया, और यह काफी अच्छा है! – FreeMemory

16

Lua एक लोकप्रिय विकल्प है।

3

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

2

यो आप हमेशा ch टूलकिट के साथ 'सी' का उपयोग कर सकते हैं।
जैसा कि आपने कहा था कि पाइथन अच्छा है, खासकर यदि आप boost :: पायथन रैपर का उपयोग कर सकते हैं।
एक और लोकप्रिय पसंद जावास्क्रिप्ट है, इसका उपयोग क्यूटी की स्क्रिप्टिंग सिस्टम

+0

सी, सी ++ नहीं। कोई बढ़ावा नहीं – nmichaels

1

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

आपने बाहरी पुस्तकालयों के बारे में कुछ भी नहीं कहा है। लुआ की तरह ये जावास्क्रिप्ट सिस्टम नग्न हैं। बाहरी शब्द के साथ संचार के लिए बहुत कुछ प्रदान नहीं किया गया है। यही कारण है कि इसके विपरीत रूबी के लिए और अजगर में वह जगह है जहाँ आप यह पढ़ साथ क्रम पुस्तकालय

प्रारंभ से कार्यों के zillions के साथ एक बैटरी शामिल प्रणाली मिलती है:

Why embed JavaScript?

How to embed the JavaScript engine

+0

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

2

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

इस के लिए लिस्प के फ्लेवर का उपयोग किया गया है (प्रसिद्ध रूप से gnu emacs में)।

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

2

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

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