क्या आपको C # और F # का एक साथ उपयोग करना चाहिए


16

मुझे पता है कि आप एक ही प्रोजेक्ट में C # और F # का एक साथ उपयोग कर सकते हैं लेकिन मुझे यकीन नहीं है कि ऐसा करने के लिए एक अच्छा विचार है।

यह मुझे लगता है कि दो बहुत अलग कोडिंग शैलियों (कार्यात्मक बनाम ओओपी) को मिलाकर डिजाइन में सामंजस्य की कमी हो सकती है। क्या ये सही है?


1
आप उन्हें एक ही परियोजना में कैसे उपयोग कर सकते हैं? क्या आप एक ही समाधान का मतलब है?
ब्रायन बोएचर

2
प्रोजेक्ट की Microsoft परिभाषा नहीं, बल्कि सामान्य परिभाषा
टॉम स्क्वायर्स

एक स्पष्ट दोष यह है कि यदि परियोजना पर काम का कम से कम हिस्सा आवश्यक है कि डेवलपर सी # और एफ # में दोनों वर्गों के साथ बातचीत करता है (यहां तक ​​कि सिर्फ उन्हें पढ़ने के लिए), तो उन हिस्सों को दोनों भाषाओं में एक डेवलपर जानकार की आवश्यकता होगी, और वहाँ हैं उनमें से केवल एक भाषा में जानकार लोगों की तुलना में कम, और इस प्रकार वे कठिन हैं, संभावित रूप से अधिक महंगे हैं और उनमें से कम विविधता है (हालांकि इस विशिष्ट मामले में यह संभावना है कि अधिकांश F # डेवलपर्स सी के साथ कम से कम कुछ परिचित हैं) ।
gbr

पूर्ण रूप से। उदाहरण के लिए धीरे-धीरे एफ # को विरासत सी # समाधान में पेश करना एक वैध परिदृश्य है।
कोला

जवाबों:


23

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

यदि आपकी परियोजना का एक हिस्सा है जो एक कार्यात्मक भाषा का उपयोग करके सबसे अच्छा कोडित किया जाएगा तो यह F # में इसे कोड करने के लिए समझ में आता है। इसी तरह सी # के लिए।

व्यर्थ क्या होगा (सबसे अच्छा) इसके लिए भाषाओं का मिश्रण होगा।


0

यह मुझे लगता है कि दो बहुत अलग कोडिंग शैलियों (कार्यात्मक बनाम ऊ) को मिलाकर डिजाइन में सामंजस्य की कमी हो सकती है। क्या वो सही है?

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


0

हां मैं क्रिसफ से सहमत हूं । साथ ही C # वर्तमान में पहले से ही F # सिद्धांतों को शामिल करता है, जैसे कि अनाम प्रकार:

var unitanon = new[]
{
    new { Field1="new car", Field2 = 1},
    new { Field1="old car", Field2 = 20} 
};

उन्होंने कहा, मुझे व्यक्तिगत रूप से लगता है कि यह कोड पठनीयता में एक कदम पीछे है, हालांकि यह बहुत सुविधाजनक है।


2
अनाम प्रकार वास्तव में F # सिद्धांत नहीं हैं। हो सकता है आप अनुमान (क्या टाइप करने के लिए संदर्भित करने के लिए इसका मतलब यह वर कीवर्ड सी # में करता है) जिससे संकलक अनुमान जो आप लिखना चाहते बात कर रहे हैं। यह F # भर में उपयोग किया जाता है।
मोंगस पोंग

1
मैं आसान async क्षमताओं के लिए F # का उपयोग करूंगा। हालाँकि, TPL ने इसे C # से ही करना काफी आसान बना दिया है। यदि आप स्क्रिप्टिंग के लिए किसी भाषा को एम्बेड करना चाहते हैं, तो मैं निश्चित रूप से उस के पार्सिंग के लिए F # का उपयोग करूंगा।
जेटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.