2012-09-17 38 views
18

अगर मैं रोबोट बनाने जा रहा हूं, तो आप मेरी कौन सी भाषा की सिफारिश करते हैं? हमारे विश्वविद्यालय में हम कई भाषाओं के बीच चयन कर सकते हैं। अधिकांश छात्र केवल एडी चुन रहे हैं क्योंकि हमारा शिक्षक इसका उपयोग करता है।क्या अन्य भाषाओं की बजाय एडा सीखना लायक है [सी ++, सी #]?

कुछ शोध के बाद मुझे पता चला कि एडा पुराना है। आपके क्या विचार हैं? इसे सीखने के लायक है?

+12

'पुराने' के बारे में - एडीए के नवीनतम संशोधन एडीए 2012 – NWS

+1

क्यों "के बजाय" क्या है? क्यों नहीं "साथ"? – rightfold

+0

सी ++ पुराना नहीं है? ठीक है, ठीक है, यह एडीए से छोटा है। तीन साल तक। : डी –

उत्तर

24

हां। मेरी राय में बहुत ज्यादा।

  • सामान्य प्रणाली:

    एडीए दो अंक है कि अक्सर अन्य प्रोग्रामिंग भाषाओं में ध्यान नहीं दिया जाता में बहुत अच्छा है संकुल, काम करता है, और प्रक्रियाओं सभी सामान्य हो सकता है। यह DRY [Don't Repeat Yourself] सिद्धांत को शामिल करने के लिए विशेष रूप से अच्छी तरह से काम करता है। हां, आप जेनरिक पर ओवरबोर्ड पर जा सकते हैं, लेकिन मैंने जो चीज देखी है (अन्य भाषा) परियोजनाओं में यह था कि कट-एंड-पेस्ट प्रोग्रामिंग अधिक आम है। [और यह कोड के उस स्थान पर एक बग की आवश्यकता होने पर बस कई बिंदुओं की विफलता प्रस्तुत करता है।]

  • मूल मल्टीटास्किंग। एक भाषा-स्तरीय कार्य करने की सुविधा के बारे में महान चीजों में से एक यह है कि मल्टीथ्रेडिंग को 'परवाह नहीं' महसूस नहीं होता है और यह एक अनावश्यक विस्तार नहीं है बल्कि भाषा में एकीकृत है।

यह कहा गया कि, एडा सीखने/उपयोग करने के अन्य अच्छे कारण हैं। एक पिक्य कंपाइलर है, इतना चुनौतीपूर्ण होने से यह आपको उन तरीकों से सोचने के लिए मजबूर करता है जो स्वाभाविक रूप से प्रोग्रामिंग त्रुटियों को कम करते हैं। (and और or पर उसी सशर्त में निषेध की तरह।)

अन्य उपप्रकारों की अवधारणा है; उपप्रकार ओओपी में ऑब्जेक्ट्स के विपरीत होते हैं, जो आपके द्वारा आगे की जाने वाली आगे की डेरविशन को ब्रांच करने की बजाय, आप प्रकार (यह स्वीकार्य मान) को सीमित करते हैं, जितना अधिक आप बेस प्रकार से दूर हो जाते हैं। {उचित सेट के संदर्भ में इसके बारे में सोचें; इंटीजर आपका आधार प्रकार है, प्राकृतिक आपके गैर-ऋणात्मक इंटीजर हैं, और सकारात्मक आपके सकारात्मक-पूर्णांक हैं ...और एडा 2012 के साथ, आप अपने उपप्रकारों पर दिलचस्प बहिष्कार कर सकते हैं, कहें प्राइम्स जो पॉजिटिव्स के उपप्रकार हैं (उस अंतिम बिंदु पर थोड़ा अस्पष्ट होने के लिए खेद है; मैं अभी भी 2012 की सामग्री सीख रहा हूं)।}

एडा के साथ 2012, आप अपने उपप्रोग्राम पर पूर्व और बाद की स्थितियां भी कर सकते हैं; यह अकेले आपके पुस्तकालयों को और अधिक स्थिर बना सकता है। (नल-छोड़कर कर सकते हैं संकेत दिए गए।)

1

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

+0

ठीक है, हम कुछ उन्नत रोबोट बनाने जा रहे हैं जो सेंसर, मोटर और अन्य इलेक्ट्रॉनिक घटकों का उपयोग करते हैं। उदाहरण के लिए सी # से शुरू करना बेहतर नहीं है और थोड़ा सा एडी सीखने और अन्य भाषाओं से थोड़ा सीखने के बजाय इसे पूरी तरह से सीखना बेहतर नहीं है? –

+1

@ एलेक्स 9 0 - आप एक या दो छोटी स्कूल परियोजनाओं से पूरी तरह से कोई भी भाषा नहीं सीखेंगे। अन्य भाषाओं पर परिप्रेक्ष्य के लिए –

19

पीटर Norvig की सलाह यहाँ शायद प्रासंगिक है:

जब उनसे पूछा गया "क्या ऑपरेटिंग सिस्टम का उपयोग करना चाहिए, विंडोज, यूनिक्स, या मैक?", मेरा उत्तर आम तौर पर है: "। उपयोग जो कुछ भी अपने मित्रों का उपयोग करें" आपके दोस्तों से सीखने से प्राप्त लाभ ओएस के बीच या प्रोग्रामिंग भाषाओं के बीच किसी भी आंतरिक अंतर को ऑफ़सेट करेगा।

Teach Yourself Programming in Ten Years

पूरे निबंध एक अच्छा पढ़ा है।

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

+5

+ 1! – NWS

4

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

उम्र का सवाल है - ओह, चलो - सी भी पुराना है। भाषा की उम्र के बारे में इतना महत्वपूर्ण क्या है? आप क्या एडीए 83 पहली माध्यम बनाया गया है पर देखो ले जाना चाहिए इससे पहले कि आप भी उम्र मुद्दा होने के बारे में बात कर सकते हैं (संकेत: मुख्यधारा भाषाओं में 90 के दशक के उत्तरार्ध में एडीए 83 की सुविधा सेट तक पहुँचने शुरू कर दिया, और कई विशेषताएं [विशेष रूप से उप-प्रकारों] अभी भी नहीं कर रहे हैं मुख्यधारा में)। नवीनतम एडा मानक के अलावा 2012 से है - यदि आप उस बूढ़े को बुला सकते हैं तो मुझे नहीं पता कि "नया" क्या है।

8

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

एडीए सॉफ्टवेयर इंजीनियरिंग के लिए है। जैसा कि अंधेरेखान ने कहा, यह "सर्वश्रेष्ठ के लिए हैक और आशा" भाषा नहीं है।

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

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

चूंकि आप विशेष रूप से रोबोटिक्स के बारे में पूछ रहे हैं, इसलिए जॉन डब्ल्यू मैककॉर्मिक, फ्रैंक सिंघॉफ़ और जेरोम ह्यूग्स द्वारा "समानांतर, एम्बेडेड और रीयल-टाइम एप्लिकेशन एडी के साथ बिल्डिंग" हो सकती है। यह एक बहुत अच्छा पढ़ा है।

http://www.cambridge.org/gb/knowledge/isbn/item5659578/?site_locale=en_GB

3

सी ++ वास्तव में एक स्प्रिंग चिकन आपको पता नहीं है। मुझे लगता है कि यह एडा की तुलना में एक दशक पुराना है।

मामलों को और खराब करने के लिए, सी ++ और सी # दोनों सी से अपनी भाषा का मूल प्राप्त करते हैं, जो वास्तव में एक दशक पुराना एडा से अधिक है।

सी compilers के निर्माण आसान (नहीं प्रोग्रामर की नौकरी) बनाने के लिए वापस दिनों में जब 16KB रैम की एक बहुत कुछ था और हार्ड ड्राइव औद्योगिक एयर कंडीशनर के रूप में बड़े थे डिजाइन किया गया था। सी ++ मूल रूप से OO साथ के रूप में अच्छे पुराने देर 60 C के साथ आरंभ को बोल्ट की सुविधाओं, और सी # अनिवार्य रूप से इसे और अधिक जावा की तरह बनाने के लिए सी ++ के लिए माइक्रोसॉफ्ट के तोड़ मरोड़ है। अपने मूल में, C# और सी ++ वास्तव में एडीए से अधिक पुराने हैं।

वहाँ हिप नई भाषाएँ का एक बहुत वहाँ बाहर जानने के लिए कर रहे हैं (और कुछ बिंदु पर आप उन्हें सीखना चाहिए)। हालांकि, सी ++ और सी # वे नहीं हैं।

2

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

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

जब एक नया रोबोटिक्स परियोजना आरंभ करने, मैं एक व्यावहारिक दृष्टिकोण रखना। मैं मौजूदा उपकरण, पुस्तकालयों और उपयोगिताओं को देखता हूं और अपनी जरूरतों के अनुरूप सबसे अच्छा विकल्प चुनता हूं। फिर मैं जो भी भाषा करता हूं उसका उपयोग करता हूं। और 9 5% समय सी ++ या पायथन है।

+5

इस मामले में, आपका स्वयं का "व्यावहारिक" तर्क * एडा के लिए * तर्क देगा, क्योंकि शिक्षक और अधिकांश अन्य छात्र इसका उपयोग कर रहे हैं। –