2012-01-09 13 views
13

के साथ प्रतिस्थापित करें मैंने हाल ही में इस प्रश्न https://softwareengineering.stackexchange.com/questions/129076/go-instead-of-c-c-with-cgo से पूछा और कुछ बहुत ही रोचक इनपुट प्राप्त किया। हालांकि मेरे प्रश्न में एक गलती है: मुझे लगता है कि सीओ ++ कोड तक पहुंचने के लिए कागो का भी इस्तेमाल किया जा सकता है लेकिन यह संभव नहीं है। इसके बजाय आपको SWIG का उपयोग करने की आवश्यकता है।सी ++ को + स्विग

जाने फैक कहते हैं विदेशी समारोह इंटरफेस "सीजीओ कार्यक्रम एक के लिए तंत्र प्रदान करता है"

मेरे सवाल "गो कोड से सी पुस्तकालयों के सुरक्षित बुला अनुमति देने के लिए बड़ा घूँट सी ++ पुस्तकालयों के लिए यह क्षमता प्रदान करता है।।": क्या उच्च स्तरीय सी ++ ढांचे तक पहुंचना संभव है जैसे कि क्यूटी के साथ SWIG + Go और उत्पादक प्राप्त करें? मैं सी ++ पुस्तकालयों का उपयोग करने के लिए "स्क्रिप्टिंग भाषा" के रूप में गो का उपयोग करना चाहता हूं।

क्या आपके पास जाने और स्विग के साथ कोई अनुभव है? क्या मुझे परेशानियों के बारे में पता होना चाहिए?

अद्यतन/उत्तर: मैं आईआरसी पर इस पूछा है भी और मुझे लगता है कि सवाल हल किया जाता है:

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

आप में से जो लोग गुई प्रोग्रामिंग के लिए यहां आए थे वे शायद wxwidgets के go-gtk या go version को आज़मा सकते हैं।

+2

यह स्टैक ओवरफ्लो पर संबंधित है। बंद/स्थानांतरित करने के लिए वोट दिया। –

+2

यह मजाकिया है: सबसे पहले मैंने http://programmers.stackexchange.com/questions/129076/go-instead-of-c-c-with-cgo stackoverflow पर पूछा और प्रोग्रामर.स्टैक एक्सचेंज में ले जाया गया। अब अद्यतन प्रश्न प्रोग्रामर से यहां वापस ले जाया गया है। – lhk

+4

मुझे लगता है कि यह बेतुका है कि कोई इस प्रश्न को प्रोग्रामर को माइग्रेट करना चाहता था। मुझे लगता है कि यह बिल्कुल सही तरह का सवाल है कि स्टैक ओवरफ्लो का मतलब है। क्या मै गलत हु? –

उत्तर

5

क्या यह संभव है? हाँ।

क्या यह समय की एक छोटी अवधि में किया जा सकता है? सं।

यदि आप वापस जाएं और उन अन्य परियोजनाओं को देखें जो बड़े ढांचे को ले चुके हैं और उस पर एक अमूर्त परत डालने का प्रयास किया है, तो आप पाएंगे कि अधिकांश "अपूर्ण" हैं। आप शायद काफी अच्छी शुरुआत कर सकते हैं और कुछ शुरुआती रैपरों को जगह में ले सकते हैं, लेकिन आम तौर पर सरल मामलों को हल करने के लिए काम करने में भी समय लगता है जब बहुत से अंतर्निहित कोड लपेटने के लिए होते हैं, यहां तक ​​कि स्वचालित उपकरण (जो मदद करते हैं, लेकिन हैं) कभी पूरा समाधान नहीं)। और फिर ... आप शेष 10% तक पहुंच जाते हैं जो आपको हमेशा के लिए ले जाएगा (ठीक है, कम से कम वास्तव में वास्तव में लंबे समय तक)। और उसके बाद सोचें कि यह पहली जगह में एक बदलती लक्ष्य है। क्यूटी, उदाहरण के लिए, अगली बड़ी पुनर्लेख जारी करने जा रहा है।

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

+1

+1 और उत्तर के रूप में स्वीकार किया गया। पहले दो वाक्यों में स्टैक ओवरफ्लो पर आधा प्रश्नों का अच्छा जवाब होने की संभावना है;) – lhk

+0

हा! (बीटीडब्ल्यू, आपने इसे वास्तव में एक उत्तर के रूप में स्वीकार नहीं किया ...) –

2

इस मुद्दे पर एक प्रासंगिक अद्यतन: अब this CL के साथ कार्गो का उपयोग कर सी ++ के साथ बातचीत करना संभव है, जिसे गो 1.2 के लिए विलय किया गया है। हालांकि, यह सी-जैसे फ़ंक्शंस कॉल तक सीमित है, और कक्षाएं, विधियां और सी ++ उपहार समर्थित नहीं हैं (फिर भी, मुझे उम्मीद है)।

+0

दिलचस्प, जानकारी के लिए धन्यवाद – lhk

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