2010-02-10 12 views
25

हाल ही में जब तक एक्सएसएलटी का मेरा ज्ञान मेरी सरल, सीधी आवश्यकताओं के लिए पर्याप्त था। लेकिन एक और उन्नत आवश्यकता ने मुझे संदर्भ सामग्री में भेजा जब "बस कोशिश कर रहा था" काम नहीं किया। शुरुआत में यह वास्तव में मजेदार था। मैंने शुरुआत में समय सीमा के मध्य में एक्सएसएलटी सीखा और 20/20 हिंडसाइट में "काम" स्पष्ट रूप से "समझदारी" से अधिक महत्वपूर्ण था।सीखना एक्सएसएलटी और "असली" कार्यात्मक प्रोग्रामिंग में टिप्स और जाल?

Michael Kay's book के पेज 33 पर पढ़ने के लिए मुझे आश्चर्य हुआ कि एक्सएसएलटी की योजनाएं इसकी जड़ें हैं। विकिपीडिया कहता है,

योजना प्रोग्रामिंग भाषा लिस्प के दो मुख्य बोलियों में से एक है।

शायद मुझे लगता है कि मैंने किया था की तुलना में कार्यात्मक प्रोग्रामिंग के बारे में मुझे पता है (या जल्द ही पता चलेगा)। Is XSLT a functional programming language? जैसी पोस्टों के लिए एसओ खोजना और इसके कामकाजी लिंक के बाद दिखाएं कि एक्सएसटीएल एक कार्यात्मक भाषा है या नहीं, कई राय हैं। Which functional programming language should I choose as first functional programming language? पोस्ट से मुझे पहले एफ # सीखने की सलाह मिली क्योंकि मैं .NET से आया हूं और मुझे जल्दी से उपयोगी कार्यक्रम मिलना पसंद है।

मेरा पहला सवाल यह है कि अगर कोई एक्सएसएलटी 2.0 बहुत अच्छी तरह से जानता है, तो एफ #, लिस्प या हास्केल जैसे "वास्तविक" कार्यात्मक प्रोग्रामिंग भाषा में से कौन सा व्यक्ति पहले से ही एफ #, लिस्प या हास्केल सीखने से पहले जानता है? चर्चा के प्रयोजनों के लिए एक व्यक्ति को लगता है कि "एक्सएसएलटी 2.0 बहुत अच्छी तरह से जानता है" पहली बार जब वह XSLT Cookbook पढ़ती है तो बहुत कम नई अवधारणाओं को सीखती है। इसके बजाय अपरिचित जानकारी पर उनकी प्रतिक्रिया है, "निश्चित रूप से ऐसा करने का एक अच्छा तरीका है। मुझे इसके बारे में सोचना चाहिए था!"

दूसरा सवाल यह है कि एक्सएसएलटी 2.0/XPATH 2.0 के कुछ हिस्सों में मुझे यह सुनिश्चित करना चाहिए कि मैं सीखने के लिए बहुत अच्छी तरह से समझता हूं F #/Lisp/Haskell आसान है?

तीसरा, एक्सएसएलटी के कुछ हिस्सों हैं जिन्हें सबसे अच्छा अनदेखा किया जाता है यदि कोई अंततः एफ #/लिस्प/हास्केल/आदि सीखने की योजना बना रहा है? यही है, क्या एक्सएसएलटी के पास गोटो, अल्टर और त्रुटि सुधार के समान है जो "वास्तविक" कार्यात्मक प्रोग्रामिंग भाषाओं में उपयुक्त नहीं हैं?

संक्षिप्त उत्तर ठीक हैं क्योंकि एक कार्यात्मक प्रोग्रामिंग भाषा सीखना मेरे लिए एक अनुसूचित भविष्य परियोजना है।

पीएस प्रतिष्ठा की कमी के लिए कई हाइपरलिंक्स हटा दिए गए। Drat! ;-)

+3

आपका स्वागत है! मुझे कहना होगा कि आपका पहला सवाल बहुत अच्छा है :) – Jonas

+1

अब तक आप अपने प्रश्न में लिंक भी डाल सकते हैं। – Tomalak

+0

मैं इसके लिए बहुत अच्छी प्रतिक्रिया की उम्मीद कर रहा था .. यहां तक ​​कि एक भी जवाब नहीं .. !!?? मैं निश्चित रूप से परेशान हूं .. –

उत्तर

4

