2010-11-21 9 views
5

क्यों अधिकांश स्क्रिप्टिंग भाषाओं को टाइप किया गया है? उदाहरण के लिएअधिकतर स्क्रिप्टिंग भाषाओं को कम से कम टाइप क्यों किया जाता है?

जावास्क्रिप्ट, पायथन, आदि?

+0

मुझे लगता है कि यदि आप एक समुदाय विकी थे तो आपको बेहतर जवाब मिलेंगे (लेकिन मुझे नहीं लगता कि अब आप इसे पोस्ट कर सकते हैं; आप प्रतिनिधि> 100 के साथ कर सकते हैं)। यह वास्तव में एक सही जवाब नहीं है। –

उत्तर

1

मुझे आपका प्रश्न बिल्कुल समझ में नहीं आता है। PHP के अलावा, वीबीस्क्रिप्ट, COMMAND.COM और यूनिक्स शैल मैं वास्तव में किसी भी ढीले टाइप की गई स्क्रिप्टिंग भाषाओं के बारे में नहीं सोच सकता।

पटकथा भाषाओं जो शिथिल टाइप नहीं कर रहे हैं, इसके कुछ उदाहरण अजगर, रूबी, Mondrian, JavaFXScript, PowerShell, हास्केल, स्काला, elisp, योजना, AutoLISP, Io, Ioke, Seph, ग्रूवी, Fantom, बू, कोबरा, छल कर रहे हैं , स्लेट, स्मॉलटॉक, पर्ल, और नरकिप;

+0

पायथन और पर्लो को कम से कम टाइप नहीं किया गया है? – nbrogi

12

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

वहाँ कमजोर कैसे कड़ाई से विभिन्न प्रकार के बीच भिन्न है के बारे में बनाम मजबूत टाइपिंग टाइपिंग है (अर्थात, अगर 1 + "2" पैदावार 3 या कोई त्रुटि)।

और वहाँ है गतिशील बनाम स्थिर टाइपिंग है, जो के बारे में जब प्रकार की जानकारी निर्धारित किया जाता है - जबकि या चलाने से पहले।

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

लेकिन फिर, गतिशील languges क्या हैं? मैं उन्हें परिभाषित करना चाहता हूं कि उनके साथ कैसे काम करता है।

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

इस प्रकार यदि आप लिखना

foo = greatFunction(42) 
foo.run() 
एक पटकथा भाषा में

, तो आप बस यह मान लेंगे कि कुछ greatFunction है कि वहाँ एक नंबर किसी वस्तु आप कर सकते हैं run रिटर्न होगा कि लेने। आप इसे किसी भी तरह से कंपाइलर के लिए साबित नहीं करते हैं - कोई पूर्व निर्धारित प्रकार नहीं, IRunnable ...। यह स्वचालित रूप से डायनामिक टाइपिंग के डोमेन में आपको प्राप्त करता है।

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

square list = map (\x -> x * x) list 

हास्केल में लें। हास्केल पहले से जुड़े सभी प्रकारों को आंकड़े बताता है। हमारे पास list संख्याओं की एक सूची है, map कुछ फ़ंक्शन जो किसी भी सूची के किसी भी तत्व और square पर किसी अन्य फ़ंक्शन को लागू करता है जो संख्याओं की एक और सूची से संख्याओं की एक सूची उत्पन्न करता है।

फिर भी, संकलक साबित कर सकता है कि सबकुछ पहले से ही काम करता है - संचालन कुछ भी का समर्थन करता है औपचारिक रूप से निर्दिष्ट है। इसलिए, मैं कभी भी हास्केल को एक स्क्रिप्टिंग भाषा नहीं कहूंगा, हालांकि यह अभिव्यक्ति के समान स्तर तक पहुंच सकता है (यदि अधिक नहीं!)।


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

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