सीखने के अनुभव के लिए एक नई स्क्रिप्टिंग भाषा बनाना? [बन्द है]


13

क्या अपने स्वयं के व्यक्तिगत सीखने के अनुभव के लिए एक स्क्रिप्टिंग भाषा बनाना है?

मेरे पूछने का कारण यह है कि बहुत सारी प्रोग्रामिंग भाषाएं पहले से ही उपलब्ध हैं, मुझे पता है कि मेरा कभी भी एक अच्छा सीखने का अनुभव प्रदान करने के अलावा कोई वास्तविक उपयोग नहीं होगा। हालाँकि, मैं एक पटकथा भाषा को सीखने के अनुभव के रूप में बनाने की कोशिश कर रही कमियों को देखता हूं: इसमें बहुत समय और प्रयास लगेगा जिसमें मैं कुछ और कर सकता हूं "उत्पादक।"

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


3
एक अन्य विकल्प मौजूदा भाषा को लागू करना है। मैं धीरे धीरे एक ECMAScript बोली बुलाया विकसित मशेट पर अधिक एक साल से भी और बहुत कुछ सीखा है।
ChaosPandion

दिलचस्प है, मैंने ऐसा नहीं सोचा था।
इवान

2
1) इसे जानें ... www1.idc.ac.il/tecs 2) और यह ... mitpress.mit.edu/sicp
जो इंटरनेट

आप मौजूदा प्रोजेक्ट्स v8, स्पाइडरमोंकी या पायथन में योगदान करने पर भी विचार कर सकते हैं
treecoder

3
IMHO, नई प्रोग्रामिंग भाषाओं को सीखने का सबसे अच्छा तरीका उनके लिए कंपाइलरों को लागू करना है (या कम से कम मूल भाषाओं के महत्वपूर्ण सबसेट के लिए)। तो, हाँ, यह वास्तव में सीखने का एक उपयोगी अनुभव है।
तर्क

जवाबों:


15

अपने कौशल और अपने पोर्टफोलियो का निर्माण

मेरी राय में यह सीखने का एक बहुत अच्छा अनुभव होगा:

  • आपको हुड के नीचे देखने के लिए मजबूर करता है ,
  • आपको यह जानने के लिए मार्गदर्शन करें कि चीजें आंतरिक रूप से कैसे की जाती हैं ,
  • आपको अन्य कार्यान्वयन को देखने और तुलना करने के लिए प्रोत्साहित करते हैं ,
  • अपने एल्गोरिथ्म कौशल को गति तक बनाए रखें ,
  • आप कोड बनाते हैं (और उम्मीद है कि दस्तावेज़ ) बहुत कुछ है, जो एक बुरा भी नहीं है,
  • आपको एक महत्वपूर्ण प्रोजेक्ट और कोडबेस दें जिसे आप ऑनलाइन देख सकते हैं, सभी के लिए:
    • व्यक्तिगत आनंद और संतुष्टि ,
    • संभावित नियोक्ताओं के लिए अपने कौशल का प्रदर्शन
    • एक ही क्षेत्र में रुचि रखने वाले साथियों के साथ संवाद और आदान - प्रदान ,
    • संभावित रूप से इसे कुछ और बढ़ने दें ...

इसलिए मैं इसे उत्पादन, उपयोगी और समग्र रूप से "इसके लायक" के रूप में देखता हूं।

शुरू हो जाओ

अब आप अलग-अलग तरीकों का इस्तेमाल कर सकते हैं, इस बात पर निर्भर करता है कि आप इस पर खर्च करने की योजना को कितना समय देते हैं ...:

  • यदि आपके पास एक सीमित समय-सीमा है, तो मैं कहूंगा कि मैं इसमें डुबकी लगाऊंगा और बात को कोड करूंगा।
  • यदि आपके पास एक व्यापक समय सीमा है, तो आप वास्तव में लंबे समय से घुमावदार तरीके से जा सकते हैं और चश्मा, ट्यूटोरियल, मैनुअल आदि लिख सकते हैं ...

छोटा शुरू करो

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

मुझे बहुत शैक्षिक लगता है।

आगे बढ़ो (और हमारे साथ लिंक साझा करें)।

छोटा, जैसा कि "लघु" में

