2011-03-07 13 views
7

हम अपने सॉफ्टवेयर विकास वर्ग में Agent-Oriented-Programming सीख रहे हैं, और मेरा प्रोफेसर इसका एक बड़ा समर्थक है, जिसने अपने पूरे जीवन के साथ काम किया है।एजेंट ओरिएंटेड डिजाइन?

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

क्या कोई मुझे इस बारे में एक विचार दे सकता है कि वास्तविक विकास में सॉफ्टवेयर एजेंटों को कैसे देखा जाता है और शैक्षणिक अभ्यास के बाहर क्या फायदे/नुकसान हैं?

+2

के बाद से अपने प्रोफेसर इस अपने पूरे जीवन पर काम कर रहा है, तो आप सब कुछ विभाजित करने के लिए सकारात्मक वह 10 से विषय पर कहते है –

+0

अकादमिक और कुछ वर्षों (या दशकों) के बाद तकनीक को विकसित करने के लिए तकनीक के "असली दुनिया" पर पहुंचने के लिए तकनीक के लिए यह बहुत आम है। आपको यह भी ध्यान में रखना चाहिए कि कोई चांदी की बुलेट नहीं है: मुझे यकीन है कि एजेंट-ओरिएंटेड-प्रोग्रामिंग के कई अच्छे उपयोग हैं, लेकिन यदि आपके लक्ष्य तक पहुंचने का प्रयास करते समय लाभ से अधिक परेशानी होती है, तो शायद यह सही टूल नहीं है । – Lundberg

+1

दुर्भाग्यवश एजेंट उन्मुख डिजाइन [बोनेट्स] में बहुत सफल है (http://en.wikipedia.org/wiki/Botnet) – k3b

उत्तर

10

एआई में "एजेंट" शब्द का उपयोग (जो सबसे अधिक संभावना है कि आप इसका जिक्र कर रहे हैं, यह सबसे आम अकादमिक संदर्भ है) वास्तव में "सॉफ़्टवेयर प्रोग्राम जो उपयोगकर्ता की तरफ से कार्य करता है" का पर्याय है। एक एजेंट देखा जाता है और अधिक आकर्षक है क्योंकि यह कुछ हद तक व्यक्तित्व शब्द है, जो उपयोगकर्ता के लिए प्रॉक्सी है; यह भी, उच्च आदेश कार्यक्षमता (एजेंटों के लिए योजना, एजेंटों के लिए सीखना, स्वायत्त एजेंट इत्यादि) से जुड़ा हुआ है।

http://en.wikipedia.org/wiki/Software_agent

यह देखते हुए कि, इस शब्द "एजेंट" उद्देश्य और सॉफ्टवेयर के प्रकार, यह कैसे नहीं प्रोग्राम किया जाता के बारे में अधिक है: विकिपीडिया पर इस शब्द का उद्गम के बारे में अधिक। ओओपी को तकनीकी रूप से डिजाइन/कार्यान्वित करने के तरीके के साथ और अधिक करना है।

तो ओओपी सिद्धांतों का उपयोग करके अपने एजेंटों को डिजाइन करने में कुछ भी गलत नहीं है। दोनों विषय पारस्परिक रूप से अनन्य नहीं हैं।

इसके अलावा, ध्यान रखें (जैसा कि उपर्युक्त टिप्पणियों में से कुछ टिप्पणियां हैं, और मैं इससे सहमत हूं): अकादमिक में "एजेंट" का उपयोग अधिक रोमांटिक शब्द है; अधिकांश सॉफ्टवेयर कुछ उपयोगकर्ता (ओं) की ओर से कार्य करता है, और इसलिए कई चीजों में एजेंट कार्यक्षमता है। यह दिन के अंत में सिर्फ सॉफ्टवेयर है, और यदि आपने हमारे सामूहिक शब्दावली से "एजेंट" शब्द हटा दिया है, तो आप किसी भी शुद्ध सॉफ्टवेयर डिज़ाइन/कार्यान्वयन की क्षमता को दंडित नहीं करेंगे। आप विशेष रूप से एजेंट उन्मुख प्रोग्रामिंग के बारे में मंचों में यह एक ही बहस के तत्वों, जैसे देखेंगे:

http://ootips.org/agent-orientation.html

+1

एजेंटों (जैसे आपके थर्मोस्टेट) और बुद्धिमान एजेंटों के बीच एक अंतर है। अगर हम बुद्धिमान एजेंटों के बारे में बात कर रहे हैं तो एजेंट को पर्यावरण, सक्रिय (लक्ष्य उन्मुख) और सामाजिक (अन्य एजेंटों के साथ बातचीत करने के बारे में पता) के अनुकूल रूप से प्रतिक्रियाशील होना चाहिए। एक बुद्धिमान एजेंट सहयोग नहीं करना चाहता है अगर वह अपने लक्ष्यों को प्राप्त नहीं कर सकता है। जैसा कि वे कहते हैं: ऑब्जेक्ट्स मुफ्त में काम करते हैं लेकिन एजेंट पैसे के लिए काम करते हैं। – avatar

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