विशेष रूप से सरणी प्रोग्रामिंग भाषाओं , जे और एपीएल पर मेरे दो सेंट लगाते हुए ।
के / कोना, क्यू और नियाल भी इस श्रेणी में आते हैं, लेकिन आम तौर पर उनके लाभ और आलोचनाएं समान हैं। विवेक का उपयोग करें। मैं नीचे J उदाहरणों का उपयोग करूंगा, ज्यादातर क्योंकि ये ASCII हैं और इस प्रकार लिखना आसान है - एपीएल वर्णों की तुलना में सिंगल बाइट्स के रूप में याद रखें, ताकि गोल्फ के लिए पसंद के रूप में भाषा के साथ आपकी समस्या न हो।
- गणित की समस्याये
- संख्या पहेली हल करना
- संख्यात्मक तरीके से प्रदर्शन करना
- मुश्किल 2 डी सरणी समस्याओं
ये दो बहुत अच्छी गणित और डेटा-हेरफेर भाषाएं हैं, क्योंकि वे उच्च स्तर के आसपास सरणियों को टॉस करते हैं, और बहुत सारे लूपिंग निहित रूप से किए जाते हैं , कहकर, उदाहरण के लिए 3, 4 और 5 ( 10 + 3 4 5
) में से प्रत्येक में दस जोड़ते हैं या प्रत्येक को जोड़ते हैं। एक सरणी की पंक्ति ( +/"1 arr
- लूपिंग में है "1
)।
- अभाज्य संख्याओं के साथ समस्या
विशेष रूप से प्राइम नंबर की समस्याओं के साथ, जे में तेज और शॉर्ट बिलिन प्राइमेटिव हैं, जैसा कि एपीएल की कुछ बोलियां हैं। (संपादित करें: मैं Nars2000 के बारे में सोच रहा हूं, जो कि भाग बोली है और पूरी तरह से अलग कार्यान्वयन है। एपीएल के पास अपराधों के लिए कोई बिल्ड नहीं है।) एन-वें प्राइम ( p:
), नहीं। ( _1&p:
,), फैक्टरिंग ( q:
), जीसीडी और एलसीएम ( +.
और *.
), और इतने पर, वहाँ बहुत कुछ है। हालांकि, व्यवहार में, सवाल अक्सर निर्दिष्ट करेगा कि आपको अपने स्वयं के प्रधान कार्यान्वयन को पकाना होगा, इसलिए ये बहुत अधिक उपयोग नहीं करते हैं। अभी भी आप की जरूरत है प्रधानमंत्री सामान प्राप्त करने के स्वच्छ और फैंसी तरीके हैं, यह सिर्फ एक छोटे से कट-एंड-पेस्ट बन जाता है।
- स्ट्रिंग प्रसंस्करण
- अर्रे प्रसंस्करण
ऐरे और स्ट्रिंग प्रसंस्करण एक मिश्रित बैग का एक सा है: अगर यह ऐसा कुछ है जो एपीएल / जे में अच्छा है या इसके लिए एक आदिम या सामान्य मुहावरा है, तो यह लगभग तुच्छ है; अगर यह कुछ ऐसा है जो बहुत अनुक्रमिक है और बहुत समानांतर नहीं है, तो आपके पास एक बुरा समय होने वाला है। बीच में कुछ भी हवा में है, हालांकि आमतौर पर वे अनुकूल प्रतिक्रिया देंगे।
- समस्याएँ जिन्हें I / O समाधान की आवश्यकता है, या तो कंसोल या फ़ाइल
- समस्याएँ जो आपको अपने समाधान को फ़ंक्शन परिभाषा के रूप में लिखने की आवश्यकता होती हैं
IO अजीब है। APL में एकल-वर्ण इनपुट अभिव्यक्ति है, लेकिन J के साथ आपको एक संख्या में पढ़ने के लिए कम से कम 8 खर्च करना होगा ".1!:1]1
:। आउटपुट थोड़ी कम क्रिया है, लेकिन आप अभी भी व्यवहार में 6 या 7 अक्षरों को बर्बाद कर रहे हैं। J विशेष रूप से वास्तव में इसे बहुत पसंद करता है यदि आप इनपुट में किसी फ़ंक्शन के लिए तर्क के रूप में ले सकते हैं, बजाय स्वयं OO के साथ घूमने के लिए।
व्यवहार में, जे और एपीएल के साथ, आमतौर पर समाधान एक फ़ंक्शन के रूप में लिखा जाता है जिसे आप कंसोल पर लागू करते हैं। एपीएल के साथ, आप मूल रूप से सिर्फ अपने तर्कों के लिए चर नामों में डाल सकते हैं और जिस अभिव्यक्ति के साथ आप घुंघराले ब्रेस में काम कर रहे थे उसे लपेटें और इसे एक दिन कहें।
लेकिन जे के साथ, स्पष्ट रूप से कार्यों को परिभाषित करने के लिए एक ओवरहेड का एक सा हिस्सा है - 3 :'...'
और आपको अंदर किसी भी तार से बचना होगा - इसलिए आमतौर पर जो कुछ किया जाता है उसे टैसिट प्रोग्रामिंग कहा जाता है: आप फ़ंक्शन स्तर पर प्रोग्राम करते हैं, एक तरह से प्राइमेटिव्स का संयोजन करते हैं। हास्केल के विपरीत नहीं। यह एक आशीर्वाद और अभिशाप दोनों हो सकता है, क्योंकि आपको अपने तर्कों का हवाला देते हुए अधिक से अधिक पात्रों को खर्च करने की आवश्यकता नहीं है, लेकिन यह कोष्ठक में डूबना और दसियों वर्णों को खोना आसान है, जो आपके अन्यथा छोटे और चतुर समाधान को हैक करने की कोशिश कर रहे हैं कुछ ऐसा है जो काम करता है।
- समस्याएँ जिन्हें पार्सिंग की आवश्यकता होती है
- कम्प्यूटेशनल ज्यामिति
मेरे पास इन विशिष्ट समस्याओं को गोल्फ के साथ अनुभव नहीं है, लेकिन मैं यह कहूंगा: अंत में, सरणी प्रोग्रामिंग भाषाएं बहुत सारे डेटा को उसी तरह से पाइप करने और बदलने में बहुत अच्छी हैं। यदि आप समस्या को संख्या फेरबदल में एक अभ्यास में बदल सकते हैं, तो आप इसे एपीएल / जे समस्या बना सकते हैं, कोई पसीना नहीं।
कहा कि, सब कुछ एक एपीएल / जे समस्या नहीं है। गोल्फस्क्रिप्ट के विपरीत, एपीएल और जे सिर्फ गोल्फ के लिए अच्छा हुआ, उनके अन्य लाभों के साथ;)