लेकिन फिर, मैं आपको छोटे से शुरू करने की सलाह दूंगा । अगर लोग कहते हैं कि यह बहुत कोड और समय लेने जा रहा है तो डरो मत। जरूरी नहीं, अगर आप किसी जटिल भाषा का लक्ष्य नहीं रखते हैं। एलन Kay और अन्य Xerox PARC इंजीनियरों ने कथित तौर पर के एक प्रारंभिक संस्करण विकसित स्मालटाक है कि कागज की एक शीट पर फिट , terseness के लिए एक उद्देश्य (पढ़ने के रूप में Xerox PARC: बिजली की डीलर के इतिहास के बारे में जानकारी के लिए PARC )। एक अच्छा, शैक्षिक और पर्याप्त दृष्टिकोण का प्रयास करता है (जब तक यह पठनीयता का त्याग नहीं करता है)।

छोटा, जैसा कि "विवश"

आपको एक उन्नत प्रकार की प्रणाली, उच्च-क्रम के फंकिटन्स और 42 अलग-अलग प्रतिमानों के मिश्रण का तुरंत समर्थन करने की आवश्यकता नहीं है। यह सिर्फ एक गणितीय अभिव्यक्ति भाषा हो सकती है।

अन्य ज्ञान का पुन: उपयोग (और पीक पर)

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

और जाहिर है, आप बड़े पैमाने पर संकलक निर्माण पर पढ़ना चाह सकते हैं ।


अब, यदि हम आपके प्रश्न को संशोधित करते हैं तो "क्या यह आपके समय का सबसे अधिक उत्पादक उपयोग होगा?" यह एक पूरी तरह से अलग मुद्दा बन जाता है :)

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


2
+1 के लिए "फिर आप सफल होते हैं, इसमें वह काम करता है लेकिन फिर भी बेकार है"
इवान

1
@ इवान: धन्यवाद :) यह शायद सीखने के अनुभव का एक और अच्छा हिस्सा है: आत्मनिरीक्षण, विनम्रता और दृढ़ता!
हेयरस्टाइल

1
मैं हेयर स्टाइल से सहमत हूं। जेनरल में प्रोग्रामिंग के बारे में आप जो सीखेंगे, वह भाषा कैसे काम करेगी, चीजों को लागू करने के विभिन्न तरीके इसके लायक होंगे। हाँ, आप शायद केवल वही होंगे जो कभी इसे देखते हैं लेकिन यह आपकी छोटी सी पालतू परियोजना बन जाएगी जो आप खुद को बेहतर बनाने के लिए काम करते हैं।
RJay75

3

मैं कहता हूं आगे बढ़ो।

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


2

एक (खिलौना लेकिन पूर्ण) प्रोग्रामिंग भाषा को डिजाइन करना और कार्यान्वित करना वास्तव में मेरे ऊपरी डिवीजन सीएस कक्षाओं में से एक (संकलक वर्ग या प्रोग्रामिंग भाषा सर्वेक्षण में से एक में (आवश्यक)?) अभ्यास में से एक है, मैं भूल जाता हूं जो ...)

इसलिए कम से कम एक सीएस प्रोफेसर ने ऐसा सोचा।

आप उन सभी "quirks" के लिए बहुत बेहतर सराहना करेंगे जो अन्य भाषाओं में हैं।


1

ऐसा करने में थोड़ा समय लगेगा। क्या आप इसे बनाए रखने की योजना बनाते हैं?

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

मैं मान रहा हूं कि आपकी वित्तीय स्थिति अनंत नहीं है, इसलिए मैं कहूंगा कि यह समय के लायक नहीं है। आप अपना समय अन्य उपयोगी परियोजनाओं पर खर्च कर सकते हैं जो आपको पैसा कमा सकती हैं। ध्यान रखें कि यह वह उत्तर नहीं हो सकता है जिसकी आप तलाश कर रहे हैं, लेकिन तार्किक दृष्टिकोण से, मैं कहूंगा कि आपकी प्रोग्रामिंग भाषा इस समय सही परियोजना नहीं हो सकती है। यदि आप एक सेवानिवृत्त कंप्यूटर वैज्ञानिक थे, तो मैं इस पर विचार करूंगा और उद्योग में योगदान देने की आवश्यकता महसूस करूंगा। ऐसा लगता है कि आपके पास प्रोग्रामिंग के लिए एक मजबूत जुनून है, और यह बहुत अच्छा है। लेकिन, एक पूरी नई स्क्रिप्टिंग भाषा का निर्माण? यह एक बहुत लंबी परियोजना होगी। उस समय में आप कई एप्लिकेशन बना सकते थे, जिन्हें आप अपने पोर्टफोलियो में टॉस कर सकते थे। मुझे लगता है कि सवाल यह है:


