क्या कोई भाषा है जो बेहतर वाक्य रचना के साथ C को ट्रांसपाइल करती है? [बन्द है]


19

CoffeeScript एक ऐसी भाषा है, जो रूबी से प्रेरित होकर, एक स्वच्छ वाक्यविन्यास के साथ जावास्क्रिप्ट पर स्थानांतरित होती है। क्या कोई समान भाषा है जो C से ट्रांसप्लइज़ होती है, जो प्रदर्शन पर समझौता किए बिना अधिक पठनीय कोड की अनुमति देती है? यदि ऐसा कुछ भी मौजूद नहीं है, तो क्या इसे न बनाने का एक अच्छा कारण है?


10
ध्यान दें, हालांकि, "सी का संकलन " मूल सी कार्यक्रमों के समान "तेज" का पर्याय नहीं है। जब कोई चीज C से संकलित होती है, तो वह अक्सर कोड को उत्पन्न करेगा (या पूरी तरह से) किसी भी सामान्य व्यक्ति के सी में जो कुछ भी लिखेगा उससे अलग। यह आसानी से आपके द्वारा लिखे जाने वाले हाथ की तुलना में आसानी से (या कभी-कभी तेज) हो सकता है।
जेरी कॉफिन

4
मुझे इनमें से किसी भी उत्तर के बारे में पसंद नहीं है, यह है कि वे पूरी तरह से अलग-अलग भाषाओं का प्रस्ताव करते हैं, जैसे कि वेला। CoffeeScript के बारे में बात यह है कि यह जावास्क्रिप्ट है, लेकिन एक अलग वाक्यविन्यास के साथ।
प्रो। फालकेन


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

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

जवाबों:


23

CoffeeScript एक बहुत ही सरल कारण के लिए जावास्क्रिप्ट को संकलित करता है, जावास्क्रिप्ट एक वास्तविक ग्राहक पक्ष भाषा है और यह ब्राउज़र विक्रेताओं को देशी रूप से CoffeeScript का समर्थन करने की उम्मीद करना अनुचित होगा, जब यह सब प्रदान करता है एक वैकल्पिक वाक्यविन्यास।

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

  1. GObject के लिए एक संकलक बनें ,
  2. देशी निष्पादक (मशीन के सी संकलक के माध्यम से) का निर्माण,
  3. स्वचालित संदर्भ गिनती, और
  4. अभी भी गनोम सी प्रोग्रामर के लिए सुलभ हो

GNOME एक पारंपरिक रूप से C ओरिएंटेड प्रोजेक्ट है और GObject विशेष रूप से C में लिखा गया है, Vala शायद GNOME डेवलपर्स के बीच बहुत प्यार नहीं पाती अगर यह मशीन कोड के लिए संकलित होता, भले ही यह मित्रवत प्रकृति (और वाक्यविन्यास) की हो। हर कोई वाक्य रचना को पसंद नहीं करता था, इस बिंदु पर कि एक और भाषा, जिन्न , उस पर सुधार करने के लिए बनाई गई थी।

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

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

लेकिन आम तौर पर, यह एक अच्छा विचार है कि सी, या किसी अन्य भाषा में अनुवाद करने वाली भाषा का निर्माण न करें, यदि आपके पास परिणामी कोड का कोई उपयोग नहीं है। अगर आप सी के साथ सामना नहीं कर सकते हैं, तो कई भाषाएँ हैं, बस एक दूसरे को चुनें। संयोगवश, Brontne Stroustrup, CFront द्वारा लिखित पहला C ++ कंपाइलर, C के साथ C से अनुवादक था, लेकिन इसका मुख्य कारण यह था कि एक नई भाषा के रूप में, C के साथ C को बूटस्ट्रैप करना असंभव था ।


3
निम भी है।
no --zɐɹƆ

स्विफ्ट C को भी कंपाइल कर सकता है।
क़ाज़ी इरफ़ान

9

मैं कुछ बिंदुओं को कवर करने जा रहा हूं यनीस रिज़ोस ने अपने अन्यथा महान जवाब में नहीं किया था।

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

कुछ कार्यान्वयन मुझे पता है कि ऐसा करते हैं:

  • C ++ (शुरुआती दिनों में कम से कम)
  • जीएचसी हास्केल (हालांकि मुख्य कोड जनरेटर सी-- है)
  • गैम्बिट / चिकन / बिग्लू योजना
  • ईसीएल (आम लिस्प)
  • पर्ल
  • वाला और जिन्न

मूल सी कार्यक्रमों के रूप में उपवास के रूप में

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


1
C, असेंबली से बहुत दूर है ...
Sarge Borsch

1
कुछ लोग सी को "उच्च स्तरीय कोडांतरक" मानते हैं। यह मशीन के बहुत करीब है, लेकिन निश्चित रूप से यह ऑपकोड का एक गुच्छा नहीं है।
डेस्ट्रॉमबर्ग

6

रॉक एक ooc संकलक है जो C99 स्रोत उत्पन्न करता है। OOC-लैंग वस्तुओं, प्रथम श्रेणी काम करता है, और गुलाबी इकसिंगों के साथ एक प्रोग्रामिंग भाषा है। OOC एक गतिशील-भाषा है और अब तक दूर चलता है। यह चापलूसी और धीमी सी कोड उत्पन्न करता है। आपको अपनी आवश्यकता के अनुसार अधिक संशोधित करने की आवश्यकता है। लेकिन यह एक अच्छी शुरुआत है।


4

Vala और जिनी दोनों भाषाएँ हैं जो C. haxe में संकलित हैं C ++ में संकलित हैं, लेकिन मुझे यकीन नहीं है कि आप क्या चाहते हैं।


2
क्या आप इस बात पर थोड़ा विस्तार करेंगे कि इनमें से प्रत्येक संसाधन में क्या है और आप पूछे गए प्रश्न का उत्तर देने के लिए इनकी सिफारिश क्यों करते हैं? स्टैक एक्सचेंज में "लिंक-ओनली उत्तर" का बहुत स्वागत नहीं है
gnat

4

ओमेक्लेट, मूल कोड के लिए बायटेकोड पर संकलित किया जा सकता है, सीधे व्याख्या की जा सकती है या सी को संकलित कर सकता है


1
क्या आप इस बारे में और अधिक व्याख्या करना चाहेंगे कि यह पूछे गए प्रश्न का उत्तर देने के लिए क्या करता है और इसकी अनुशंसा क्यों करता है? "लिंक-ओनली आंसर" का स्टैक एक्सचेंज में बहुत स्वागत नहीं है
gnat

3
मैं यह देखने में विफल हूं कि मेरा उत्तर "लिंक-ओनली उत्तर" कैसे है। वास्तव में, मैं लिंक को हटा सकता था और यह अभी भी एक मान्य उत्तर होगा। प्रश्न "क्या कोई भाषा है जो X करता है" और मेरा उत्तर है "भाषा Y X करता है"। यह टिप्पणी बिलिक के उत्तर पर भी लागू होती है।
बरजक

3
  • Bjarne Stroustrop का मूल C ++ कंपाइलर, "cfront", C ++ को C में संकलित करता है, जो तब ऑब्जेक्ट कोड के उत्पादन के लिए वैकल्पिक रूप से C कंपाइलर को चलाएगा। C ++ आपको "गैर-सैद्धांतिक" के रूप में है जैसा कि आप :-)
  • यूनिक्स "याक" और जीएनयू "बाइसन" संकलक-संकलक अपनी इनपुट भाषाओं का सी। में अनुवाद करते हैं। कई, कई परिष्कृत सिस्टम उनके साथ लिखे गए हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.