यह बहुत पसंद है गणित सीखना आपके विश्लेषणात्मक कौशल में सुधार करेगा और लैटिन / क्लासिक साहित्य सीखने से आपके लेखन कौशल में सुधार होगा।
जिन लोगों ने उन भाषाओं को डिज़ाइन किया है, उन्होंने इस बारे में कठिन सोचा है कि प्रोग्राम लिखने का क्या मतलब है। और वे भाषाएँ उन शोधों के परिणाम हैं।
उस ने कहा, जावा सीखने से आप एक बेहतर प्रोग्रामर भी बनेंगे। और सीखना सी। वास्तविक लाभ विभिन्न दर्शन के साथ भाषा सीखने से आता है। फिर जिस तरह से एक कार्यक्रम लिखा जाना चाहिए, उसके बारे में आपकी अपनी राय हो सकती है।
संपादित करें
मुझे लगता है कि यह जवाब उन लोगों के लिए उपयोगी नहीं है, जिन्होंने अभी तक हैस्केल और / या लिस्प नहीं सीखा है। यहाँ कुछ उदाहरण दिए गए हैं जो आगे बता रहे हैं कि मेरा क्या मतलब है
लिस्प
लिस्प का मानना है कि सिंटैक्स न्यूनतम होना चाहिए, और यह कि सब कुछ एक सूची या एक आदिम होना चाहिए (लिस्प का अर्थ सूची प्रसंस्करण के लिए है)। यहां तक कि कार्यक्रम मुख्य रूप से अन्य सूचियों और प्रतीकों वाली सूची है। लिस्प आपको सूची के रूप में कार्यक्रमों में हेरफेर करने और मक्खी पर नए कार्यक्रमों को उत्पन्न करने की अनुमति देता है। इसलिए पूरे code is data and data is code
आदर्श वाक्य।
प्रत्यक्ष परिणाम यह है कि लिस्प भाषाएं आपको किसी भी इंटरफ़ेस को परिभाषित करने की अनुमति देती हैं जो आप चाहते हैं। एक अच्छा उदाहरण है, जो एक क्लोजर वेब फ्रेमवर्क है। यहाँ एक रूटिंग फ़ंक्शन कैसा दिखता है
(defroutes app-routes
(GET "/" [] view/page)
(GET "/api" [] (wrap-aleph-handler api/socket-handler))
(route/resources "/static")
(route/not-found "page not found"))
एक और अच्छा उदाहरण हिचकी templating ढांचे है:
(html [:ul
(for [x (range 1 4)]
[:li x])])
जैसा कि आप देख सकते हैं, परिणाम मूंछों की तरह डीएसएल के रूप में के समान है, लेकिन आपको भाषा जैसी सुविधाओं का उपयोग करने की अनुमति देता है (for [x (range 1 4)] block)
। यहां तक कि अच्छे, आपके पास अपने कोड को सार और संरचना करने के लिए सभी उपकरण हैं।
अन्य भाषाओं में, वाक्य रचना अधिक जटिल है। आप सूचियों के एक समूह के रूप में जावा प्रोग्राम नहीं पढ़ सकते हैं। लेकिन लिस्प का उपयोग करके, आपको एक बेहतर विचार मिलता है कि एक आदर्श इंटरफ़ेस कैसा दिखना चाहिए, और आपके कोड में क्या डेटा से दूर हो सकता है। यह आपकी पसंदीदा भाषा को एक बड़ी डेटा संरचना के रूप में देखने और इसके शब्दार्थ को बेहतर ढंग से समझने में भी आपकी मदद करता है।
हास्केल
हास्केल मजबूत स्थिर टाइपिंग और शुद्धता में विश्वास करता है। शुद्ध कार्य गणितीय कार्यों की तरह होते हैं: उन्हें मूल्यों के एक सेट पर परिभाषित किया जाता है, और उन्हें दूसरे सेट पर मैप किया जाता है। फ़ंक्शन के साइड इफेक्ट्स नहीं हैं, और मान अपरिवर्तनीय हैं। पवित्रता दिलचस्प है क्योंकि यह एक बहु-प्रतिमान भाषा नहीं हो सकती है। एक भाषा या तो शुद्ध होती है या नहीं।
एक परिणाम यह है कि आप जब चाहें तब IO क्रिया नहीं कर सकते (हैकर्स का मानना है कि यह एक अच्छी बात है)। IO क्रियाओं को लेन-देन के रूप में परिभाषित किया जाता है, जो स्वयं शुद्ध मान हैं। main
एक haskell कार्यक्रम के मूल्य एक आईओ लेनदेन निष्पादित जब आप प्रोग्राम चलाया जाता है।
आपको अपने कार्यक्रम में डेटा प्रवाह के साथ स्पष्ट रूप से निपटना होगा। आप एक वैश्विक चर में सामान लिखने और पढ़ने के द्वारा दो घटक संवाद नहीं कर सकते। आपको मूल्यों का निर्माण और पारित करना होगा।
जिमी होफा द्वारा उल्लिखित एक अन्य विशेषता समृद्ध प्रकार की प्रणाली है। हालांकि अन्य भाषाओं में स्थिर टाइपिंग है, हैस्केल में आपके पास कुछ चीजें हो सकती हैं:
length :: [a] -> Int
(एक int की एक सूची से कार्य)
map :: (a -> b) -> [a] -> [b]
(फंक्शन जो a to b
ट्रांसफॉर्मेशन और ए की सूची लेता है , और बी की सूची लौटाता है)
अच्छी बात यह है कि मुझे यह समझाने की जरूरत नहीं है कि वे कार्य वास्तव में क्या करते हैं: आप पहले से ही उनके व्यवहार को समझते हैं। क्या अधिक है, उन हस्ताक्षरों के साथ कार्य वास्तव में कुछ भी नहीं कर सकते हैं लेकिन एक सूची की लंबाई की गणना करते हैं और एक सूची पर एक परिवर्तन का नक्शा बनाते हैं।
अन्य टाइप की जाने वाली भाषाओं में, वर्ग पदानुक्रम संयुक्त रूप से उत्परिवर्तन के साथ मिलकर उन प्रकारों से दुःस्वप्न का सामना करते हैं। आपको कोवरियन और कंट्रोवर्सी जैसी चीजों को समझना होगा, जो भाषा के नजरिए (यानी सरल, शक्तिशाली और सुरक्षित) से सही होना असंभव है।
या तो आप सुरक्षित रास्ता अपनाएं (जैसे कि scala) और वास्तव में जटिल भाषा के साथ समाप्त हो जाएं, या आप सरल रास्ता अपनाएं और ऐसा कुछ प्राप्त करें जो या तो सीमित हो (google go generics limited to list and Maps) या असुरक्षित (dart generics) जो हमेशा होती हैं covariant)।
हैस्केल का उपयोग करके, आप मुख्य रूप से शुद्धता के लाभों के बारे में सीखते हैं, और शुद्ध कोड कैसे लिखें।