38

तो एक नया वेब प्रोग्रामर (पृष्ठभूमि सी, सी ++, और पायथन में सबसे अधिक है) बिना किसी जावास्क्रिप्ट अनुभव (या मैंने जो अनुभव किया है उसके आधार पर इसका अनुभव करने की इच्छा) के रूप में, मैं कॉफीस्क्रिप्ट पर कुछ पूर्ववर्ती शोध कर रहा हूं और वास्तव में मुझे पसंद है पसंद है। मैंने देखा कि एक छोटी सी छोटी सी बात यह थी कि कॉफीस्क्रिप्ट कॉफीस्क्रिप्ट में लिखा गया था, जो कि अच्छा है ... लेकिन मुझे वास्तव में समझ में नहीं आता कि यह कैसे संभव है। दुर्भाग्य से मैंने अपने पिछले वरिष्ठ स्तर के कंप्यूटर साइंस कोर्स के दौरान कंपाइलर्स की बजाय नेटवर्क सुरक्षा लेने का विकल्प चुना।कॉफीस्क्रिप्ट में कॉफीस्क्रिप्ट कैसे लिखा जा सकता है?

मैंने लोगों को उस भाषा के मौजूदा कंपाइलरों का उपयोग करने के लिए लक्षित भाषा में भाषाएं लिखने के बारे में सुना है, लेकिन मैं इस बारे में कोई जानकारी नहीं खो सकता कि यह कैसे काम कर सकता है क्योंकि यह पहला कार्यान्वयन है।

मेरा अनुमान है एक एम्बेडेड खोल स्क्रिप्ट है कि एक आत्म निर्देशात्मक के निर्माण के लिए प्रारंभिक ढांचे के कुछ नीचे बिछाने की देखभाल कर सकते हैं (इस व्यवहार इस शब्द का ठीक से वर्णन करता है?) भाषा है?

+4

http: //en.wikipedia।संगठन/विकी/बूटस्ट्रैपिंग_ (कंपाइलर्स) –

+3

चेतावनी दी जानी चाहिए कि आपको कॉफीस्क्रिप्ट में कोड करने के लिए जावास्क्रिप्ट को अच्छी तरह से जानने की आवश्यकता है, क्योंकि सभी रनटाइम त्रुटियां संकलित स्रोत को इंगित करती हैं। –

+0

पुन शब्दावली: आप कह सकते हैं कि कॉफीस्क्रिप्ट कंपाइलर ** मूल रूबी कार्यान्वयन से ** बूटस्ट्रैप ** था। आप यह भी कह सकते हैं कि कॉफीस्क्रिप्ट भाषा ** स्वयं-होस्टिंग ** है। – Quuxplusone

उत्तर

46

यह कुछ भी नया नहीं है। सी कंपाइलर सी Python has been written in Python में लिखा गया है।

अधिक सुविधाओं के साथ, अपने आप के एक नए संस्करण को संकलित करने के लिए Language X के लिए एक कंपाइलर का उपयोग करना संभव है। इसे bootstrapping कहा जाता है।

BTW, अगर आप uni में से चूक गए होने के बावजूद, compilers के बारे में अधिक जानने के लिए, चाहते हैं Learning to write a compiler — विशेष रूप से पर एक नजर है , the Dragon Book

+0

मैंने बूटस्ट्रैप शब्द को पहले सुना है, लेकिन इसका कोई स्पष्ट स्पष्ट अर्थ नहीं था। यह वास्तव में दिलचस्प है, महान लिंक के लिए धन्यवाद, मैं बूटस्ट्रैपिंग पर कुछ पढ़ूंगा। मैंने ड्रैगन पुस्तक के बारे में सुना है और साथ ही "प्रोग्रामिंग पुस्तकें पढ़ना चाहिए" एसओ पर पढ़ना, मुझे इसे – Hortinstein

+1

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

42

मैट का जवाब उत्कृष्ट है।

CoffeeScript संकलक के मूल संस्करण रूबी में लिखा गया था, लेकिन इसमें 21 फरवरी, v0.5.0 के लिए CoffeeScript के लिए परिवर्तित किया गया था, 2010

एक के रूप में: मुझे बस कुछ CoffeeScript विशेष जानकारी के साथ विस्तृत करते हैं व्यावहारिक पदार्थ, बूटस्ट्रैपड कंपाइलर कभी-कभी बदलती भाषा के साथ चीजों को मुश्किल बना सकता है, क्योंकि संकलक को उन परिवर्तनों को समायोजित करने के लिए फिर से लिखा जाना चाहिए। आधिकारिक डॉक्स से इस पैरा आप शामिल चुनौतियों में से कुछ विचार देता है:

git checkout lib && bin/cake build:full जब आप मूल भाषा पर काम कर रहे चलाने के लिए एक अच्छी पकड़ है। यह lib निर्देशिका को रीफ्रेश करेगा (यदि आपने कुछ तोड़ दिया है), अपना बदला गया कंपाइलर बनाएं, इसका उपयोग स्वयं को पुनर्निर्माण (एक अच्छी सैनिटी टेस्ट) के लिए करें और फिर सभी परीक्षण चलाएं। यदि वे पास होते हैं, तो एक अच्छा मौका है कि आपने एक सफल परिवर्तन किया है।

lib निर्देशिका CoffeeScript संकलक की संकलित जावास्क्रिप्ट बूटस्ट्रैपिंग प्रक्रिया में एक उपयोगी मध्यस्थ प्रदान (है कि मिल गया?), शामिल हैं। चूंकि कंपाइलर का कॉफीस्क्रिप्ट कोड कभी भी सीधे चलाता है, जिससे भाषा में ब्रेकिंग परिवर्तन करना आसान हो जाता है।

+3

इच्छा है कि मैं इसे और अधिक बढ़ा सकता हूं, भाषा विनिर्देश देने के लिए धन्यवाद। – Hortinstein

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