मेरी सलाह XSLT पर बहुत अधिक दुबला नहीं होना चाहिए जब आप अपना पहले दूसरी कार्यात्मक भाषा सीख रहे हों।

  • अब एक महान कई अच्छे "ऑन-रैंप" विभिन्न कार्यात्मक भाषाओं कि पिछले ज्ञान और अनुभव अनुमान नहीं है करने के लिए कर रहे हैं: यहाँ मैं क्या सोच रहा हूँ है। यदि आपका एक्सएसएलटी अनुभव आपको ऑन-रैंप को तेजी से यात्रा करने में सक्षम बनाता है, तो हम सभी आश्चर्यचकित और प्रसन्न हैं, लेकिन यह आवश्यक नहीं है।

  • कार्यात्मक प्रोग्रामर वाक्यविन्यास के बारे में बहुत कुछ परवाह करते हैं। एक्सएसएलटी प्रोग्रामर को एक्सएमएल सिंटैक्स का उपयोग करने के लिए मजबूर किया जाता है। इसलिए समुदाय के मानदंडों और दोनों समुदायों के बीच मूल्यों में एक बड़ी टोपी है।

  • सामान्य कार्यात्मक भाषा न केवल कार्यात्मक है, लेकिन इसमें कुछ खास चीज है, जिसकी परवाह है, जो भाषा को अपना अनूठा स्वाद देता है। कुछ उदाहरण (वर्णानुक्रम में):

    • एरलांग विश्वसनीयता और समांतर/वितरित गणना के बारे में बहुत परवाह करता है।
    • एफ # .NET ढांचे और प्रकार प्रणाली के साथ अच्छी तरह से interoperating के बारे में परवाह करता है।
    • हास्केल शुद्धता, सेक्सी प्रकारों, और सुंदर वाक्यविन्यास के बारे में एक धारणा की परवाह करता है
    • योजना विस्तारशीलता और सुंदर वाक्यविन्यास की पूरी तरह से अलग धारणा के बारे में परवाह करती है।
    • एक्सएसएलटी पैटर्न मिलान और एक्सएमएल प्रसंस्करण के बारे में परवाह करता है।

वहाँ ऐसा और कहीं और जानने के लिए एक कार्यात्मक भाषा चुनने के बारे में पर सामग्री के बहुत सारे है, यदि आप चाहें, तो आप what one polyglot functional programmer thinks देख सकते हैं। एक भाषा चुनें — कोई भी भाषा — और वापस बैठें, काम पर आएं, और उड़ान का आनंद लें!

2

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

मुझे कल्पना है कि आपको विपरीत में एक ही प्रभाव मिलेगा।

(मैंने यह भी पाया कि एक्सएसएलटी, अन्य प्रोग्रामिंग-भाषाओं-इन-एक्सएमएल की तरह, एक एक्सएमएल फ़ाइल को संसाधित करने का एक दर्दनाक तरीका है, और यह सिर्फ पायथन में एक स्क्रिप्ट लिखना आसान, तेज़ और अधिक लचीला था)।

+0

ऐसा लगता है कि आपने XSLT को बहुत अच्छी तरह से सीखा नहीं है। –

5

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

Wikipedia मुझे बैक अप लेता है इस पर:

एक भाषा के रूप में, XSLT कार्यात्मक भाषाओं से पाठ आधारित पैटर्न मिलान भाषाओं SNOBOL और awk तरह से प्रभावित है, और। इसका सबसे प्रत्यक्ष पूर्ववर्ती आईएसओ डीएसएसएसएल था, एक भाषा जिसने पूर्ण एसजीएमएल के लिए एक ही फ़ंक्शन किया था जो एक्सएसएलटी एक्सएमएल के लिए करता है। विकसित कई मानकों की समिति ने एक्सएसएलटी ने पहले जेम्स क्लार्क समेत डीएसएसएसएल पर काम किया था। एक्सएसएलटी को ट्यूरिंग-पूर्ण टेम्पलेट प्रोसेसर भी माना जा सकता है।

दूसरे शब्दों में, यह कार्यात्मक भाषाओं से बहुत कुछ उधार लेता है, लेकिन यह भी awk और SGML जैसी भाषाओं templating से उधार लेता है। तो हाँ, यह एक कार्यात्मक भाषा है, उसी तरह से पूरी तरह से स्पष्ट तरीके से C++ templates are a functional language। लेकिन एक्सएसएलटी से स्कीम या हास्केल सीखने से कोई आसानी से मैप की गई लाइन नहीं है।

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

लेकिन इनमें से कोई भी आपको हतोत्साहित करने के लिए नहीं है। हर तरह से, एक कार्यात्मक भाषा सीखो। वे प्रोग्रामिंग के लिए आपके दृष्टिकोण को उन तरीकों से बदल देंगे जिन्हें आप कभी संदेह नहीं करेंगे।

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