2008-12-14 12 views
9

जावास्क्रिप्ट: गुड पार्ट्स एक अच्छी किताब है। अक्सर मैं खुद को एक भाषा डिजाइनर के नजरिए से निम्नलिखित की तरह मार्ग पढ़ने लगता है:प्रोग्रामिंग भाषा डिजाइन पर अच्छे संसाधन?

undefined और NaN स्थिरांक नहीं हैं। वे वैश्विक चर हैं, और आप उनके मूल्य बदल सकते हैं। यह संभव नहीं होना चाहिए, और फिर भी यह है। ऐसा मत करो

Takeaways:

  1. मेरी जावास्क्रिप्ट कोड में undefined का मूल्य न बदलें।
  2. किसी भाषा को डिज़ाइन करते समय, इसके undefined के बराबर बना दें।

एक और अधिक सूक्ष्म उदाहरण "for in प्रोटोटाइप गुणों पर गणना नहीं करना चाहिए"।

मुझे एक विशेष भाषा के संदर्भ के बाहर भाषा डिजाइन के इन मुद्दों के बारे में वार्ता में एक पुस्तक चाहिए।

यदि आप "सही" ओओ भाषा तैयार करने की कोशिश कर रहे थे, तो आप मार्गदर्शन के लिए कौन सी किताबें पढ़ेंगे?

उत्तर

7

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

http://lambda-the-ultimate.org/node/3

http://lambda-the-ultimate.org/papers

http://lambda-the-ultimate.org/node/492

6

आप जावा, रूबी, ऑब्जेक्टिव सी, और अन्य के समान स्थान से एक पृष्ठ ले सकते हैं और Design Priciples Behind Smalltalk देखें। इनमें से अधिकांश विशेष रूप से स्मॉलटाक के बारे में कुछ भी नहीं, वस्तुओं के बीच संचार पर आधारभूत सामग्री है।

भाषा के डिजाइन पर जहां तक ​​वास्तव में विचारशील किताबें, मुझे लगता है कि The Design and Evolution of C++ निश्चित रूप से एक उल्लेख के लायक है। मैं संकोच करता हूं क्योंकि आप कहते हैं कि आप "सही" ओओ भाषा चाहते हैं, और सी ++ सही से बहुत दूर है। हालांकि, आप अभी भी इससे बहुत कुछ सीख सकते हैं।

आपके द्वारा उठाए गए अंक, हालांकि, ऐसा लगता है कि उन्हें Principle of Least Astonishment या Rule of Least Surprise भाषा आंतरिक के डिजाइन के साथ अधिक करना है।

1

आप   Perl6

Perl6 Synopsis

आप पढ़ सकते हैं Synopsis 6 का डिजाइन दस्तावेजों की जाँच कर सकता है, आप कहां मिलेगा टी कि इसके अलावा ऑपरेटर नाम है:

  • infix:<+>
  • infix:«+»
  • infix:<<+>>
  • infix:{'+'}

आप अपने खुद के ऑपरेटरों बना सकते हैं जिसका मतलब है:

sub postfix:<!> ($n) { [*] 1..$n } 
0

व्यापक रूप से उपयोग की जाने वाली भाषाओं में लागू डिजाइन सिद्धांतों को समझाते हुए बहुत अच्छी किताबें हैं, लेकिन यदि आप वास्तव में डिजाइन सिद्धांतों को "समझना" चाहते हैं तो आपको गहरी खुदाई करनी चाहिए। मैं निश्चित रूप से "Design concepts in programming languages" फ्रैंकलिन टर्बाक द्वारा अनुशंसा करता हूं। यह पुस्तक व्यवस्थित रूप से इसकी गणितीय नींव के आधार पर प्रोग्रामिंग भाषा अवधारणाओं का पता लगाने की कोशिश करती है।

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