सेवा के बारे में
अनुवादितमैं एक Racket और Scheme डेवलपर हूँ और Lisp की उस दुनिया के कोने में काम करता हूँ जहाँ सामान्य बैकएंड इंजीनियर लगभग कभी नहीं जाते: मैं भाषाएँ बनाता हूँ, केवल तैयार की गई भाषाओं का उपयोग नहीं करता। जब एक कार्य आपके सामान्य उद्देश्य के कोड को उलट देता है, तो ईमानदार उत्तर अक्सर इस तरह सुनाई देता है — आपको उस कार्य के लिए एक छोटी डोमेन-विशिष्ट भाषा की आवश्यकता है। यही मैं डिज़ाइन और कार्यान्वित करता हूँ। मैं सावधानीपूर्वक, अच्छी तरह से संरचित कार्यात्मक कार्यक्रम लिखता हूँ, स्वच्छ मैक्रोज़, कस्टम रीडर्स और मूल्यांकनकर्ता, साथ ही वह टूलिंग जो एक कच्चे विचार को एक कार्यशील इंटरप्रेटर में बदल देती है जिसके बारे में आप सोच सकते हैं।
मेरा काम आमतौर पर तीन रूपों में विभाजित होता है। पहला DSLs और मैक्रो सिस्टम हैं: मैं Racket की भाषा-उन्मुख क्षमताओं का उपयोग करता हूँ ताकि आपकी टीम को एक विशिष्ट कार्य के लिए नोटेशन मिल सके, जिसमें सिंटैक्स जांच, स्पष्ट त्रुटि संदेश और एक रीडर हो जो स्वदेशी लगे, न कि जोड़ा गया। दूसरा इंटरप्रेटर्स और छोटे कंपाइलर्स हैं: पार्सर्स, मूल्यांकनकर्ता, ट्री वॉकर और कॉन्फ़िगरेशन प्रारूपों, नियम इंजनों, स्क्रिप्टिंग परतों और प्रयोगात्मक भाषाओं के लिए बाइटकोड बैकएंड। तीसरा शैक्षिक और अनुसंधान उपकरण हैं: मैं उन कार्यक्रमों की परवाह करता हूँ जो अपने आप को समझाते हैं, इसलिए मैं विज़ुअलाइज़र, चरण-दर-चरण डिबगर्स, व्यायाम चेकर्स और इंटरैक्टिव सामग्री बनाता हूँ जो कार्यात्मक प्रोग्रामिंग और इसके अंतर्निहित लैम्ब्डा कलकुलस को सीखने वालों के लिए होती हैं।
चूंकि मैं Lisp परिवार से बड़ा हुआ हूँ न कि मुख्यधारा के बैकएंड या Clojure कार्य से, सहीता और न्यूनतम कोर मेरे लिए विशेष रूप से महत्वपूर्ण हैं। मैं अनुबंधों, प्रॉपर्टी-आधारित परीक्षणों और छोटे संयोज्य कार्यों, दस्तावेज़ व्याकरण और अपरिवर्तनीयताओं पर निर्भर करता हूँ ताकि अगला व्यक्ति आपके पार्सर को अलग न करना पड़े। यदि आपके पास एक आधा कार्यशील प्रोटोटाइप है, कोई मैक्रोज़ का ढेर जिसे कोई छूने की हिम्मत नहीं करता, या एक छोटे भाषा के लिए एक नया विचार है — मैं इसे स्केच से विश्वसनीय परिणाम तक ले जाऊँगा।
— Racket में डोमेन भाषाएँ और स्वच्छ मैक्रोज़
— Scheme में इंटरप्रेटर्स, मूल्यांकनकर्ता और छोटे कंपाइलर्स
— पार्सर्स, कस्टम रीडर्स और नियम इंजन
— शैक्षिक उपकरण: चरण-दर-चरण डिबगर्स, विज़ुअलाइज़र, व्यायाम जांचना
— कार्यात्मक पुनर्गठन, अनुबंध और प्रॉपर्टी-आधारित परीक्षण
— पुराने Scheme और Lisp कोड का माइग्रेशन और आधुनिकीकरण
मेरा काम आमतौर पर तीन रूपों में विभाजित होता है। पहला DSLs और मैक्रो सिस्टम हैं: मैं Racket की भाषा-उन्मुख क्षमताओं का उपयोग करता हूँ ताकि आपकी टीम को एक विशिष्ट कार्य के लिए नोटेशन मिल सके, जिसमें सिंटैक्स जांच, स्पष्ट त्रुटि संदेश और एक रीडर हो जो स्वदेशी लगे, न कि जोड़ा गया। दूसरा इंटरप्रेटर्स और छोटे कंपाइलर्स हैं: पार्सर्स, मूल्यांकनकर्ता, ट्री वॉकर और कॉन्फ़िगरेशन प्रारूपों, नियम इंजनों, स्क्रिप्टिंग परतों और प्रयोगात्मक भाषाओं के लिए बाइटकोड बैकएंड। तीसरा शैक्षिक और अनुसंधान उपकरण हैं: मैं उन कार्यक्रमों की परवाह करता हूँ जो अपने आप को समझाते हैं, इसलिए मैं विज़ुअलाइज़र, चरण-दर-चरण डिबगर्स, व्यायाम चेकर्स और इंटरैक्टिव सामग्री बनाता हूँ जो कार्यात्मक प्रोग्रामिंग और इसके अंतर्निहित लैम्ब्डा कलकुलस को सीखने वालों के लिए होती हैं।
चूंकि मैं Lisp परिवार से बड़ा हुआ हूँ न कि मुख्यधारा के बैकएंड या Clojure कार्य से, सहीता और न्यूनतम कोर मेरे लिए विशेष रूप से महत्वपूर्ण हैं। मैं अनुबंधों, प्रॉपर्टी-आधारित परीक्षणों और छोटे संयोज्य कार्यों, दस्तावेज़ व्याकरण और अपरिवर्तनीयताओं पर निर्भर करता हूँ ताकि अगला व्यक्ति आपके पार्सर को अलग न करना पड़े। यदि आपके पास एक आधा कार्यशील प्रोटोटाइप है, कोई मैक्रोज़ का ढेर जिसे कोई छूने की हिम्मत नहीं करता, या एक छोटे भाषा के लिए एक नया विचार है — मैं इसे स्केच से विश्वसनीय परिणाम तक ले जाऊँगा।
— Racket में डोमेन भाषाएँ और स्वच्छ मैक्रोज़
— Scheme में इंटरप्रेटर्स, मूल्यांकनकर्ता और छोटे कंपाइलर्स
— पार्सर्स, कस्टम रीडर्स और नियम इंजन
— शैक्षिक उपकरण: चरण-दर-चरण डिबगर्स, विज़ुअलाइज़र, व्यायाम जांचना
— कार्यात्मक पुनर्गठन, अनुबंध और प्रॉपर्टी-आधारित परीक्षण
— पुराने Scheme और Lisp कोड का माइग्रेशन और आधुनिकीकरण