2
मुझे नहीं पता ... प्रेम का एक बड़ा श्रम उन बीस थ्रो एप्स को फेंक देता है जो आपको एक-एक सौ रुपये का बना सकते हैं।
ChaosPandion

डोमेन विशिष्ट भाषाओं को लागू करने से वास्तव में व्यावहारिक परियोजना के विकास में काफी तेजी आ सकती है। तो यह आर्थिक रूप से और साथ ही सौंदर्यवादी रूप से काफी फायदेमंद हो सकता है।
एसके-तर्क

1
कुछ लोग चीजों का निर्माण करते हैं क्योंकि वे चीजें बनाना पसंद करते हैं ... इसलिए नहीं कि निर्माण के उक्त कृत्य से उन्हें कुछ नकदी मिल जाएगी।
जेटी

@Jetti। हाँ मैं जानता हूँ। यही कारण है कि मैंने कहा कि यह उत्तर आपकी तलाश का नहीं हो सकता है, और मैं आपको प्रोग्रामिंग के लिए एक जुनून बता सकता हूं। हालांकि मैं आपके इनपुट की सराहना करता हूं, क्योंकि मैं किसी के इंतजार में था कि आप इस जवाब के बारे में क्या कहते हैं।
रयान

@Ryan - माफ करना, मैं उस हिस्से को याद किया।
जेटी

-2

आपको मेरी सलाह है

पहिया को सुदृढ़ न करें

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

आपको खुद से पूछना चाहिए:

  • आपको स्क्रिप्ट बनाने की आवश्यकता क्यों है? क्या मौजूदा स्क्रिप्ट काफी अच्छी नहीं है?
  • क्या आप इसे बनाए रखेंगे और प्रकाशित करेंगे, और आप आश्वस्त हैं कि आपकी स्क्रिप्ट का उपयोग अन्य प्रोग्रामर द्वारा किया जाएगा? यदि आपका जवाब नहीं है, तो यह मत करो।

मैं समझता हूं कि आप अधिक सीखने का अनुभव चाहते हैं और इस कारण से व्यक्तिगत रूप से मुझे लगता है कि फ्रेमवर्क बनाने से आपको अधिक सीखने का अनुभव मिलेगा और एक स्क्रिप्ट बनाने की तुलना में आप / आपकी टीम / समुदाय इसे बाद में पुन: उपयोग कर सकते हैं।

और यह xkcd कॉमिक थोड़ा प्रासंगिक है, बस "मानकों" को "भाषा" में भी बदलें:

यहाँ छवि विवरण दर्ज करें


-1, उन्होंने स्पष्ट रूप से कहा कि यह व्यक्तिगत सीखने के अनुभव के लिए होगा।
ग्रैंडमास्टरबी

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

2
हां, आप सही हैं - कोई भी नया प्रोग्रामर कभी भी अपना पहला "हैलो, वर्ल्ड" नहीं लिखेगा। सब के बाद, यह सिर्फ एक मौजूदा एक डाउनलोड करने के लिए बहुत बेहतर होगा। और इस संदर्भ में " रूपरेखा " क्या है ?
एसके-तर्क

5
@ रूडी, कंपाइलर या दुभाषिया लागू करना एक ऐसा तुच्छ और बुनियादी कौशल है जो "हैलो, वर्ल्ड!" के काफी करीब है। यही कारण है कि किसी भी सभ्य सीएस पाठ्यक्रम में यह अनिवार्य है। और, तुच्छ होने के बावजूद, यह कार्य कई उपयोगी कौशल सिखाता है, लगभग किसी भी क्षेत्र में लागू होता है। कि DSLs को लागू अत्यंत महत्वपूर्ण है उल्लेख की जरूरत नहीं (आप बुरा - कि हाइबरनेट thingy आप उल्लेख किया है है एक डीएसएल, और वहाँ एम्बेडेड दुभाषिए और उस में compilers, जिनमें से कुछ काफी खराब कार्यान्वित कर रहे हैं की एक संख्या है)।
एसके-तर्क

3
@ एसके-तर्क - आप यहां मेरे आत्मसम्मान की मदद नहीं कर रहे हैं ... :)
ChaosPandion
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.